クエリのステータス

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

クエリ結果

» query-status
{
    "result": true,     # Whether the query is successful.
    "msg": "",          # Describes the reason for the unsuccessful query.
    "tasks": [          # Migration task list.
        {
            "taskName": "test",         # The task name.
            "taskStatus": "Running",    # The status of the task.
            "sources": [                # The upstream MySQL list.
                "mysql-replica-01",
                "mysql-replica-02"
            ]
        },
        {
            "taskName": "test2",
            "taskStatus": "Paused",
            "sources": [
                "mysql-replica-01",
                "mysql-replica-02"
            ]
        }
    ]
}

tasksセクションのtaskStatusの詳細な説明については、 タスクのステータスを参照してください。

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

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

タスクのステータス

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

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

詳細なクエリ結果

» query-status test
» query-status
{
    "result": true,     # Whether the query is successful.
    "msg": "",          # Describes the cause for the unsuccessful query.
    "sources": [                            # The upstream MySQL list.
        {
            "result": true,
            "msg": "",
            "sourceStatus": {                   # The information of the upstream MySQL databases.
                "source": "mysql-replica-01",
                "worker": "worker1",
                "result": null,
                "relayStatus": null
            },
            "subTaskStatus": [              # The information of all subtasks of upstream MySQL databases.
                {
                    "name": "test",         # The name of the subtask.
                    "stage": "Running",     # The running status of the subtask, including "New", "Running", "Paused", "Stopped", and "Finished".
                    "unit": "Sync",         # The processing unit of DM, including "Check", "Dump", "Load", and "Sync".
                    "result": null,         # Displays the error information if a subtask fails.
                    "unresolvedDDLLockID": "test-`test`.`t_target`",    # The sharding DDL lock ID, used for manually handling the sharding DDL
                                                                        # lock in the abnormal condition.
                    "sync": {                   # The replication information of the `Sync` processing unit. This information is about the
                                                # same component with the current processing unit.
                        "totalEvents": "12",    # The total number of binlog events that are replicated in this subtask.
                        "totalTps": "1",        # The number of binlog events that are replicated in this subtask per second.
                        "recentTps": "1",       # The number of binlog events that are replicated in this subtask in the last one second.
                        "masterBinlog": "(bin.000001, 3234)",                               # The binlog position in the upstream database.
                        "masterBinlogGtid": "c0149e17-dff1-11e8-b6a8-0242ac110004:1-14",    # The GTID information in the upstream database.
                        "syncerBinlog": "(bin.000001, 2525)",                               # The position of the binlog that has been replicated
                                                                                            # in the `Sync` processing unit.
                        "syncerBinlogGtid": "",                                             # The binlog position replicated using GTID.
                        "blockingDDLs": [       # The DDL list that is blocked currently. It is not empty only when all the upstream tables of this
                                                # DM-worker are in the "synced" status. In this case, it indicates the sharding DDL statements to be executed or that are skipped.
                            "USE `test`; ALTER TABLE `test`.`t_target` DROP COLUMN `age`;"
                        ],
                        "unresolvedGroups": [   # The sharding group that is not resolved.
                            {
                                "target": "`test`.`t_target`",                  # The downstream database table to be replicated.
                                "DDLs": [
                                    "USE `test`; ALTER TABLE `test`.`t_target` DROP COLUMN `age`;"
                                ],
                                "firstPos": "(bin|000001.000001, 3130)",        # The starting position of the sharding DDL statement.
                                "synced": [                                     # The upstream sharded table whose executed sharding DDL statement has been read by the `Sync` unit.
                                    "`test`.`t2`"
                                    "`test`.`t3`"
                                    "`test`.`t1`"
                                ],
                                "unsynced": [                                   # The upstream table that has not executed this sharding DDL
                                                                                # statement. If any upstream tables have not finished replication,
                                                                                # `blockingDDLs` is empty.
                                ]
                            }
                        ],
                        "synced": false         # Whether the incremental replication catches up with the upstream and has the same binlog position as that in the
                                                # upstream. The save point is not refreshed in real time in the `Sync` background, so "false" of "synced"
                                                # does not always mean a replication delay exits.
                    }
                }
            ]
        },
        {
            "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": {                   # The replication information of the `Load` processing unit.
                        "finishedBytes": "115", # The number of bytes that have been loaded.
                        "totalBytes": "452",    # The total number of bytes that need to be loaded.
                        "progress": "25.44 %"   # The progress of the loading process.
                    }
                }
            ]
        },
        {
            "result": true,
            "sourceStatus": {
                "source": "mysql-replica-03",
                "worker": "worker3",
                "result": null,
                "relayStatus": null
            },
            "subTaskStatus": [
                {
                    "name": "test",
                    "stage": "Paused",
                    "unit": "Load",
                    "result": {                 # The error example.
                        "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 %"
                    }
                }
            ]
        }
    ]
}

「sources」の「subTaskStatus」の「stage」のステータスの説明とステータスの切り替え関係については、 サブタスクのステータスを参照してください。

「sources」の「subTaskStatus」の「unresolvedDDLLockID」の動作詳細については、 シャーディング DDL ロックを手動で処理するを参照してください。

サブタスクのステータス

ステータスの説明

  • 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 <-------------------------|
エコシステム
TiDB
TiKV
TiFlash
TiSpark
Chaos Mesh
© 2023 PingCAP. All Rights Reserved.