各テナントでは同一時刻に1つのロードバランシングジョブ(Balance Job)しか実行できません。現在進行中のバランスジョブが業務要件を満たしていない場合は、このタスクをキャンセルできます。また、パーティション移動(Transfer Partition)を開始した後、既に実行中のバランスジョブがあるためパーティション移動タスクのスケジューリングが遅延している場合は、現在のバランスジョブを先にキャンセルすることができます。
制限事項
Balance Jobのキャンセル操作は、プライマリデータベース(すなわちプライマリテナント)でのみ実行できます。
背景
各テナントでは、同一時刻に1つのロードバランシングジョブ(JOB)しか実行できません。これらのロードバランシングジョブには、スケールアップ、スケールダウン、均衡移行、パーティション均衡などが含まれます。各ロードバランシングジョブは、複数のロードバランシングタスク(Task)を生成し、ロードバランシングの具体的な操作を実現します。Balance Jobをキャンセルすると、そのBalance Jobの下で実行中のすべてのタスクもキャンセルされます。
システムテナントによる進行中のBalance Jobのキャンセル
rootユーザーでクラスタのsysテナントにログインします。接続例は以下のとおりです。データベースへの接続時は、実際の環境に基づいてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -Aビュー
CDB_OB_BALANCE_JOBSを照会して、現在実行中のタスクを取得します。obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_BALANCE_JOBS WHERE TENANT_ID = 1002;クエリ結果の例は次のとおりです:
+-----------+--------+----------------------------+----------------------------+----------------------+------------+-----------------+-------------------------+--------+---------+ | TENANT_ID | JOB_ID | CREATE_TIME | MODIFY_TIME | BALANCE_STRATEGY | JOB_TYPE | TARGET_UNIT_NUM | TARGET_PRIMARY_ZONE_NUM | STATUS | COMMENT | +-----------+--------+----------------------------+----------------------------+----------------------+------------+-----------------+-------------------------+--------+---------+ | 1002 | 520683 | 2023-11-01 14:56:28.552867 | 2023-11-01 14:56:28.552867 | LS balance by shrink | LS_BALANCE | 1 | 1 | DOING | NULL | +-----------+--------+----------------------------+----------------------------+----------------------+------------+-----------------+-------------------------+--------+---------+ 1 row in setクエリ結果に基づき、該当するタスクが期待通りでない場合は、以下の操作を実行してBalance Jobをキャンセルできます。
ALTER SYSTEM CANCEL BALANCE JOB TENANT = 'tenant_name';例:
obclient [oceanbase]> ALTER SYSTEM CANCEL BALANCE JOB TENANT ='mysql_tenant';
ユーザーテナントが実行中のBalance Jobをキャンセルする
MySQLモードまたはOracleモードのテナント管理者がデータベースに接続します。
接続例は以下のとおりです。データベースへの接続時は、実際の環境に基づいてください。
obclient -h10.xx.xx.xx -P2883 -uroot@mysql_tenant#obdemo -p***** -Aビュー
DBA_OB_BALANCE_JOBSを照会して、現在実行中のタスクを取得します。MySQLモードOracleモードMySQLモードのクエリステートメントは次のとおりです:
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_BALANCE_JOBS;Oracleモードのクエリステートメントは以下のとおりです:
obclient [SYS]> SELECT * FROM SYS.DBA_OB_BALANCE_JOBS;クエリ結果に基づき、予想どおりでない場合は、以下の操作を実行してそのBalance Jobをキャンセルできます。
obclient> ALTER SYSTEM CANCEL BALANCE JOB;