欢迎访问OceanBase官网获取更多信息:https://www.oceanbase.com/
本节主要介绍如何通过在集群中减少 Zone 的方式进行集群的缩容。
注意事项
本方案仅适用于 Zone 数量大于 3 的场景,如果集群中 Zone 的数量小于 3,则会出现不满足多数派的情况,数据一致性无法得到保证。
注意
减少 Zone 会影响所有使用到待删除 Zone 的租户,需要统一规划,以免影响其它租户。本节以减少 Zone 仅影响一个租户的场景为例提供操作指导。
前提条件
在进行集群的缩容操作前,需要确认集群中资源对当前负载有较多冗余,通过 OCP 查看集群中资源的详细信息的相关操作请参见 查看集群的资源信息。
通过 SQL 语句从集群中减少 Zone
您可以通过 SQL 语句向集群中减少 Zone 的方式来进行集群的缩容,该缩容方式通常用于将集群中租户的 5 副本降为 3 副本的场景。从集群中减少 Zone,同时减少集群中的机器台数。
假设当前集群中2共包含 5 个可用区 z1、z2、z3、z4、z5,且 5 个 Zone 都属于同一个 Region,每个 Zone 内 1 台 OBServer。集群中有一个普通租户 tenant1,租户信息如下 CREATE TENANT IF NOT EXISTS tenant1 CHARSET='utf8mb4', ZONE_LIST=('z1','z2','z3','z4','z5'), PRIMARY_ZONE='z1,z2,z4', RESOURCE_POOL_LIST=('pool1');当前副本分布情况 locality='F@z1,F@z2,F@z3,F@z4,F@z5', resource_pool_list=('pool1'),资源池的资源分布情况 CREATE RESOURCE POOL pool1 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3','z4', 'z5')。
根据业务需要,需要将租户 tenant1 由 5 副本降为 3 副本,即租户的 Locality 变成 locality='F@z1,F@z2,F@z3。本节以仅租户 tenant1 使用了 z4、z5 其他租户未使用 z4、z5 为例,提供缩容的操作指导。
使用
root用户登录数据库的sys租户。(可选)如果租户使用了 z4 或 z5 作为 Primary Zone,则需要修改该租户的 Primary Zone。
obclient> ALTER TENANT tenant_name PRIMARY_ZONE='z1,z2,z3';通过修改租户
tenant1的 Locality 来删除副本。根据 Locality 的变更规则,每次只能删除一个 Zone 内的 Locality,Locality 的变更规则相关信息请参见 Locality 概述。
obclient>ALTER TENANT tenant1 LOCALITY='F@z1,F@z2,F@z3,F@z4'; obclient>ALTER TENANT tenant1 LOCALITY='F@z1,F@z2,F@z3';执行以下命令,停止
z4、z5。obclient> ALTER SYSTEM STOP ZONE z4; obclient> ALTER SYSTEM STOP ZONE z5;缩小资源池
pool1的 ZONE_LIST 范围,从而将z4、z5从资源池中移出。obclient> ALTER RESOURCE POOL pool1 ZONE_LIST=('z1','z2','z3');执行以下语句,从集群中删除 Zone 中的 OBServer。
注意
本示例中,仅租户
tenant1使用了z4、z5上的资源,在实际场景中,如果有其他租户也使用了z4或z5,则还需要对这些租户也执行一遍前面的步骤(步骤 2 ~ 步骤 5)。obclient> ALTER SYSTEM DELETE SERVER 'xxx.xxx.x.xx4:2882'; obclient> ALTER SYSTEM DELETE SERVER 'xxx.xxx.x.xx5:2882';删除后,可以执行以下语句,确认列表中已查询不到这些 OBServer,则表示删除成功。
obclient> SELECT * FROM oceanbase.DBA_OB_SERVERS;确认 OBServer 删除成功后,执行以下语句,从集群中删除 Zone。
obclient> ALTER SYSTEM DELETE ZONE z4; obclient> ALTER SYSTEM DELETE ZONE z5;删除后,可以执行以下语句,确认列表中已查询不到这些 Zone,则表示删除成功。
obclient> SELECT * FROM oceanbase.DBA_OB_ZONES;结束后,本次缩容完成。
欢迎访问OceanBase官网获取更多信息:https://www.oceanbase.com/




