OceanBaseデータベースは、テナントをロックする機能をサポートしています。テナントがロックされると、そのテナントに新しい接続を作成することはできなくなりますが、既存の接続は維持されます。本記事では、テナントのロックおよびアンロックの方法について説明します。
背景
ALTER TENANT ステートメントを使用して、テナントのロックとアンロックを行います。これは、障害対応シナリオや運用保守変更シナリオに適用されます:
障害対応:テナントに異常が発生し、現在修復中である場合、業務トラフィックが修復プロセスに影響を与えないようにするために、テナントをロックできます。この操作は、業務部門の同意を得た上で実施する必要があります。緊急時にテナントをロックした場合、ロック後には積極的にセッションをキルする必要があります。
運用保守変更:例えば、テナントを停止する必要がある場合、停止プロセスではグレースケールやロールバックなどの原則を保証する必要があります。そのため、テナントをロックすることで、業務システムへの影響を観察することができます。
注意
ロックとアンロックは必ずペアで使用してください。アンロックを忘れると、新しい接続を確立できなくなります。
テナントのロック
rootユーザーでクラスタのsysテナントにログインします。obclient -h172.30.xx.xx -P2883 -uroot@sys#cluster -p**** -Aoceanbaseデータベースに移動します。USE oceanbase;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 setDBA_OB_TENANTSビューの詳細については、DBA_OB_TENANTSを参照してください。ALTER TENANTステートメントを使用して、テナントをロックします。テナント
mq_t1をロックする例を挙げます。obclient [oceanbase]> ALTER TENANT mq_t1 LOCK; Query OK, 0 rows affectedALTER TENANTステートメントの詳細については、ALTER TENANTを参照してください。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
テナントのロック解除
rootユーザーでクラスタのsysテナントにログインします。
obclient -h172.30.xx.xx -P2883 -uroot@sys#cluster -p**** -Aoceanbaseデータベースに移動します。obclient [(none)]> USE oceanbase;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 setDBA_OB_TENANTSビューの詳細については、DBA_OB_TENANTSを参照してください。ALTER TENANTステートメントを使用して、テナントのロックを解除します。テナント
mq_t1のロックを解除する例を挙げます:obclient [oceanbase]> ALTER TENANT mq_t1 UNLOCK; Query OK, 0 rows affectedALTER TENANTステートメントの詳細については、ALTER TENANTを参照してください。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