首页 > 数据库 > > 使用 DM 同步数据
本文介绍如何使用 DM (Data Migration) 同步数据。
目前推荐使用 DM-Ansible 部署 DM 集群,具体部署方法参照 使用 DM binary 部署 DM 集群。
注意:
- 在 DM 所有的配置文件中,数据库的密码要使用 dmctl 加密后的密文。如果数据库密码为空,则不需要加密。关于如何使用 dmctl 加密明文密码,参考上下游数据库用户必须拥有相应的读写权限。
使用 DM-Ansible 部署 DM 集群后,相关配置信息如下:
| 组件 | 主机 | 端口 |
|---|---|---|
| dm_worker1 | 172.16.10.72 | 8262 |
| dm_worker2 | 172.16.10.73 | 8262 |
| dm_master | 172.16.10.71 | 8261 |
| 数据库实例 | 主机 | 端口 | 用户名 | 加密密码 |
|---|---|---|---|---|
| 上游 MySQL-1 | 172.16.10.81 | 3306 | root | VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU= |
| 上游 MySQL-2 | 172.16.10.82 | 3306 | root | VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU= |
| 下游 TiDB | 172.16.10.83 | 4000 | root |
dm-master 进程配置文件 {ansible deploy}/conf/dm-master.toml 中的配置
假设需要将 MySQL-1 和 MySQL-2 实例的 test_db 库的 test_table 表以全量+增量的模式同步到下游 TiDB 的 test_db 库的 test_table 表。
复制并编辑 {ansible deploy}/conf/task.yaml.example,生成如下任务配置文件 task.yaml:
check-task 命令手动前置检查上游的 MySQL 实例配置是否符合 DM 的配置要求。./dmctl --master-addr 172.16.10.71:8261
执行以下命令启动数据同步任务。其中,task.yaml 是之前编辑的配置文件。
» start-task ./task.yaml
如果执行该命令后返回的结果如下,则表明任务已成功启动。
{
"result": true,
"msg": "",
"workers": [
{
"result": true,
"worker": "172.16.10.72:8262",
"msg": ""
},
{
"result": true,
"worker": "172.16.10.73:8262",
"msg": ""
}
]
}
如果任务启动失败,可根据返回结果的提示进行配置变更后执行 start-task task.yaml 命令重新启动任务。
如需了解 DM 集群中是否存在正在运行的同步任务及任务状态等信息,可在 dmctl 内使用以下命令进行查询:
» query-status
如果不再需要进行数据同步,可以在 dmctl 内使用以下命令停止同步任务:
» stop-task test
其中的 test 是 task.yaml 配置文件中 name 配置项设置的任务名。
如果使用 DM-Ansible 部署 DM 集群时,正确部署了 Prometheus 与 Grafana,且 Grafana 的地址为 172.16.10.71,可在浏览器中打开 http://172.16.10.71:3000 进入 Grafana,选择 DM 的 dashboard 即可查看 DM 相关监控项。
DM 在运行过程中,DM-worker, DM-master 及 dmctl 都会通过日志输出相关信息。各组件的日志目录如下:
--log-file 设置。如果使用 DM-Ansible 部署 DM,则日志目录位于 DM-master 节点的 {ansible deploy}/log/dm-master.log。--log-file 设置。如果使用 DM-Ansible 部署 DM,则日志目录位于 DM-worker 节点的 {ansible deploy}/log/dm-worker.log。来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3118792/ ,如需转载,请注明出处,否则将追究法律责任。