MySQL和SQL Server之间的单向同步

时间:2014-10-30 16:28:05

标签: mysql sql-server sync

我在MySQL上有一个表A,在SQL Server上有一个表B.

现在,我需要保持B与A(单向)同步,但B应该"始终"仍然可以查询(现在,一秒的停机时间赢了,不会伤害任何人......)。同步应该每小时进行一次。

有些情景会浮现在脑海中:

  • 检查A是否有更新/插入/删除的行,然后在B中更新这些行(可能会变得复杂);
  • 截断B,然后用A中的数据再次填充(可能需要一段时间并锁定B);
  • 使用A中的数据填充C,然后删除B并将C重命名为B(看起来很脏);
  • ...

怎么办?

供参考:我尝试过的第一个解决方案是使用OPENQUERY来显示A的数据,但是性能并不高。

可能有一些商业产品可以做到这一点,但我只想在SQL Server工作中这样做。

1 个答案:

答案 0 :(得分:1)

不是在同步时检查A的更改,而是在A上创建一个触发器,用另一个表A1填充只有更改。然后,您的同步作业仅从A1读取更改,并且只需使用这些更改来更新B.当您的同步作业从A1读取一行时,它会删除该行。

因此,A1是从A到B的挂起更改的队列,如果您决定需要以超过每小时一次的速度同步,则应该(希望)正常扩展。