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

OceanBase数据库租户锁定和解锁

Tonyhacks 2023-11-23
754

租户锁定和解锁

OceanBase 数据库支持对租户进行锁定。租户锁定后,不能在该租户上创建新的连接,已有连接保持不变。本文介绍如何进行租户锁定和解锁。

背景信息

通过 ALTER TENANT 语句对租户锁定和解锁。适用于故障应急场景和运维变更场景:

  • 故障应急:租户出现异常正在修复中,为了避免业务流量对修复进程产生影响,可以锁定租户。需要在征得业务方同意的情况下进行操作。应急场景下锁定租户,锁定后需要主动 kill session。
  • 运维变更:例如租户需要下线,下线流程需要保证可灰度、可回滚等原则,可以把锁定租户作为流程之一以观察对业务系统的影响。

注意
锁定和解锁务必配对使用,忘记解锁会导致无法建立新连接。

租户锁定

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

    obclient -h172.30.xx.xx -P2883 -uroot@sys#cluster -p**** -A

  2. 进入 oceanbase 数据库。

    USE oceanbase;

  3. 通过 DBA_OB_TENANTS 视图,查看租户信息。

    以查看租户 mq_t1 的锁定状态为例:

    obclient [oceanbase]> SELECT TENANT_ID,TENANT_NAME,LOCKED FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';
    +-----------+-------------+--------+
    | TENANT_ID | TENANT_NAME | LOCKED |
    +-----------+-------------+--------+
    |      1036 | mq_t1       | NO     |
    +-----------+-------------+--------+
    1 row in set
    

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

  4. 通过 ALTER TENANT 语句,锁定租户。

    以锁定租户 mq_t1 为例。

    obclient [oceanbase]> ALTER TENANT mq_t1 LOCK;
    Query OK, 0 rows affected
    

    ALTER TENANT 语句的详细说明,参见 ALTER TENANT

  5. 查看 DBA_OB_TENANTS 视图,确认租户是否锁定成功。

    obclient [oceanbase]> SELECT TENANT_ID,TENANT_NAME,LOCKED FROM DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';
    +-----------+-------------+--------+
    | TENANT_ID | TENANT_NAME | LOCKED |
    +-----------+-------------+--------+
    |      1036 | mq_t1       | YES    |
    +-----------+-------------+--------+
    1 row in set
    

租户解锁

  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 TENANT_ID,TENANT_NAME,LOCKED FROM DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';
    +-----------+-------------+--------+
    | TENANT_ID | TENANT_NAME | LOCKED |
    +-----------+-------------+--------+
    |      1036 | mq_t1       | YES    |
    +-----------+-------------+--------+
    1 row in set
    

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

  4. 通过 ALTER TENANT 语句,解锁租户。

    以解锁租户 mq_t1 为例:

    obclient [oceanbase]> ALTER TENANT mq_t1 UNLOCK;
    Query OK, 0 rows affected
    

    ALTER TENANT 语句的详细说明,参见 ALTER TENANT

  5. 查看 DBA_OB_TENANTS 视图,确认租户是否锁定成功。

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

评论