TiDB 主从集群的数据校验
在你使用 TiDB Binlog 搭建 TiDB 的主从集群,Drainer 在把数据同步到 TiDB 时,保存 checkpoint 的同时也会将上下游的 TSO 对应关系保存为 ts-map。在 sync-diff-inspector 中配置 snapshot 即可对 TiDB 主从集群的数据进行校验。
获取 ts-map
在下游 TiDB 中执行以下 SQL 语句:
1. select * from tidb_binlog.checkpoint;
1. +---------------------+--------------------------------------------------------------------------------------------------------------+
2. | clusterID | checkPoint |
3. +---------------------+--------------------------------------------------------------------------------------------------------------+
4. | 6711243465327639221 | {"commitTS":409622383615541249,"ts-map":{"primary-ts":409621863377928194,"secondary-ts":409621863377928345}} |
5. +---------------------+--------------------------------------------------------------------------------------------------------------+
从结果中可以获取 ts-map 信息。
配置 snapshot
使用上一步骤获取的 ts-map 信息来配置上下游数据库的 snapshot 信息。其中的 Datasource config 部分示例配置如下:
1. ######################### Datasource config ########################
2. [data-sources.uptidb]
3. host = "172.16.0.1"
4. port = 4000
5. user = "root"
6. password = ""
7. snapshot = "409621863377928194"
9. [data-sources.downtidb]
10. host = "172.16.0.2"
11. port = 4000
12. user = "root"
13. password = ""
14. snapshot = "409621863377928345"
注意事项
- Drainer 的
db-type需要设置为tidb,这样才会在 checkpoint 中保存ts-map。 - 需要调整 TiKV 的 GC 时间,保证在校验时 snapshot 对应的历史数据不会被执行 GC。建议调整为 1 个小时,在校验后再还原 GC 设置。
- 以上配置只展示
Datasource config部分,并不完全。完整配置请参考 sync-diff-inspector 用户文档。
