管理 TiDB Data Migration 上游数据源

    在 DM 相关配置文件中,推荐使用经 dmctl 加密后的密码。对于同一个原始密码,每次加密后密码不同。

    operate-source 命令向 DM 集群加载、列出、移除数据源。

    1. help operate-source
    1. `create`/`stop`/`show` upstream MySQL/MariaDB source.
    2. Usage:
    3. dmctl operate-source <operate-type> [config-file ...] [--print-sample-config] [flags]
    4. Flags:
    5. -h, --help help for operate-source
    6. -p, --print-sample-config print sample config file of source
    7. Global Flags:
    8. -s, --source strings MySQL Source ID
    • create:创建一个或多个上游的数据库源。创建多个数据源失败时,会尝试回滚到执行命令之前的状态

    • stop:停止一个或多个上游的数据库源。停止多个数据源失败时,可能有部分数据源已成功停止

    • show:显示已添加的数据源以及对应的 DM-worker

      • 指定 source.yaml 的文件路径
      • 可传递多个文件路径
    • --print-sample-config:打印示例配置文件。该参数会忽视其余参数

    使用 operate-source 命令创建数据源配置:

    1. operate-source create ./source.yaml

    其中 source.yaml 的配置参考上游数据库配置文件介绍

    结果如下:

    1. {
    2. "result": true,
    3. "msg": "",
    4. "sources": [
    5. {
    6. "result": true,
    7. "msg": "",
    8. "source": "mysql-replica-01",
    9. "worker": "dm-worker-1"
    10. }
    11. ]
    12. }

    注意

    如果知道 source-id,可以通过 dmctl --master-addr <master-addr> config source <source-id> 命令直接查看数据源配置。

    1. {
    2. "result": true,
    3. "msg": "",
    4. "cfg": "enable-gtid: false
    5. flavor: mysql
    6. from:
    7. host: 127.0.0.1
    8. port: 8407
    9. password: '******'
    10. }

    如果不知道 source-id,可以先通过 dmctl --master-addr <master-addr> operate-source show 查看源数据库列表。

    1. operate-source show
    1. {
    2. "result": true,
    3. "msg": "",
    4. "sources": [
    5. {
    6. "result": true,
    7. "msg": "source is added but there is no free worker to bound",
    8. "source": "mysql-replica-02",
    9. "worker": ""
    10. },
    11. {
    12. "result": true,
    13. "msg": "",
    14. "source": "mysql-replica-01",
    15. "worker": "dm-worker-1"
    16. }
    17. ]
    18. }

    transfer-source 用于改变数据源与 DM-worker 的绑定关系。

    1. help transfer-source
    1. Transfers a upstream MySQL/MariaDB source to a free worker.
    2. Usage:
    3. dmctl transfer-source <source-id> <worker-id> [flags]
    4. Flags:
    5. -h, --help help for transfer-source
    6. Global Flags:
    7. -s, --source strings MySQL Source ID.

    在改变绑定关系前,DM 会检查待解绑的 worker 是否正在运行同步任务,如果正在运行则需要先,并在改变绑定关系后恢复任务

    如果不清楚 DM-worker 的绑定关系,可以通过 dmctl --master-addr <master-addr> list-member --worker 查看。

    1. {
    2. "result": true,
    3. "msg": "",
    4. "members": [
    5. {
    6. "worker": {
    7. "msg": "",
    8. "workers": [
    9. {
    10. "addr": "127.0.0.1:8262",
    11. "source": "mysql-replica-01"
    12. },
    13. {
    14. "name": "dm-worker-2",
    15. "addr": "127.0.0.1:8263",
    16. "stage": "free",
    17. "source": ""
    18. }
    19. ]
    20. }
    21. }
    22. ]
    23. }
    1. transfer-source mysql-replica-01 dm-worker-2
    1. {
    2. "result": true,
    3. "msg": ""
    4. }

    再次通过 dmctl --master-addr <master-addr> list-member --worker 查看,检查命令已生效。

    1. list-member --worker
    1. {
    2. "result": true,
    3. "msg": "",
    4. "members": [
    5. {
    6. "worker": {
    7. "msg": "",
    8. "workers": [
    9. {
    10. "name": "dm-worker-1",
    11. "addr": "127.0.0.1:8262",
    12. "stage": "free",
    13. "source": ""
    14. },
    15. {
    16. "name": "dm-worker-2",
    17. "addr": "127.0.0.1:8263",
    18. "stage": "bound",
    19. "source": "mysql-replica-01"
    20. }
    21. ]
    22. }
    23. }