TIDB搭建双集群主从复制
官网参考文档
https://docs.pingcap.com/zh/tidb/v6.5/replicate-between-primary-and-secondary-clusters#搭建双集群主从复制
TiCDC 安装部署与集群运维
https://docs.pingcap.com/zh/tidb/v6.5/deploy-ticdc
-
备份数据。
在上游集群中执行 BACKUP 语句备份数据:
1
MySQL [(none)]> BACKUP DATABASE * TO '`s3://backup?access-key=minio&secret-access-key=miniostorage&endpoint=http://${HOST_IP}:6060&force-path-style=true`' RATE_LIMIT = 120 MB/SECOND;
1
2
3
4
5
6+----------------------+----------+--------------------+---------------------+---------------------+
| Destination | Size | BackupTS | Queue Time | Execution Time |
+----------------------+----------+--------------------+---------------------+---------------------+
| local:///tmp/backup/ | 10315858 | 431434047157698561 | 2022-02-25 19:57:59 | 2022-02-25 19:57:59 |
+----------------------+----------+--------------------+---------------------+---------------------+
1 row in set (2.11 sec)备份语句提交成功后,TiDB 会返回关于备份数据的元信息,这里需要重点关注 BackupTS,它意味着该时间点之前数据会被备份,后边的教程中,将使用 BackupTS 作为数据校验截止时间和 TiCDC 增量扫描的开始时间。
-
恢复数据。
在下游集群中执行 RESTORE 语句恢复数据:
1
mysql> RESTORE DATABASE * FROM '`s3://backup?access-key=minio&secret-access-key=miniostorage&endpoint=http://${HOST_IP}:6060&force-path-style=true`';
1
2
3
4
5
6+----------------------+----------+--------------------+---------------------+---------------------+
| Destination | Size | BackupTS | Queue Time | Execution Time |
+----------------------+----------+--------------------+---------------------+---------------------+
| local:///tmp/backup/ | 10315858 | 431434141450371074 | 2022-02-25 20:03:59 | 2022-02-25 20:03:59 |
+----------------------+----------+--------------------+---------------------+---------------------+
1 row in set (41.85 sec) -
创建一个 TiCDC 同步任务,实时同步主集群数据到从集群
1 | tiup cdc cli changefeed create --server=http://172.20.192.108:8300 --sink-uri="mysql://root:Admi*@172.20.192.101:4000" --changefeed-id="upstream-to-downstream" --start-ts="445309452101091541" |
以上命令中:
--server
:TiCDC 集群任意一节点的地址--sink-uri
:同步任务下游的地址--start-ts
:TiCDC 同步的起点,需要设置为实际的备份时间点(也就是第 2 步:迁移全量数据提到的 BackupTS)
使用 TiCDC 命令行工具来查看集群状态
tiup ctl:v6.5.0 cdc capture list --server=http://172.20.192.107:8300
查询同步任务列表 (管理 Changefeed)
使用以下命令来查询同步任务列表:
1 | curl -X GET http://172.20.192.107:8300/api/v1/changefeeds |
checkpoint
即为 TiCDC 已经将该时间点前的数据同步到了下游。state
为该同步任务的状态:normal
:正常同步stopped
:停止同步(手动暂停)error
:停止同步(出错)removed
:已删除任务(只在指定--all
选项时才会显示该状态的任务。未指定时,可通过query
查询该状态的任务)finished
:任务已经同步到指定target-ts
,处于已完成状态(只在指定--all
选项时才会显示该状态的任务。未指定时,可通过query
查询该状态的任务)。
暂停同步任务等参考官网
https://docs.pingcap.com/zh/tidb/stable/ticdc-open-api-v2
暂停
1 | curl -X POST http://172.20.192.107:8300/api/v2/changefeeds/upstream-to-downstream/pause |
恢复
1 | curl -X POST http://172.20.192.107:8300/api/v2/changefeeds/upstream-to-downstream/resume -d '{}' |
删除
1 | curl -X DELETE http://172.20.192.107:8300/api/v2/changefeeds/prod-to-k8s |
1 | tiup cdc cli changefeed create --server=http://172.20.192.108:8300 --sink-uri="mysql://root:Ad*@172.20.192.233:32570" --changefeed-id="prod-to-k8s" --start-ts="449753049437044846" --disable-gc-check |