【 TiDB 使用环境】生产环境
【 TiDB 版本】v5.0.0
【复现路径】
全量+增量同步的操作步骤,我操作过两次最后都发现增量启动之后数据不对了。
第一次:
1、上游关闭drainer
2、上游scale-in drainer 节点
3、上游修改gc生命周期为24h
4、上游dumpling全量数据,记住metadata文件中的pos值
5、下游删除所有数据(drop database再create database,恢复成空白环境)
6、下游导入全量数据文件
7、修改下游tidb_binlog.checkpoint表的commitTS为metadata文件中的pos值
8、上游scale-out drainer,参数包含了commit_ts ,值为metadata文件中的pos值,scale-out 成功后drainer会自动启动
9、发现drainer并没有采用初始化参数commit_ts的值,表现在drainer.toml中就是init-commit-ts是一个很早之前的binlog值,感觉像是pd取的,然后它还把下游表里的commitTS修改了
10、发现下游数据开始缺失,连续查询某表的count记录一直在减少。
第二次:
1、上游关闭drainer,使用tiup 去stop
2、stop成功
3、上游修改gc生命周期为24h
4、上游dumpling全量数据,记住metadata文件中的pos值
5、下游删除所有数据(drop database再create database,恢复成空白环境)
6、下游导入全量数据文件
7、修改下游tidb_binlog.checkpoint表的commitTS为metadata文件中的pos值
8、使用tiup在线修改配置的drainer部分,设置commit_ts为metadata文件中的pos值,然后启动drainer
9、发现drainer并没有采用commit_ts的值或者下游tidb_binlog.checkpoint表的commitTS值,表现在drainer.toml中就是init-commit-ts是一个很早之前的binlog值,感觉像是pd取的。然后它还把下游表里的commitTS修改了
10、发现下游数据开始缺失,连续查询某表的count记录一直在减少。
【遇到的问题:问题现象及影响】
全量同步了两次再开启drainer,下游都遇到数据缺失,然后上游drainer跑一段时间之后还会报ddl错误或者主键冲突