首批通过分布式安全可靠测评,为关键业务系统打造
通过调整 Primary Zone 实现租户扩缩容
更新时间:2024-12-31 15:32:44
租户扩容和缩容本质上是提高和降低租户的服务能力,包括计算能力和存储容量。可以通过纵向提高或降低单节点的服务能力达成,也可以通过横向提高或降低单节点的服务能力达成。本文介绍如何通过修改 Primary Zone,从而横向增加或减少计算节点,达到租户总服务能力的提升或降低,实现租户的扩容或缩容。
前提条件
调整 Primary Zone 前,需要开启租户内的负载均衡。租户内的负载均衡由租户级配置项 enable_rebalance 控制。该配置项在系统租户下用于控制是否进行租户间的负载均衡;用户租户下用于控制是否进行租户内均衡。默认值为 true,设置后不需要重启 OBServer 节点,立即生效。
开启租户内的负载均衡的语句如下:
系统租户开启指定租户内的负载均衡
ALTER SYSTEM SET enable_rebalance = true TENANT = 'tenant_name';该语句仅将用户租户下配置项
enable_rebalance的值设置为true。示例:
ALTER SYSTEM SET enable_rebalance = true TENANT = 'mq_t1';系统租户开启租户间的负载均衡,同时开启所有租户内的负载均衡
ALTER SYSTEM SET enable_rebalance = true TENANT = ALL;该语句表示系统租户下和用户租户下配置项
enable_rebalance的值均为true。用户租户开启本租户内的负载均衡
MySQL 模式Oracle 模式MySQL 租户开启本租户的租户内负载均衡和租户下的 Transfer 功能的语句如下:
ALTER SYSTEM SET enable_rebalance = true;Oracle 租户开启本租户的租户内负载均衡和租户下的 Transfer 功能的语句如下:
ALTER SYSTEM SET enable_rebalance = 'true';
更多配置项 enable_rebalance 的详细说明,请参见 enable_rebalance。
增加 Primary Zone
使用
root用户登录到集群的sys租户。obclient -h172.30.xxx.xxx -P2883 -uroot@sys#obdemo -pxxxx -A进入
oceanbase数据库。use oceanbase;查询租户
mq_t1的基本信息,例如TENANT_ID、PRIMARY_ZONE等信息。obclient> SELECT TENANT_ID, TENANT_NAME, PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';查询结果如下:
+-----------+-------------+--------------+ | TENANT_ID | TENANT_NAME | PRIMARY_ZONE | +-----------+-------------+--------------+ | 1004 | mq_t1 | zone1;zone2 | +-----------+-------------+--------------+ 1 row in set根据查询结果可知,租户
mq_t1的TENANT_ID为 1004,PRIMARY_ZONE第一优先级为zone1。查询租户
mq_t1当前日志流 Leader 副本位置的分布信息。obclient> SELECT TENANT_ID, LS_ID, SVR_IP, SVR_PORT, ZONE, ROLE, REPLICA_TYPE FROM oceanbase.CDB_OB_LS_LOCATIONS WHERE TENANT_ID = 1004 AND LS_ID != 1 AND ROLE = 'LEADER';查询结果如下:
+-----------+-------+---------------+----------+--------+--------+--------------+ | TENANT_ID | LS_ID | SVR_IP | SVR_PORT | ZONE | ROLE | REPLICA_TYPE | +-----------+-------+---------------+----------+--------+--------+--------------+ | 1004 | 1001 | 172.xx.xxx.xx | 2882 | zone1 | LEADER | FULL | | 1004 | 1012 | 172.xx.xxx.xx | 2882 | zone1 | LEADER | FULL | +-----------+-------+---------------+----------+--------+--------+--------------+ 2 rows in set根据查询结果可知,租户
mq_t1有 2 个 Leader 副本提供服务,且均匀分布在 zone1 的两台机器上。修改租户
mq_t1的PRIMARY_ZONE属性,第一优先级 Zone 的个数从 1 调整为 2。obclient> ALTER TENANT mq_t1 PRIMARY_ZONE='zone1,zone2';查询租户
mq_t1的基本信息,确认PRIMARY_ZONE属性修改成功,第一优先级由zone1变更为zone1,zone2。obclient> SELECT PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_ID = 1004;查询结果如下:
+--------------+ | PRIMARY_ZONE | +--------------+ | zone1,zone2 | +--------------+ 1 row in set再次查询租户
mq_t1日志流 Leader 副本位置的分布信息。obclient> SELECT TENANT_ID, LS_ID, SVR_IP, SVR_PORT, ZONE, ROLE, REPLICA_TYPE FROM oceanbase.CDB_OB_LS_LOCATIONS WHERE TENANT_ID = 1004 AND LS_ID != 1 AND ROLE = 'LEADER';查询结果如下:
+-----------+-------+---------------+----------+-------+--------+--------------+ | TENANT_ID | LS_ID | SVR_IP | SVR_PORT | ZONE | ROLE | REPLICA_TYPE | +-----------+-------+---------------+----------+-------+--------+--------------+ | 1004 | 1001 | 172.xx.xxx.xx | 2882 | zone1 | LEADER | FULL | | 1004 | 1012 | 172.xx.xxx.xx | 2882 | zone1 | LEADER | FULL | | 1004 | 1013 | 172.xx.xxx.xx | 2882 | zone2 | LEADER | FULL | | 1004 | 1014 | 172.xx.xxx.xx | 2882 | zone2 | LEADER | FULL | +-----------+-------+---------------+----------+-------+--------+--------------+ 4 rows in set根据查询结果可知,租户
mq_t1在 zone1、zone2 上分别各有 2 个 Leader 副本,共 4 个 Leader 副本提供服务。
通过上述示例,变更前,租户 mq_t1 的 PRIMARY_ZONE 第一优先级 Zone 的个数为 1,有 2 个 Leader 副本提供服务;变更后,租户 mq_t1 的 PRIMARY_ZONE 第一优先级 Zone 的个数由 1 变更为 2,提供服务的 Leader 副本由 2 变更为 4,增加了计算节点,从而实现了租户的扩容。
减少 Primary Zone
使用
root用户登录到集群的sys租户。obclient -h172.30.xxx.xxx -P2883 -uroot@sys#obdemo -pxxxx -A进入
oceanbase数据库。use oceanbase;查询租户
mq_t1的基本信息,例如TENANT_ID、PRIMARY_ZONE等信息。obclient> SELECT TENANT_ID, TENANT_NAME, PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';查询结果如下:
+-----------+-------------+--------------+ | TENANT_ID | TENANT_NAME | PRIMARY_ZONE | +-----------+-------------+--------------+ | 1004 | mq_t1 | zone1,zone2 | +-----------+-------------+--------------+ 1 row in set根据查询结果可知,租户
mq_t1的TENANT_ID为 1004,PRIMARY_ZONE第一优先级为zone1和zone2。查询租户
mq_t1当前日志流 Leader 副本位置的分布信息。obclient> SELECT TENANT_ID, LS_ID, SVR_IP, SVR_PORT, ZONE, ROLE, REPLICA_TYPE FROM oceanbase.CDB_OB_LS_LOCATIONS WHERE TENANT_ID = 1004 AND LS_ID != 1 AND ROLE = 'LEADER';查询结果如下:
+-----------+-------+---------------+----------+-------+--------+--------------+ | TENANT_ID | LS_ID | SVR_IP | SVR_PORT | ZONE | ROLE | REPLICA_TYPE | +-----------+-------+---------------+----------+-------+--------+--------------+ | 1004 | 1001 | 172.xx.xxx.xx | 2882 | zone1 | LEADER | FULL | | 1004 | 1012 | 172.xx.xxx.xx | 2882 | zone1 | LEADER | FULL | | 1004 | 1013 | 172.xx.xxx.xx | 2882 | zone2 | LEADER | FULL | | 1004 | 1014 | 172.xx.xxx.xx | 2882 | zone2 | LEADER | FULL | +-----------+-------+---------------+----------+-------+--------+--------------+ 4 rows in set根据查询结果可知,租户
mq_t1有 4 个 Leader 副本提供服务,且均匀分布在 zone1、zone2 各自的两台机器上。修改租户
mq_t1的PRIMARY_ZONE属性,第一优先级 Zone 的个数从 2 调整为 1。obclient> ALTER TENANT mq_t1 PRIMARY_ZONE='zone1;zone2';查询租户
mq_t1的基本信息,确认PRIMARY_ZONE属性修改成功,由zone1,zone2变更为zone1;zone2。obclient> SELECT PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_ID = 1004;查询结果如下:
+--------------+ | PRIMARY_ZONE | +--------------+ | zone1;zone2 | +--------------+ 1 row in set再次查询租户
mq_t1日志流 Leader 副本位置的分布信息。obclient> SELECT TENANT_ID, LS_ID, SVR_IP, SVR_PORT, ZONE, ROLE, REPLICA_TYPE FROM oceanbase.CDB_OB_LS_LOCATIONS WHERE TENANT_ID = 1004 AND LS_ID != 1 AND ROLE = 'LEADER';查询结果如下:
+-----------+-------+---------------+----------+--------+--------+--------------+ | TENANT_ID | LS_ID | SVR_IP | SVR_PORT | ZONE | ROLE | REPLICA_TYPE | +-----------+-------+---------------+----------+--------+--------+--------------+ | 1004 | 1001 | 172.xx.xxx.xx | 2882 | zone1 | LEADER | FULL | | 1004 | 1012 | 172.xx.xxx.xx | 2882 | zone1 | LEADER | FULL | +-----------+-------+---------------+----------+--------+--------+--------------+ 2 rows in set根据查询结果可知,租户
mq_t1在 zone1 上有 2 个 Leader 副本提供服务。
通过上述示例,变更前,租户 mq_t1 的 PRIMARY_ZONE 第一优先级 Zone 的个数为 2,有 4 个 Leader 副本提供服务;变更后,租户 mq_t1 的 PRIMARY_ZONE 第一优先级 Zone 的个数由 2 变更为 1,提供服务的 Leader 副本由 4 变更为 2,减少了计算节点,从而实现了租户的缩容。