安全的数据库同步mysql

时间:2015-11-11 02:22:14

标签: mysql database synchronization

我们有一个中央服务器,它只接收来自其他服务器的数据(目前,中央服务器仅用于显示报告和图形)。

因此,我们有多个安装位于不同的地方(不在同一网络上),数据将写在这些地方(小型服务器)

我们需要在每台服务器上获取这些添加/修改/删除的数据,并使用这些数据更新中央服务器。

我们已经看过了SymmetricDS

我们想要做的是,在数据库中为尚未同步的每一行(添加/修改/删除)设置一个标志,并为设置了标志的每一行创建一个带REPLACE INTO的查询。

这是做这件事的好方法吗?或者,你有任何其他想法吗?

更新:

并非所有客户都可以访问互联网连接。所以这些服务器在拥有之前不会同步。

2 个答案:

答案 0 :(得分:0)

我认为触发器在您的情况下效果最佳。除非您希望一次更新所有内容,否则您的解决方案将会执行

答案 1 :(得分:0)

做了类似的事情,这里有一些提示;

  • 考虑使用UUID作为标识符,这将允许您合并来自多个源的数据而不会发生冲突,如果这不可能是自动增量具有偏移量和增量,那么对于isntance,您可以增加100(如果小于那里有100个系统),db 1从偏移1开始,db 2在偏移2处开始,至少所有异地数据库都有不同的id
  • 使用软删除,有' is_deleted'在每张桌子上标记,只需从查询或结果中排除这些
  • 确保您要同步的任何表格都已更新'使用Comperator
  • 创建的字段
  • 导入过程将是这样的
    • 备份远程表
    • 恢复到临时数据库
    • 从临时数据库中获取最多(' udpated')时间,将其保存为下次导入
    • 沿着compare()
    • 行运行替换

我已经使用此程序使国际化的数据库保持最新,只有极少数问题。