暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note247:OceanBase社区版中,如何修改租户属性?

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/


OceanBase 数据库支持修改用户租户的属性,包括修改租户的副本数、Zone 列表、主 Zone 以及系统变量值等。本文介绍如何修改租户属性。

背景信息

租户属性修改的常见场景:

  • 修改租户的 Primary Zone:Primary Zone 描述了 Leader 副本的偏好位置,而 Leader 副本承载了业务的强一致读写流量,即 Primary Zone 决定了 OceanBase 数据库的流量分布。通过修改 Primary Zone 属性可以切换业务流量,或者是从一个机房切换到另一个机房,或者是从一个城市切换到另一个城市,适用于容灾场景、扩缩容等场景。

  • 修改租户的 Locality:Locality 描述了数据的多个副本的类型及分布策略。通过修改 Locality 属性可以调整租户的部署架构,适用于机房搬迁、调整容灾级别等场景。

操作步骤

  1. 使用 root 用户登录到集群的 sys 租户。

    obclient -h172.30.xx.xx -P2883 -uroot@sys#cluster -p**** -A
    
  2. 进入 oceanbase 数据库。

    obclient [(none)]> USE oceanbase;
    
  3. 通过 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 set
    

    DBA_OB_TENANTS 视图的详细说明,参见 oceanbase.DBA_OB_TENANTS

  4. 通过 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 表示 zone1zone2 和 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
      
  5. 查看视图,确认租户属性修改结果。

    修改 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/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论