現在のディザスタリカバリタスクの実行には制限があります。レプリカ移行タスクを除き、テナントの1つのログストリームでは同時に実行できるレプリカタスクは1つのみであり、そのため緊急のタスクがある場合でも、実行中のタスクが完了するまで待機しなければならないことがあります。緊急のタスクを優先的に実行する必要がある場合は、ALTER SYSTEM CANCEL REPLICA TASK コマンドを使用して、実行中のレプリカタスクを手動でキャンセルできます。
制限事項
現行バージョンでは、補完レプリカタスクと移行レプリカタスクの2種類のみをキャンセルできます。
説明
現行バージョンでは、Unit移行によって発生するレプリカ移行タスクについて、移行タスクの宛先にUnitが存在しなくなった場合、システムは対応するレプリカ移行タスクを自動的にキャンセルします。手動でのキャンセルは不要です。
システムテナント(sysテナント)はすべてのテナントのレプリカタスクをキャンセルできますが、ユーザーテナントは自身のテナントのレプリカタスクのみをキャンセルできます。
前提条件
レプリカタスクのキャンセル操作を実行する前に、現在のユーザーが
ALTER SYSTEM権限を持っていることを確認してください。持っていない場合は、ALTER SYSTEM CANCEL REPLICA TASKコマンドを実行できません。ビューを照会する前に、現在のユーザーが以下のビューに対する
SELECT権限を持っていることを確認してください。持っていない場合は、関連情報を照会できません。DBA_OB_LS_REPLICA_TASKS/CDB_OB_LS_REPLICA_TASKSDBA_OB_LS_REPLICA_TASK_HISTORY/CDB_OB_LS_REPLICA_TASK_HISTORY
操作手順
現在、tenant1テナントがあり、その1001番のログストリームのRレプリカが移行タスクを実行しているとします。この時点で、現在のクラスタに障害が発生し、可用性を確保するために可用なマシンにFレプリカを追加する必要があります。しかし、移行中のRレプリカのデータ量が非常に大きいため、タスクが完了せず、緊急の運用保守作業であるFレプリカの追加も適時に実行できません。このような状況では、運用保守担当者は本記事を参照して、移行中のRレプリカの災害復旧タスクを手動でキャンセルし、優先的に緊急の運用保守作業を実行できます。
ユーザーはクラスタに対応するテナントにログインします。
接続例は以下のとおりです:
obclient -h172.30.xxx.xxx -P2883 -uroot@tenant1#obdemo -pxxxx -Aデータベースへの接続方法の詳細については、データベース接続の概要(MySQLモード)およびデータベース接続の概要(Oracleモード)を参照してください。
現在実行中の災害復旧タスクを確認します。
システムテナント
obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_LS_REPLICA_TASKS;ビュー
CDB_OB_LS_REPLICA_TASKSの各フィールドの詳細については、CDB_OB_LS_REPLICA_TASKSを参照してください。ユーザーテナント
MySQLモードOracleモードMySQLモードでは、次のステートメントを実行します。
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_LS_REPLICA_TASKS;Oracleモードでは、次のステートメントを実行します。
obclient [SYS]> SELECT * FROM SYS.DBA_OB_LS_REPLICA_TASKS;クエリ結果の例は次のとおりです:
+-------+-----------------+------------------------------------+-------------+----------+-----------------------+-------------------------+-----------------------------+---------------------+-----------------------+-------------------------+-----------------------------+---------------------+--------------------+----------------------+-----------+------------------+--------------------+---------------------+---------------------+---------------------+---------------------------------------------+ | LS_ID | TASK_TYPE | TASK_ID | TASK_STATUS | PRIORITY | TARGET_REPLICA_SVR_IP | TARGET_REPLICA_SVR_PORT | TARGET_PAXOS_REPLICA_NUMBER | TARGET_REPLICA_TYPE | SOURCE_REPLICA_SVR_IP | SOURCE_REPLICA_SVR_PORT | SOURCE_PAXOS_REPLICA_NUMBER | SOURCE_REPLICA_TYPE | DATA_SOURCE_SVR_IP | DATA_SOURCE_SVR_PORT | IS_MANUAL | TASK_EXEC_SVR_IP | TASK_EXEC_SVR_PORT | CREATE_TIME | START_TIME | MODIFY_TIME | COMMENT | +-------+-----------------+------------------------------------+-------------+----------+-----------------------+-------------------------+-----------------------------+---------------------+-----------------------+-------------------------+-----------------------------+---------------------+--------------------+----------------------+-----------+------------------+--------------------+---------------------+---------------------+---------------------+---------------------------------------------+ | 1001 | MIGRATE REPLICA | Y13CE64586BD4-000610C5F3EDBBCB-0-0 | INPROGRESS | LOW | 100.xx.xxx.002 | 5072 | 2 | FULL | 100.xx.xxx.003 | 5073 | 2 | FULL | 100.xx.xxx.003 | 5073 | FALSE | 100.xx.xxx.002 | 5072 | 2024-02-07 15:23:04 | 2024-02-07 15:23:04 | 2024-02-07 15:23:04 | migrate replica due to unit group not match | +-------+-----------------+------------------------------------+-------------+----------+-----------------------+----------------------- +-----------------------------+---------------------+-----------------------+-------------------------+-----------------------------+---------------------+--------------------+----------------------+-----------+------------------+--------------------+---------------------+---------------------+---------------------+---------------------------------------------+ 1 row in setクエリ結果から、
TASK_TYPEがMIGRATE REPLICAの災害復旧タスクが実行中であり、そのTASK_IDが記録されていることがわかります。ビュー
DBA_OB_LS_REPLICA_TASKSの各フィールドの詳細については、DBA_OB_LS_REPLICA_TASKSを参照してください。
レプリカタスクをキャンセルするコマンドを実行します。
ステートメントは以下のとおりです:
ALTER SYSTEM CANCEL REPLICA TASK TASK_ID [=] 'task_id' [TENANT [=] 'tenant_name'];ステートメントの使用方法:
task_id:キャンセルするレプリカタスクのTASK_ID。tenant_name:操作対象のテナントを指定します。システムテナントは他のテナントを指定できますが、ユーザーテナントは自身のテナントしか指定できません。操作対象のテナントを明示的に指定しない場合、デフォルトのテナント名は現在のテナントになります。このステートメントでは、all、all_user、all_metaなどを使用してすべてのテナント、ユーザーテナント、およびすべてのMetaテナントを指定することはサポートされていません。このステートメントでは、一度にテナントの災害復旧タスクを1つしかキャンセルできません。
例:
obclient> ALTER SYSTEM CANCEL REPLICA TASK TASK_ID = 'Y13CE64586BD4-000610C5F3EDBBCB-0-0';レプリカタスクのキャンセル結果を確認します。
システムテナント
obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_LS_REPLICA_TASK_HISTORY WHERE TASK_ID = 'Y13CE64586BD4-000610C5F3EDBBCB-0-0';ビュー
CDB_OB_LS_REPLICA_TASK_HISTORYの各フィールドの詳細については、CDB_OB_LS_REPLICA_TASK_HISTORYを参照してください。ユーザーテナント
MySQLモードOracleモードMySQLモードでは、次のステートメントを実行します。
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_LS_REPLICA_TASK_HISTORY WHERE TASK_ID = 'Y13CE64586BD4-000610C5F3EDBBCB-0-0';Oracleモードで以下のステートメントを実行します:
obclient [SYS]> SELECT * FROM SYS.DBA_OB_LS_REPLICA_TASK_HISTORY WHERE TASK_ID = 'Y13CE64586BD4-000610C5F3EDBBCB-0-0';クエリ結果の例は次のとおりです:
+-------+-----------------+------------------------------------+-------------+----------+-----------------------+-------------------------+-----------------------------+---------------------+-----------------------+-------------------------+-----------------------------+---------------------+--------------------+----------------------+-----------+------------------+--------------------+---------------------+---------------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------+---------------------------------------------+ | LS_ID | TASK_TYPE | TASK_ID | TASK_STATUS | PRIORITY | TARGET_REPLICA_SVR_IP | TARGET_REPLICA_SVR_PORT | TARGET_PAXOS_REPLICA_NUMBER | TARGET_REPLICA_TYPE | SOURCE_REPLICA_SVR_IP | SOURCE_REPLICA_SVR_PORT | SOURCE_PAXOS_REPLICA_NUMBER | SOURCE_REPLICA_TYPE | DATA_SOURCE_SVR_IP | DATA_SOURCE_SVR_PORT | IS_MANUAL | TASK_EXEC_SVR_IP | TASK_EXEC_SVR_PORT | CREATE_TIME | START_TIME | MODIFY_TIME | FINISH_TIME | EXECUTE_RESULT | COMMENT | +-------+-----------------+------------------------------------+-------------+----------+-----------------------+-------------------------+-----------------------------+---------------------+-----------------------+-------------------------+-----------------------------+---------------------+--------------------+----------------------+-----------+------------------+--------------------+---------------------+---------------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------+---------------------------------------------+ | 1001 | MIGRATE REPLICA | Y13CE64586BD4-000610C5F3EDBBCB-0-0 | CANCELED | LOW | 100.xx.xxx.002 | 5072 | 2 | FULL | 100.xx.xxx.003 | 5073 | 2 | FULL | 100.xx.xxx.003 | 5073 | FALSE | 100.xx.xxx.002 | 5072 | 2024-02-07 15:54:35 | 2024-02-07 15:54:31 | 2024-02-07 15:54:35 | 2024-02-07 15:54:34 | ret:-4072, OB_CANCELED; elapsed:4109659; comment:[storage] receive task reply from storage rpc; | migrate replica due to unit group not match | +-------+-----------------+------------------------------------+-------------+----------+-----------------------+-------------------------+-----------------------------+---------------------+-----------------------+-------------------------+-----------------------------+---------------------+--------------------+----------------------+-----------+------------------+--------------------+---------------------+---------------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------+---------------------------------------------+ 1 row in setクエリ結果において、
TASK_STATUSがCANCELEDである場合、タスクがキャンセルされたことを示します。ビュー
DBA_OB_LS_REPLICA_TASK_HISTORYの各フィールドの詳細については、DBA_OB_LS_REPLICA_TASK_HISTORYを参照してください。