OceanBase数据库支持对租户的锁定。租户锁定后,不影响已连接租户的应用,新应用无法连接租户。
使用root用户连接sys租户
[root]# mysql -h192.168.1.71 -P2883 -D oceanbase -uroot@sys -pOceanBase010 -c -A
查看租户信息
mysql> select * from dba_ob_tenants;
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+------------------------------+-------------------+--------------------+--------+---------------+--------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | CREATE_TIME | MODIFY_TIME | PRIMARY_ZONE | LOCALITY | PREVIOUS_LOCALITY | COMPATIBILITY_MODE | STATUS | IN_RECYCLEBIN | LOCKED |
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+------------------------------+-------------------+--------------------+--------+---------------+--------+
| 1 | sys | SYS | 2023-04-24 18:33:06.821930 | 2023-05-09 09:28:07.989177 | RANDOM | FULL{1}@zone1, FULL{1}@zone2 | NULL | MYSQL | NORMAL | NO | NO |
| 1003 | META$1004 | META | 2023-04-25 16:54:07.990306 | 2023-05-10 15:29:00.135387 | zone1;zone2 | FULL{1}@zone1, FULL{1}@zone2 | NULL | MYSQL | NORMAL | NO | NO |
| 1004 | my_tenant | USER | 2023-04-25 16:54:07.991849 | 2023-05-10 15:29:00.123178 | zone1;zone2 | FULL{1}@zone1, FULL{1}@zone2 | NULL | MYSQL | NORMAL | NO | NO |
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+------------------------------+-------------------+--------------------+--------+---------------+--------+
锁定my_tenant租户
mysql> alter tenant my_tenant lock;
Query OK, 0 rows affected (0.23 sec)
查看租户信息,此时my_tenant租户LOCKED值处于“YES”(被锁定状态)
mysql> select TENANT_NAME,LOCKED from dba_ob_tenants where TENANT_NAME='my_tenant';
+-------------+--------+
| TENANT_NAME | LOCKED |
+-------------+--------+
| my_tenant | YES |
+-------------+--------+
新建连接,连接my_tenant租户,会报错my_tenant被锁定
[root]# mysql -h 192.168.1.71 -P 2883 -uroot@my_tenant -pOceanBase010 -A
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 5260 (HY000): Tenant 'my_tenant' is locked
解锁my_tenant租户
mysql> alter tenant my_tenant unlock;
Query OK, 0 rows affected (0.19 sec)
查看租户信息,此时my_tenant租户LOCKED值为“NO”
mysql> select TENANT_NAME,LOCKED from dba_ob_tenants where TENANT_NAME='my_tenant';
+-------------+--------+
| TENANT_NAME | LOCKED |
+-------------+--------+
| my_tenant | NO |
+-------------+--------+
参考:https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001697247