基本需求

  • 支持mysql/oracle的异构数据库的双向回环,早期有变态需求:杭州是mysql,美国是oracle,需要做双向同步。
  • 需要支持级联同步,比如A<->B->C,A同步到B的数据,不能从B回到A,但需要同步到C

实现思路

  • 利用事务机制,在事务头和尾中插入otter同步标识
  • 解析时识别同步标识,判断是否需要屏蔽同步
    几点注意:

  • 基于标准SQL实现可以支持mysql/oracle等异构数据库的双向同步

  • 事务完整解析&完整可见性事务被拆开同步,会出现部分回环同步,数据不一致. 比如一个事务被拆分为了3截,中间一截因为没有事务头和尾的标识,如果发生同步了,就会导致数据不一致.

实现示意图

Otter双向回环控制 - 图1

原文: 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