2011-11-03 108 views
4

之间的双向MySQL数据库同步所以情况是这样的:主持和本地生产服务器

我的Windows 2008服务器上运行的本地服务器上的MySQL数据库。服务器仅用于我们网络上的用户,并包含我们公司的生产计划信息。我拥有在运行linux的托管服务器上运行的基本相同的数据库,这意味着可以在线访问,因此我们的客户可以连接到它并更新它们的订单。

我想要做的是数据库中两个表的双向同步,以便两个数据库中的订单都是当前的,并且从我们的服务器到另一个数据库中的数据的同步表。数据库的前端是用PHP编写的。我会说到目前为止我正在处理的事情,如果人们能够让我知道我是在正确的轨道上,还是在错误的树上咆哮,并希望指引我朝着正确的方向,我将不胜感激。

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

我期待到SSH和PowerShell目前,但似乎无法制定准确地了解这会工作了坚实的愿景。我正在研究cron作业和Windows计划任务。然而,如果不知何故更新只是在发生变化时才发生,而不是按照实时进行同步的时间表进行,但我不能完全弄清楚这一点。我希望每隔几分钟至少运行一次计划任务/ cronjob,但我猜想所有需要做的工作是检查是否有任何转储文件需要放到对方服务器上,而不一定要同步如果没有任何改变,任何事

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

而且,我只想澄清,我不知道,如果其中之一确实是一个主机或从机。没有一个总是准确的数据,而是两个都需要的最新数据。

+1更多注意 我现在正在考虑的另一件事是在为了更新脚本的最后一面另一个配置增加/连接脚本指向其他服务器的数据库,然后重新运行完全相同的查询,因为它们具有相同的结构。现在,听起来很容易....想法?

回答

3

你可能不知道,MySQL的本身可以在不同的服务器上,伺机同步到彼此的数据库进行配置。有关详细信息,请参阅here;另外,搜索MySQL环形复制。该设置稍微脆弱,需要您学习一些关于MySQL replication。或者你可以建立一个集群;更高的学习曲线但不太脆。

如果你真的想自己滚吧,你在设计之前,你很冒险。你必须解决的最大问题不是如何使它工作,它是如何使其正确工作其中一台服务器关闭一小时后,或者您的DSL调制解调器熔化或硬盘驱动器填满或......

+0

哦,是的,我已经在冒险:-) !!!两个月前,我从来没有听说过PHP或mySQL,我们的生产调度系统由一个excel电子表格组成,并在整个地方发布,我们的在线订购被称为GoogleDocs。我们都走了很长的路。 –

+0

对于我们目前所处的位置,我正在用我最后的想法......我只是在本地服务器上运行查询,而不是重新连接到远程服务器并再次运行查询。这是直到我已经认识到所有这些复制东西的其余部分... –

+1

复制听起来比它更可怕。基本上,他们正在做你正在提出的建议,但他们已经找出并处理了所有(或至少大部分)边缘和失败案例。你在每一面添加大约10个咒语到mysql.ini,调整你的模式,确保防火墙是开放的,它应该在大多数故障后自动开始工作并自动修复。有保护它的细节以及不管怎样,但是无论你的系统如何工作,你都必须处理这些细节。 –

2

在本地启动查询和远程服务器可以是,如果连接中断的问题。对于本地存储在文件中的每个查询(例如GG-MM-DD-HH.sql)更好,然后在小时过期时每小时发送一次数据。例如,更新周期可以缩短为5分钟。

这样,如果连接断开,重新建立承担所有遗留的文件。 在文件末尾插入用于检查内容的CRC。

相关问题