欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/
OceanBase 数据库支持修改用户租户的属性,包括修改租户的副本数、Zone 列表、主 Zone 以及系统变量值等。本文介绍如何修改租户属性。
背景信息
租户属性修改的常见场景:
修改租户的 Primary Zone:Primary Zone 描述了 Leader 副本的偏好位置,而 Leader 副本承载了业务的强一致读写流量,即 Primary Zone 决定了 OceanBase 数据库的流量分布。通过修改 Primary Zone 属性可以切换业务流量,或者是从一个机房切换到另一个机房,或者是从一个城市切换到另一个城市,适用于容灾场景、扩缩容等场景。
修改租户的 Locality:Locality 描述了数据的多个副本的类型及分布策略。通过修改 Locality 属性可以调整租户的部署架构,适用于机房搬迁、调整容灾级别等场景。
操作步骤
使用 root 用户登录到集群的 sys 租户。
obclient -h172.30.xx.xx -P2883 -uroot@sys#cluster -p**** -A进入
oceanbase数据库。obclient [(none)]> USE oceanbase;通过
DBA_OB_TENANTS视图,查看租户的配置信息。以查询租户
mq_t1的配置信息为例:obclient [oceanbase]> SELECT * FROM DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1'; +-----------+-------------+-------------+----------------------------+----------------------------+--------------+------------------------------+-------------------+--------------------+--------+---------------+--------+ | TENANT_ID | TENANT_NAME | TENANT_TYPE | CREATE_TIME | MODIFY_TIME | PRIMARY_ZONE | LOCALITY | PREVIOUS_LOCALITY | COMPATIBILITY_MODE | STATUS | IN_RECYCLEBIN | LOCKED | +-----------+-------------+-------------+----------------------------+----------------------------+--------------+------------------------------+-------------------+--------------------+--------+---------------+--------+ | 1036 | mq_t1 | USER | 2023-01-10 22:44:59.788717 | 2023-01-10 22:45:19.578586 | zone1;zone2 | FULL{1}@zone1, FULL{1}@zone2 | NULL | MYSQL | NORMAL | NO | NO | +-----------+-------------+-------------+----------------------------+----------------------------+--------------+------------------------------+-------------------+--------------------+--------+---------------+--------+ 1 row in setDBA_OB_TENANTS视图的详细说明,参见 oceanbase.DBA_OB_TENANTS。通过
ALTER TENANT语句,修改租户属性。注意
该语句需要在系统租户下以 root 用户执行。
语法如下:
ALTER TENANT {tenant_name | ALL} [SET] [tenant_option_list] [opt_global_sys_vars_set] tenant_option_list: tenant_option [, tenant_option ...] tenant_option: COMMENT [=]'string' |PRIMARY_ZONE [=] zone |RESOURCE_POOL_LIST [=](poolname [, poolname...]) |DEFAULT TABLEGROUP [=] {NULL | tablegroupname} |LOCALITY [=] 'locality description'; opt_global_sys_vars_set: VARIABLES system_var_name = expr [,system_var_name = expr] ...参数说明:
{tenant_name | ALL}:租户名称,ALL表示所有租户。PRIMARY_ZONE:用于指定租户的 Primary Zone。RESOURCE_POOL_LIST:指定资源池列表。每次仅支持添加或删除一个资源池。LOCALITY:描述副本在 Zone 间的分布情况,如:F@zone1,F@zone2,F@zone3表示zone1、zone2和zone3为全功能副本。该参数增加 Zone 配置时需要租户资源池的ZONE_LIST包含该 Zone。
ALTER TENANT语句的详细说明,参见 ALTER TENANT。示例:
修改租户
mq_t1的 Primary Zone 为"zone1,zone2",Locality 为"F@sa128_obv4_1,F@sa128_obv4_2,F@sa128_obv4_3"。obclient [oceanbase]> ALTER TENANT mq_t1 PRIMARY_ZONE='zone1,zone2'; Query OK, 0 rows affected obclient [oceanbase]> ALTER TENANT mq_t1 LOCALITY="F@sa128_obv4_1,F@sa128_obv4_2,F@sa128_obv4_3"; Query OK, 0 rows affected租户的资源池每次仅支持添加或删除一个资源池。不支持直接替换租户的资源池。租户原来使用的资源池为
mq_pool_01,通过以下命令直接将租户的资源池替换为mq_pool_02时,系统会报错。obclient [oceanbase]> ALTER TENANT mq_t1 RESOURCE_POOL_LIST=('mq_pool_02'); ERROR 1210 (HY000): Incorrect arguments to resource pool list
查看视图,确认租户属性修改结果。
修改 Primary Zone 和 Locality 的命令会立即返回用户,异步生效。所以需要通过相关视图查看命令的实际生效情况:
- 可以通过
DBA_OB_TENANTS视图查看租户的 Primary Zone 信息和 Locality 属性。视图的PRIMARY_ZONE字段表示用户配置的 Primary Zone 值,LOCALITY字段表示用户配置的 Locality 值,PREVIOUS_LOCALITY表示修改前的 Locality 值。如果PREVIOUS_LOCALITY不为空,表示 Locality 修改尚未生效;如果PREVIOUS_LOCALITY为空,表示 Locality 修改已生效。 - 可以通过系统租户下的
CDB_OB_TABLE_LOCATIONS视图查看对应租户下表和分区的分布信息,可以通过用户租户下的DBA_OB_TABLE_LOCATIONS视图查看本租户下表和分区的分布信息。修改 Primary Zone 和 Locality 命令的最终生效会体现到这些视图中。
- 可以通过
欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/




