基本需求
- 支持mysql/oracle的异构数据库的双向回环,早期有变态需求:杭州是mysql,美国是oracle,需要做双向同步。
- 需要支持级联同步,比如A<->B->C,A同步到B的数据,不能从B回到A,但需要同步到C
实现思路
- 利用事务机制,在事务头和尾中插入otter同步标识
解析时识别同步标识,判断是否需要屏蔽同步
几点注意:基于标准SQL实现可以支持mysql/oracle等异构数据库的双向同步
- 事务完整解析&完整可见性事务被拆开同步,会出现部分回环同步,数据不一致. 比如一个事务被拆分为了3截,中间一截因为没有事务头和尾的标识,如果发生同步了,就会导致数据不一致.
实现示意图
原文: https://github.com/alibaba/otter/wiki/Otter%E5%8F%8C%E5%90%91%E5%9B%9E%E7%8E%AF%E6%8E%A7%E5%88%B6