2013-03-26 89 views
1

我有一个使用MySQL存储数据的Web应用程序。 网络应用程序是内部的(不可通过互联网)。跨数据库的MySQL数据库同步

我现在必须跨3个(也可能更多)地点(分支机构)部署此应用程序。 他们需要能够同步数据(在一个位置创建的条目在其他分支位置可用)。

要求

  • 每个位置读取和本地写入/为自己的网络上
  • 数据库同步每天一个(可能通过通过SSH脚本)的Web应用程序+ mysql数据库的本地实例这样每个地点都有相同的数据。

我能够解决这个问题(迄今为止)的唯一方法是创建UUID(唯一标识符)并用源位(用于起始位置)和同步位(新= 0 ,synced = 1),然后写一个脚本,我每晚SSH SSH到每个位置,并添加=我的源和同步= 0到每个位置的行...我意识到这是蛮横的,不是很优雅/可靠,但我不确定还有什么要做。

客户端担心,如果互联网连接失败,他希望应用能够在本地运行,但其他分支(通过夜间脚本或其他方式)仍然会同步。正如我所说,今年晚些时候总共有3个地点,可能还会有更多地点。

任何意见的建筑将不胜感激。

PS。由于安全问题,我没有将数据库连接到互联网。但我愿意接受所有建议。

谢谢。

+0

如果您的数据没有删除或更新,那么每晚只需插入新行就可以了...但如果有更新或删除操作,如果您尝试执行操作,则会遇到很多麻烦它手工。检查参考手册中的'复制':http://dev.mysql.com/doc/refman/5.6/en/replication.html – Barranka 2013-03-26 21:50:38

+0

正确。如果发生变化,将会带来巨大的痛苦(即使没有人预测到,这是一种危险的情况) – 2013-03-26 22:16:39

回答

1

您的客户在这样的体系结构决策中可能会花费额外的硬件,开发和维护成本。除非他们有任务关键的数据输入需求,否则复制所有分支机构位置的硬件堆栈可能有点疯狂。

这就是说,他们仍然需要通过开放的互联网传输数据,以便将数据从服务器复制到服务器,除非他们拥有自己的VPN,您可以在其中进行设置。试图让一些日常流程迁移/合并数据应该是您的头脑中的一面红旗,并且是一个完全不起动的人。这是一个非常复杂的问题。您可能需要的是某种主 - 主数据库复制群集。幸运的是,MySQL为您提供了执行此操作的能力。不幸的是,设置和正确设置可能很复杂,如果您不得不在这里提出这个问题,可能会对您有些挑战。

就数据库安全而言,只要您采取适当的预防措施来保护服务器,就没有理由担心将MySQL数据库托管在Internet上。可能会在网络级别启动,只允许访问端口3306(和22用于SSH访问),并且只允许访问Web应用程序服务器的IP地址。这也将包括设置MySQL用户帐户只接受来自您将访问的特定已知主机的流量。

+0

这是一家拥有3个地点的医疗办公室。他们希望能够跨地点共享电子海图。目前硬件并不是非常昂贵,Synology服务器(每个地点约1500美元= ok)。他们还使用服务器作为本地文件服务器,因此他们仍然计划在硬件上。我可以打开端口3306和22,并将其限制为来自每个位置的静态IP。诀窍在于本地读/写方法,然后进行更新。我知道同步是非常困难的。我试图像疯了一样研究这个。 – 2013-03-26 22:21:07

+0

我确实在Synology上运行了VPN服务器,并且我在每台计算机上使用VPN来与家中的数据库一起工作。我也有SSH运行。 – 2013-03-26 22:22:50

+0

我也在考虑进行此设置:1.读取本地(速度),2.写入主服务器(其中一个位置)。 3.创建一个脚本,在每天结束时将主数据库重新分配到每个位置,以便全部更新。这里的问题又是互联网需要启动和运行。他们非常害怕它下降,并且由于时代华纳的沮丧,他们无法看到病人。 – 2013-03-26 22:28:02