Skip to content

Otter双向回环控制

agapple edited this page Aug 17, 2013 · 1 revision

基本需求

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

实现思路

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

几点注意:

  • 基于标准SQL实现
    可以支持mysql/oracle等异构数据库的双向同步
  • 事务完整解析&完整可见性
    事务被拆开同步,会出现部分回环同步,数据不一致. 比如一个事务被拆分为了3截,中间一截因为没有事务头和尾的标识,如果发生同步了,就会导致数据不一致.

实现示意图