使用 TiDB Binlog 同步数据到 MySQL 步骤
本文档适用于 TiDB 集群已经搭建完成并且已有部分数据在集群中,需要搭建 TiDB Binlog 将 TiDB 中数据同步到 MySQL 的情况 。
说明:
- $ 符号表示命令需要在服务器命令行中执行
- ${xxx} 表示需要替换成实际对应的内容
步骤一、扩容 pump 节点
- 准备扩容 pump 节点的拓扑文件
1 2 3 4 5
| $ cat scale-pump.yaml pump_servers: host: 10.55.12.31 host: 10.55.12.32 host: 10.55.12.33
|
- 执行扩容命令
1
| $ tiup cluster scale-out ${cluster_name} ./scale-pump.yaml -uroot -p
|
- 修改 TiDB 集群,开启 Binlog
1 2 3 4 5 6
| $ tiup cluster edit-config ${cluster_name} 在 server_config 部分添加对应的配置 server_configs: tidb: binlog.enable: true binlog.ignore-error: true
|
- 滚动重启 tidb-server 节点开始 binlog
1
| $ tiup cluster reload ${cluster_name} -R tidb
|
- 查看集群状态
1
| $ tiup cluster display ${cluster_name}
|
步骤二、全量数据迁移
- 使用 mydumper 全量初始化导出
1 2 3
| $ wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.tar.gz $ tar -xzf tidb-enterprise-tools-latest-linux-amd64.tar.gz && cd tidb-enterprise-tools-latest-linux-amd64 $ ./bin/mydumper -h ${source ip} -P 4000 -u root -t 16 -F 64 --skip-tz-utc -o ./tmp/all_backup
|
- 获取 initial_commit_ts
1 2 3 4 5 6 7
| $ cat /tmp/all_backup/metadata Started dump at: 2019-12-13 15:16:44 SHOW MASTER STATUS: Log: tidb-binlog Pos: 413196983854432259 GTID: Finished dump at: 2019-12-13 15:16:48
|
Pos 413196983854432259 即为备份的 tso 时刻点值,后续 Binlog 增量同步时需要从这个时间点开始同步
- 备份数据复制到 MySQL 节点并使用 loader 将全备数据导入到目标库中
1
| $ ./bin/loader -h ${target ip} -u root -P 3306 -t 32 -d /tmp/all_backup
|
步骤三、扩容 drainer 节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 1. 准备扩容 drainer 节点的拓扑文件 $ cat scale-drainer.yaml drainer_servers: - host: 10.0.1.12 # commit_ts 填写 mydumper 备份文件中 metadata 记录的 tso 号信息 commit_ts: 413196983854432259 config: syncer.db-type: "mysql" syncer.to.host: "10.0.1.12" syncer.to.user: "root" syncer.to.password: "" syncer.to.port: 3306 syncer.relay.log-dir: "/dir/to/save/log" syncer.relay.max-file-size: 10485760
|
- 通过 tiup 执行扩容命令
1
| $ tiup cluster scale-out ${cluster_name} ./scale-drainer.yaml -uroot -p
|
- 查看集群节点状态
1
| $ tiup cluster display ${cluster_name}
|
步骤四、检查增量数据同步情况
在上游 TiDB 执行一些变更操作,在下游 MySQL 中查询验证数据是否正常同步。