想使用ticdc双向复制做双机房灾备。不确定其是否会复制回环。看了论坛的文章,回答的结果不一。有没有大佬甩出源码看看。本人小白,不知道咋找。若是能传授寻找源码的方法,感激不尽
官方文档里已经有明确解决方案了。
https://docs.pingcap.com/zh/tidb/stable/ticdc-bidirectional-replication/#ticdc-双向复制
https://github.com/pingcap/tiflow/blob/d8401f070e5c50b0766e112358944abb5c75e8dd/pkg/sink/mysql/db_helper.go#L265
https://docs.pingcap.com/zh/tidb/stable/system-variables/#tidb_cdc_write_source-从-v650-版本开始引入
嗯嗯,但是文章中没有明确给出,是否会回环复制。也就是az1数据通过cdc同步到az2后,az2会不会又将这些变更通过cdc再同步会az1,从而形成复制回环
对的,是bdr模式支持。但是官网文档没有明确说明,bdr mode能够避免回环,所以想求证下
之前有人提过,应该是已经解决了。
线上准备使用的,所以想获知官方的确认信息。或者源码
在设置 tidb_cdc_write_source
后,tikv 的 txn_source
这个变量会存储 tidb_cdc_write_source
的值,可以根据这个值来判断是否是 cdc 写入的数据,在 cdc 侧,如果开启了 bdr mode,会在请求数据时,将 ChangeDataRequest 的 FilterLoop 设置为 true 来过滤数据。
相关代码:https://github.com/pingcap/tidb/blob/23fcd0e6943063102b3af151e9a68f96c2955cbe/pkg/kv/option.go#L252
https://github.com/pingcap/tiflow/blob/d8401f070e5c50b0766e112358944abb5c75e8dd/cdc/kv/shared_client.go#L508
https://github.com/tikv/tikv/blob/95a06da9a9365ce5b32ec670eb6aac44ebb45229/components/cdc/src/delegate.rs#L820