php – 托管和本地生产服务器之间的双向mySQL数据库同步

所以场景是这样的:

我在Windows 2008 Server上运行的本地服务器上有一个mySQL数据库.该服务器仅供我们网络上的用户访问,并包含我们公司的生产计划信息.我在运行linux的托管服务器上运行的本质上是相同的数据库,这意味着可以在线访问,以便我们的客户可以连接到它并更新他们的订单.

我想要做的是数据库中两个表的双向同步,以便两个数据库中的订单都是最新的,以及从我们的服务器到托管的一个表与其他表中的数据的单向同步.数据库的前端是用PHP编写的.我会说到目前为止我正在使用的东西,如果我能在正确的轨道上咆哮或咆哮错误的树,人们可以让我知道,我将不胜感激,并希望能指出我正确的方向.

我的第一个想法是(在PHP脚本的末尾生成订单表的更改)导出已经进行的更改,可能使用INSERT到OUTFILE WHERE account = account或类似的东西.这将使文件的大小保持较小,而不是导出整个订单表.我所依赖的是如何(A)将其导出为SQL文件而不是CSV(B)如何包含有关已删除内容以及插入内容的信息(C)如何获取此文件在另一台服务器上并执行SQL语句.

我目前正在研究SSH和PowerShell,但似乎无法确定这将如何工作的坚实愿景.我正在研究cron作业和Windows计划任务.但是,最好是在某种程度上更新只是在发生变化时发生,而不是按计划进行,以使它们实时同步,但我无法想象那个.我想每隔几分钟至少运行一次预定的任务/ cronjob,但我想它需要做的就是检查是否有任何需要放到对方服务器上的转储文件,不一定要同步任何事情都没有改变.

有没有人做过这样的事情?我们正在讨论一次在表中更改/添加/删除从1(最小)到160行(最大).当我继续研究我的选择时,我很想听听人们对这件事的看法.谢谢.

另外,为了澄清,我不确定其中一个是真的是主人还是奴隶.没有一个总是准确的数据,它更多是最新的数据.

 1更多注意
我现在想到的另一件事是在订单更新脚本的末尾添加另一个指向其他服务器数据库的config / connect脚本,然后重新运行完全相同的查询,因为它们具有相同的结构.现在听起来很容易……想法?

最佳答案
您可能不知道MySQL本身可以在机会上彼此同步的单独服务器上配置数据库.有关详细信息,请参阅here;另外,搜索MySQL环复制.设置稍微脆弱,需要你学习一下MySQL replication.或者你可以建立一个集群;更高的学习曲线,但不那么脆弱.

如果你真的想自己动手,你就会在设计方面冒险.您必须解决的最大问题不是如何使其工作,而是在其中一台服务器停机一小时或您的DSL调制解调器熔化或硬盘驱动器填满后,如何使其正常工作……

转载注明原文:php – 托管和本地生产服务器之间的双向mySQL数据库同步 - 代码日志