主从集群是否可以双写

问题:
使用 br+ticdc 创建主从 tidb集群,是否可以在主从tidb集群中同时写数据

1 个赞

在从写的不能同步到主,主写的会同步到从。没明白为啥要在从写,可能会被主写的覆盖

1 个赞

背景:
希望把A库从 tidb_old 迁移到 tidb_new
1、数据迁移:br 备份恢复 + cdc 实时同步
2、写入切换:
a、服务_new 连接 tidb_new,服务_old 连接 tidb_old,初始客户端访问的是服务_old
b、暂停 cdc 同步
c、从调度级别让客户端直接去访问服务_new
问题就是可不可以在写入切换的时候不暂停 cdc 同步,因为可能有一两分钟数据是否会存在冲突

1 个赞

这问题的核心应该是数据冲突了,业务能接受吗?

1 个赞

数据不能冲突,业务侧也没有支持数据源热切开关,或者读写关闭等

1 个赞

环形复制方案,有一些限制的,当然业务上支持肯定可以的
参考文档:

https://docs.pingcap.com/zh/tidb/v6.0/bidirectional-replication-between-tidb-clusters#集群间双向同步

但是需要把之前 binlog 的组件 换成 ticdc

1 个赞

这样不就不一致了吗?

1 个赞

就是会不一致

1 个赞

不停cdc还是有风险,举个例子,cdc同步的时间如果比new提交的时间慢,就会老数据覆盖新的。不了解你们的业务场景,单纯从时间上分析下。

1 个赞

写入切换时
1、停止cdc 的风险
可能有一两分钟的数据滞留在old集群
2、不停止cdc的风险
表面上不会出现数据滞留在old集群,但是可能因为cdc慢,会覆盖new系统中的数据 造成不一致

综上:停或不停cdc都会有数据不一致的风险,那么就把风险降到可控。

2 个赞

br全量+br增量的方案。
1、最后一次的br增量的时间控制在1分钟内。
2、old只读,br增量,切换到新集群。

这个方案可以评估一下。

1 个赞

目前不支持。

如果是为了替换集群,先把读业务切换到新集群,然后找窗口切换写流量。如果只是加个备份集群可以把部分读业务切换过去。

可以先主库设置只读,同步完后,业务切到从库

工具应该是支持的啊,只是最终效果应该会有坑