问题:
使用 br+ticdc 创建主从 tidb集群,是否可以在主从tidb集群中同时写数据
在从写的不能同步到主,主写的会同步到从。没明白为啥要在从写,可能会被主写的覆盖
背景:
希望把A库从 tidb_old 迁移到 tidb_new
1、数据迁移:br 备份恢复 + cdc 实时同步
2、写入切换:
a、服务_new 连接 tidb_new,服务_old 连接 tidb_old,初始客户端访问的是服务_old
b、暂停 cdc 同步
c、从调度级别让客户端直接去访问服务_new
问题就是可不可以在写入切换的时候不暂停 cdc 同步,因为可能有一两分钟数据是否会存在冲突
这问题的核心应该是数据冲突了,业务能接受吗?
数据不能冲突,业务侧也没有支持数据源热切开关,或者读写关闭等
环形复制方案,有一些限制的,当然业务上支持肯定可以的
参考文档:
https://docs.pingcap.com/zh/tidb/v6.0/bidirectional-replication-between-tidb-clusters#集群间双向同步
但是需要把之前 binlog 的组件 换成 ticdc
这样不就不一致了吗?
就是会不一致
不停cdc还是有风险,举个例子,cdc同步的时间如果比new提交的时间慢,就会老数据覆盖新的。不了解你们的业务场景,单纯从时间上分析下。
写入切换时
1、停止cdc 的风险
可能有一两分钟的数据滞留在old集群
2、不停止cdc的风险
表面上不会出现数据滞留在old集群,但是可能因为cdc慢,会覆盖new系统中的数据 造成不一致
综上:停或不停cdc都会有数据不一致的风险,那么就把风险降到可控。
br全量+br增量的方案。
1、最后一次的br增量的时间控制在1分钟内。
2、old只读,br增量,切换到新集群。
这个方案可以评估一下。
目前不支持。
如果是为了替换集群,先把读业务切换到新集群,然后找窗口切换写流量。如果只是加个备份集群可以把部分读业务切换过去。
可以先主库设置只读,同步完后,业务切到从库
工具应该是支持的啊,只是最终效果应该会有坑