現在のディザスタリカバリタスクの実行には制限があります。移行レプリカタスクを除き、テナントの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\Gビュー
CDB_OB_LS_REPLICA_TASKSの各フィールドの詳細については、CDB_OB_LS_REPLICA_TASKSを参照してください。ユーザーテナント
MySQLモードOracleモードMySQLモードで以下のステートメントを実行します。
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_LS_REPLICA_TASKS\GOracleモードで以下のステートメントを実行します。
obclient [SYS]> SELECT * FROM SYS.DBA_OB_LS_REPLICA_TASKS\Gクエリ結果の例:
*************************** 1. row *************************** LS_ID: 1001 TASK_TYPE: MIGRATE REPLICA TASK_ID: Y13CE64586BD4-000610C5F3EDBBCB-0-0 TASK_STATUS: INPROGRESS PRIORITY: LOW TARGET_REPLICA_SVR_IP: 100.xx.xxx.002 TARGET_REPLICA_SVR_PORT: 5072 TARGET_PAXOS_REPLICA_NUMBER: 2 TARGET_REPLICA_TYPE: FULL SOURCE_REPLICA_SVR_IP: 100.xx.xxx.003 SOURCE_REPLICA_SVR_PORT: 5073 SOURCE_PAXOS_REPLICA_NUMBER: 2 SOURCE_REPLICA_TYPE: FULL DATA_SOURCE_SVR_IP: 100.xx.xxx.003 DATA_SOURCE_SVR_PORT: 5073 IS_MANUAL: FALSE TASK_EXEC_SVR_IP: 100.xx.xxx.002 TASK_EXEC_SVR_PORT: 5072 CREATE_TIME: 2024-02-07 15:23:04 START_TIME: 2024-02-07 15:23:04 MODIFY_TIME: 2024-02-07 15:23:04 COMMENT: migrate replica due to unit group not match CONFIG_VERSION: 1 row in setクエリ結果によると、
TASK_TYPEがMIGRATE REPLICAの災害復旧タスクが1つ実行中であり、その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回につきテナントの災害復旧タスクを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'\Gビュー
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'\GOracleモードで以下のステートメントを実行します:
obclient [SYS]> SELECT * FROM SYS.DBA_OB_LS_REPLICA_TASK_HISTORY WHERE TASK_ID = 'Y13CE64586BD4-000610C5F3EDBBCB-0-0'\Gクエリ結果の例:
*************************** 1. row *************************** LS_ID: 1001 TASK_TYPE: MIGRATE REPLICA TASK_ID: Y13CE64586BD4-000610C5F3EDBBCB-0-0 TASK_STATUS: CANCELED PRIORITY: LOW TARGET_REPLICA_SVR_IP: 100.xx.xxx.002 TARGET_REPLICA_SVR_PORT: 5072 TARGET_PAXOS_REPLICA_NUMBER: 2 TARGET_REPLICA_TYPE: FULL SOURCE_REPLICA_SVR_IP: 100.xx.xxx.003 SOURCE_REPLICA_SVR_PORT: 5073 SOURCE_PAXOS_REPLICA_NUMBER: 2 SOURCE_REPLICA_TYPE: FULL DATA_SOURCE_SVR_IP: 100.xx.xxx.003 DATA_SOURCE_SVR_PORT: 5073 IS_MANUAL: FALSE TASK_EXEC_SVR_IP: 100.xx.xxx.002 TASK_EXEC_SVR_PORT: 5072 CREATE_TIME: 2024-02-07 15:54:35 START_TIME: 2024-02-07 15:54:31 MODIFY_TIME: 2024-02-07 15:54:35 FINISH_TIME: 2024-02-07 15:54:34 EXECUTE_RESULT: ret:-4072, OB_CANCELED; elapsed:4109659; comment:[storage] receive task reply from storage rpc; COMMENT: migrate replica due to unit not match CONFIG_VERSION: 1 row in setクエリ結果において、
TASK_STATUSがCANCELEDである場合、タスクはキャンセルされたことを意味します。ビュー
DBA_OB_LS_REPLICA_TASK_HISTORYの各フィールドの詳細については、DBA_OB_LS_REPLICA_TASK_HISTORYを参照してください。