TiDB データ移行におけるクエリタスクステータス

このドキュメントでは、 query-statusコマンドを使用して DM のタスク ステータスとサブタスク ステータスを照会する方法を紹介します。

クエリ結果

query-status以下の手順で使用することをお勧めします。

  1. query-status使用して、進行中の各タスクが正常な状態であるかどうかを確認します。
  2. タスクでエラーが発生した場合は、 query-status <taskName>コマンドを使用して詳細なエラー情報を表示します。このコマンドの<taskName>は、エラーが発生したタスクの名前を示します。

成功したクエリ結果は次のとおりです。

» query-status
{ "result": true, "msg": "", "tasks": [ { "taskName": "test", "taskStatus": "Running", "sources": [ "mysql-replica-01", "mysql-replica-02" ] }, { "taskName": "test2", "taskStatus": "Paused", "sources": [ "mysql-replica-01", "mysql-replica-02" ] } ] }

クエリ結果の一部フィールドは次のように説明されます。

  • result : クエリが成功したかどうか。
  • msg : クエリが失敗したときに返されるエラー メッセージ。
  • tasks : 移行タスクのリスト。各タスクには次のフィールドが含まれます。
    • taskName : タスクの名前。
    • taskStatus : タスクのステータス。 taskStatusの詳細な説明についてはタスクのステータスを参照してください。
    • sources : アップストリーム MySQL データベースのリスト。

タスクのステータス

DM 移行タスクのステータスは、DM ワーカーに割り当てられた各サブタスクのステータスによって異なります。サブタスク ステータスの詳細については、 サブタスクのステータスを参照してください。次の表は、サブタスク ステータスとタスク ステータスの関係を示しています。

タスク内のサブタスクのステータスタスクのステータス
1 つのサブタスクがpaused状態にあり、エラー情報が返されます。Error - Some error occurred in subtask
同期フェーズの 1 つのサブタスクはRunning状態ですが、そのPaused処理ユニットは実行されていません ( Error Stopped )。Error - Relay status is Error/Paused/Stopped
1 つのサブタスクがPaused状態にあり、エラー情報は返されません。Paused
すべてのサブタスクはNew状態にあります。New
すべてのサブタスクはFinished状態にあります。Finished
すべてのサブタスクはStopped状態にあります。Stopped
その他の状況Running

詳細なクエリ結果

» query-status test
{ "result": true, "msg": "", "sources": [ { "result": true, "msg": "", "sourceStatus": { "source": "mysql-replica-01", "worker": "worker1", "result": null, "relayStatus": null }, "subTaskStatus": [ { "name": "test", "stage": "Running", "unit": "Sync", "result": null, "unresolvedDDLLockID": "test-`test`.`t_target`", "sync": { "masterBinlog": "(bin.000001, 3234)", "masterBinlogGtid": "c0149e17-dff1-11e8-b6a8-0242ac110004:1-14", "syncerBinlog": "(bin.000001, 2525)", "syncerBinlogGtid": "", "blockingDDLs": [ "USE `test`; ALTER TABLE `test`.`t_target` DROP COLUMN `age`;" ], "unresolvedGroups": [ { "target": "`test`.`t_target`", "DDLs": [ "USE `test`; ALTER TABLE `test`.`t_target` DROP COLUMN `age`;" ], "firstPos": "(bin|000001.000001, 3130)", "synced": [ "`test`.`t2`" "`test`.`t3`" "`test`.`t1`" ], "unsynced": [ ] } ], "synced": false, "totalRows": "12", "totalRps": "1", "recentRps": "1" } } ] }, { "result": true, "msg": "", "sourceStatus": { "source": "mysql-replica-02", "worker": "worker2", "result": null, "relayStatus": null }, "subTaskStatus": [ { "name": "test", "stage": "Running", "unit": "Load", "result": null, "unresolvedDDLLockID": "", "load": { "finishedBytes": "115", "totalBytes": "452", "progress": "25.44 %", "bps": "2734" } } ] }, { "result": true, "sourceStatus": { "source": "mysql-replica-03", "worker": "worker3", "result": null, "relayStatus": null }, "subTaskStatus": [ { "name": "test", "stage": "Paused", "unit": "Load", "result": { "isCanceled": false, "errors": [ { "Type": "ExecSQL", "msg": "Error 1062: Duplicate entry '1155173304420532225' for key 'PRIMARY'\n/home/jenkins/workspace/build_dm/go/src/github.com/pingcap/tidb-enterprise-tools/loader/db.go:160: \n/home/jenkins/workspace/build_dm/go/src/github.com/pingcap/tidb-enterprise-tools/loader/db.go:105: \n/home/jenkins/workspace/build_dm/go/src/github.com/pingcap/tidb-enterprise-tools/loader/loader.go:138: file test.t1.sql" } ], "detail": null }, "unresolvedDDLLockID": "", "load": { "finishedBytes": "0", "totalBytes": "156", "progress": "0.00 %", "bps": "0" } } ] }, { "result": true, "msg": "", "sourceStatus": { "source": "mysql-replica-04", "worker": "worker4", "result": null, "relayStatus": null }, "subTaskStatus": [ { "name": "test", "stage": "Running", "unit": "Dump", "result": null, "unresolvedDDLLockID": "", "dump": { "totalTables": "10", "completedTables": "3", "finishedBytes": "2542", "finishedRows": "32", "estimateTotalRows": "563", "progress": "30.52 %", "bps": "445" } } ] }, ] }

返される結果の一部フィールドは次のように説明されます。

  • result : クエリが成功したかどうか。
  • msg : クエリが失敗したときに返されるエラー メッセージ。
  • sources : アップストリーム MySQL インスタンスのリスト。各ソースには次のフィールドが含まれます。
    • result
    • msg
    • sourceStatus : アップストリーム MySQL データベースの情報。
    • subTaskStatus : アップストリーム MySQL データベースのすべてのサブタスクの情報。各サブタスクには次のフィールドが含まれる場合があります。
      • name : サブタスクの名前。
      • stage : サブタスクのステータス。「sources」の「subTaskStatus」の「stage」のステータス説明とステータススイッチ関係については、 サブタスクのステータスを参照してください。
      • unit : 「チェック」、「ダンプ」、「ロード」、「同期」を含む DM の処理単位。
      • result : サブタスクが失敗した場合にエラー情報を表示します。
      • unresolvedDDLLockID : シャーディング DDL ロック ID。異常な状態でシャーディング DDL ロックを手動で処理するために使用されます。「sources」の「subTaskStatus」の「unresolvedDDLLockID」の操作の詳細については、 シャーディング DDL ロックを手動で処理するを参照してください。
      • sync : Syncの処理ユニットのレプリケーション情報。この情報は、現在の処理ユニットと同じコンポーネントに関するものです。
        • masterBinlog : アップストリーム データベース内のbinlogの位置。
        • masterBinlogGtid : アップストリーム データベース内の GTID 情報。
        • syncerBinlog : Sync処理ユニットに複製されたbinlogの位置。
        • syncerBinlogGtid : GTID を使用して複製されたbinlogの位置。
        • blockingDDLs : 現在ブロックされている DDL リスト。この DM ワーカーのすべてのアップストリーム テーブルが「同期済み」ステータスにある場合にのみ空ではありません。この場合、実行されるかスキップされるシャーディング DDL ステートメントを示します。
        • unresolvedGroups : 解決されていないシャーディング グループ。各グループには次のフィールドが含まれます。
          • target : 複製されるダウンストリーム データベース テーブル。
          • DDLs : DDL ステートメントのリスト。
          • firstPos : シャーディング DDL ステートメントの開始位置。
          • synced : 実行されたシャーディング DDL ステートメントがSyncユニットによって読み取られた上流のシャーディングされたテーブル。
          • unsynced : このシャーディング DDL ステートメントを実行していないアップストリーム テーブル。アップストリーム テーブルのいずれかがレプリケーションを完了していない場合、 blockingDDLs空になります。
        • synced : 増分レプリケーションがアップストリームに追いつき、アップストリームと同じbinlog位置を持つかどうか。セーブポイントはSyncグラウンドでリアルタイムに更新されないため、 syncedのうちfalse必ずしもレプリケーション遅延が存在することを意味するわけではありません。
        • totalRows : このサブタスクで複製される行の合計数。
        • totalRps : このサブタスクで 1 秒あたりに複製される行数。
        • recentRps : このサブタスクで最後の 1 秒間に複製された行の数。
      • load : Loadの処理ユニットのレプリケーション情報。
        • finishedBytes : ロードされたバイト数。
        • totalBytes : ロードする必要がある合計バイト数。
        • progress : 読み込みプロセスの進行状況。
        • bps : フルロードの速度。
      • dump : Dumpの処理ユニットのレプリケーション情報。
        • totalTables : ダンプするテーブルの数。
        • completedTables : ダンプされたテーブルの数。
        • finishedBytes : ダンプされたバイト数。
        • finishedRows : ダンプされた行数。
        • estimateTotalRows : ダンプされる行の推定数。
        • progress : ダンプ処理の進行状況。
        • bps : ダンプ速度(バイト/秒)。

サブタスクのステータス

ステータスの説明

  • New :

    • 初期ステータス。
    • サブタスクでエラーが発生しない場合はRunningに切り替えられ、エラーが発生した場合はPausedに切り替えられます。
  • Running : 通常の実行状態。

  • Paused :

    • 一時停止状態。
    • サブタスクでエラーが発生した場合は、 Pausedに切り替わります。
    • サブタスクがRunning状態のときにpause-task実行すると、タスクはPausedに切り替わります。
    • サブタスクがこの状態の場合、 resume-taskコマンドを実行してタスクを再開できます。
  • Stopped :

    • 停止状態。
    • サブタスクがRunningまたはPausedステータスにあるときにstop-task実行すると、タスクはStoppedに切り替わります。
    • サブタスクがこの状態の場合、 resume-task使用してタスクを再開することはできません。
  • Finished :

    • 完了したサブタスクのステータス。
    • 完全なレプリケーション サブタスクが正常に終了した場合にのみ、タスクはこのステータスに切り替わります。

ステータススイッチ図

error occurs New --------------------------------| | | | resume-task | | |----------------------------| | | | | | | | | | v v error occurs | v Finished <-------------- Running -----------------------> Paused ^ | or pause-task | | | | start task | | stop task | | | | | v stop task | Stopped <-------------------------|

このページは役に立ちましたか?