huixiang
(huixiang)
1
【TiDB 使用环境】生产环境
【TiDB 版本】
【操作系统】
【部署方式】
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
问题:三个集群1主2从(A->B,A->C同步),如何切换成A->B->C的同步
我有一个A(5.1)实例有2个从集群,通过TICDC同步B(7.5)/C(7.5)。目前同步架构是如下:
A->B, A->C。
因为我计划升级完成后未来下线A集群,并把B做为主库,C做为B的从库(即B->C)。
我是否可以这样操作?
- 停止A->C的 CDC同步,记录点位。
“tso”: 460530332467200001 ,“checkpoint”: “2025-09-02 11:30:00”
- 开启B->C的 CDC同步,使用刚才停的点位
“checkpoint”: “2025-09-02 11:30:00”
- 停止A->B的同步并下线A。
【资源配置】
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
1 个赞
huixiang
(huixiang)
2
我尝经有过类似的场景,这样操作发现有数据一致的问题:
1)B->C 是主从一直实时同步。
2)B要新增一个A实例的a库。我使用A实例a库的全量备份,br备份分别还原到B实例/C实例。
3)新增B.a->C.a的增量同步。
4)开启A.a->B.a的增量实时同步。
5) 比较B.a 和C.a 的数据。
发现B.a 和C.a 的数据没有完全一致(B.a=A.a,B.a>C.a),然后只好使用B.a的全备导入C.a再重新同步。B.a->C.a;
1 个赞
diwing
(Ti D Ber R Qstj35v)
3
不行。
a-> c tso,checkpoint记录是a的,a-> b tso,checkpoint记录也是a的
b-> c 需要有记录b的tso和checkpoint
重新做一个b → c 的同步吧
1 个赞
WalterWj
(王军 - PingCAP)
4
找不到对应关系就停机搞。
不能停机的话,重做确实是一个办法。
1 个赞
这个没有做过。之前做个 mysql原生复制的A->B–>C拆成A->B,A->C;
思路:
1、A停止写入
2、等待B,C应用了所有的A的binlog
3、记录A的binlog,pos
4、change master to A
1 个赞
舞动梦灵
(Ti D Ber Nckmz Hmh)
6
这个可以,A停止写入。不就相当于停机了么。3套集群全部不会有新数据。然后直接修改就行
1 个赞
Liucy
(Liucy)
7
这个案例,B.a 的增量没有同步到 C.a,比较奇怪,回头试试;
1 个赞
独善其身
(Ti D Ber Bi Rqfz5 K)
11
不停机搞的话,需要非常注意数据的tso序列情况了哦
system
(system)
关闭
13
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。