一、安装(TiUP)工具 下载并安装
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
更新环境变量
source ~/.bash_profile
查看版本
tiup --version
二、安装(TiDB Data Migration) 下载安装包
tiup install dm dmctl
生成配置文件
tiup dm template > dm-topology.yaml
编辑配置文件
vim dm-topology.yaml
--- global: user: "tidb" ssh_port: 22 deploy_dir: "/home/tidb/dm/deploy" data_dir: "/home/tidb/dm/data" master_servers: - host: 192.168.0.127 worker_servers: - host: 192.168.0.127 monitoring_servers: - host: 192.168.0.127 port: 7090 grafana_servers: - host: 192.168.0.127 port: 7000 alertmanager_servers: - host: 192.168.0.127 web_port: 7093 cluster_port: 7094
这里为单机模式,监控端口需要更改,不然容易与TiDB集群冲突 部署DM
tiup dm deploy dm-test v2.0.7 ./dm-topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]
通过 TiUP DM 部署的集群名称为 dm-test
。
部署版本为 v2.0.7
,可以通过执行 tiup list dm-master
来查看 TiUP 支持的最新版本。--user root
:指定具有 sudo 权限的用户完成集群部署[]
号里的 -p
和-i
为可选项,若已设置免密登录就不需填写,否则选择其一。-p
进入密码交互窗口,-i
指定秘钥位置
查看 TiUP 管理DM情况
tiup dm list
启动DM 集群
tiup dm start dm-test
输出 Started cluster dm-test successfully
表示启动成功。
查看DM 集群信息
tiup dm display dm-test
Status 状态信息为 Up
,说明集群状态正常;状态为 Down/inactive
,表示未启动/不活跃。
三、同步mysql数据
创建MySQL数据源
vim mysql-source-01.yaml
配置MySQL数据源
source-id: "mysql-source-01" # DM-worker 是否使用全局事务标识符 (GTID) 拉取 binlog。使用前提是在上游 MySQL 已开启 GTID 模式。 enable-gtid: false from: host: "172.16.10.81" user: "root" password: "VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=" port: 3306
加载配置到DM集群
tiup dmctl --master-addr 127.0.0.1:8261 operate-source create ./mysql-source-01.yaml
配置同步任务
根据不同场景,编辑任务配置文件vim task.yaml
,点击查看详细配置
name: merge_task shard-mode: "pessimistic" task-mode: all target-database: host: "127.0.0.1" port: 4000 user: "root" password: "" mysql-instances: - source-id: "mysql-source-01" block-allow-list: "block-allow-01" route-rules: ["route-rule-01","route-rule-02"] block-allow-list: block-allow-01: do-dbs: ["wisdom_test"] do-tables: - db-name: "wisdom_test" tbl-name: "*" routes: route-rule-01: schema-pattern: "wisdom_test" target-schema: "wisdom_demo" route-rule-02: schema-pattern: "wisdom_test" table-pattern: "wisdom_attendance_*" target-schema: "wisdom_demo" target-table: "wisdom_attendance"
启动同步任务
tiup dmctl --master-addr 127.0.0.1:8261 start-task ./task.yaml
查询同步任务
tiup dmctl --master-addr 127.0.0.1:8261 query-status
删除同步任务
tiup dmctl --master-addr 127.0.0.1:8261 stop-task merge_task
解决问题步骤
1. 出现错误时,需查询任务query-status
具体信息
tiup dmctl --master-addr 127.0.0.1:8261 query-status merge_task
2. 其任务stage
状态为Paused
{ "subTaskStatus": [ { "name": "merge_task", "stage": "Paused", "result": {} } ] }
3. 解决问题后,可以通过resume-task
命令进行恢复
tiup dmctl --master-addr 127.0.0.1:8261 resume-task merge_task
DDL语句出错
迁移过程中,上游执行了 TiDB 不支持的 DDL 语句并迁移到了 DM,造成迁移任务中断。
如果业务能接受下游 TiDB 不执行该 DDL 语句,则使用 handle-error
跳过对该 DDL 语句的迁移以恢复迁移任务。
如果业务能接受下游 TiDB 执行其他 DDL 语句来作为替代,则使用 handle-error
替代该 DDL 的迁移以恢复迁移任务。
重置同步任务
清空下游数据库中数据
重启 source 并关闭 gtid 或 relay
重建任务并通过 start-task task.yaml --remove-meta
重新同步,或者重命名任务名
监控同步任务
http://127.0.0.1:7000 进入 Grafana http://127.0.0.1:7090 进入 Prometheus http://127.0.0.1:7093 进入 Alertmanager