创建数据源

注意:

在创建数据源之前,你需要先使用 TiUP 部署 DM 集群

本文档介绍如何为 TiDB Data Migration (DM) 的数据迁移任务创建数据源。

数据源包含了访问迁移任务上游所需的信息。数据迁移任务需要引用对应的数据源来获取访问配置信息。因此,在创建数据迁移任务之前,需要先创建任务的数据源。详细的数据源管理命令请参考管理上游数据源

第一步:配置数据源

  1. (可选)加密数据源密码

    在 DM 的配置文件中,推荐使用经 dmctl 加密后的密文密码。按照下面的示例可以获得数据源的密文密码,用于下一步编写数据源配置文件。

    1. tiup dmctl encrypt 'abc!@#123'
    1. MKxn0Qo3m3XOyjCnhEMtsUCm83EhGQDZ/T4=
  2. 编写数据源配置文件

    每个数据源需要一个单独的配置文件来创建数据源。按照下面示例创建 ID 为 “mysql-01” 的数据源,创建数据源配置文件 ./source-mysql-01.yaml

    1. source-id: "mysql-01" # 数据源 ID,在数据迁移任务配置和 dmctl 命令行中引用该 source-id 可以关联到对应的数据源
    2. from:
    3. host: "127.0.0.1"
    4. port: 3306
    5. user: "root"
    6. password: "MKxn0Qo3m3XOyjCnhEMtsUCm83EhGQDZ/T4=" # 推荐使用 dmctl 对上游数据源的用户密码加密之后的密码
    7. security: # 上游数据源 TLS 相关配置。如果没有需要则可以删除
    8. ssl-ca: "/path/to/ca.pem"
    9. ssl-cert: "/path/to/cert.pem"
    10. ssl-key: "/path/to/key.pem"

第二步:创建数据源

使用如下命令创建数据源:

  1. tiup dmctl --master-addr <master-addr> operate-source create ./source-mysql-01.yaml

数据源配置文件的其他配置参考数据源配置文件介绍

命令返回结果如下:

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

第三步:查询创建的数据源

创建数据源后,可以使用如下命令查看创建的数据源:

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

    1. tiup dmctl --master-addr <master-addr> config source mysql-01
    1. {
    2. "result": true,
    3. "msg": "",
    4. "cfg": "enable-gtid: false
    5. flavor: mysql
    6. source-id: mysql-01
    7. from:
    8. host: 127.0.0.1
    9. port: 3306
    10. user: root
    11. password: '******'
    12. }
  • 如果不知道数据源的 source-id,可以先通过 dmctl operate-source show 命令查看源数据库列表,从中可以找到对应的数据源。

    1. tiup dmctl --master-addr <master-addr> 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-02",
    9. "worker": ""
    10. },
    11. {
    12. "result": true,
    13. "msg": "",
    14. "source": "mysql-01",
    15. "worker": "dm-worker-1"
    16. }
    17. ]
    18. }