MySQL数据库跨位置同步



我有一个使用MySQL存储数据的web应用程序。web应用程序是内部的(不能通过互联网使用)。

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

需求
    web应用+ mysql数据库的本地实例
  • 每个位置在本地读写/在自己的网络上
  • 数据库每天同步一次(可能通过SSH脚本),以便每个位置都有相同的数据。

唯一的方法,我能够弄清楚这一点(到目前为止)是创建UUID(唯一标识符)和编码每一行与源位(起始位置)和同步位(新=0,同步=1),然后写一个脚本,我SSH到每个位置每晚和添加行=我的源和同步=0到每个位置…我意识到这是野蛮的,不是很优雅/可靠,但我不知道还能做什么。

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

如能提供建筑方面的建议,我将不胜感激。

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

谢谢。

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

话虽这么说,他们仍然需要在开放的互联网上移动数据,在服务器之间复制数据,除非他们有自己的VPN,你可以在其中设置。尝试使用一些日常流程来迁移/合并数据在您的脑海中应该是一个危险信号,并且完全不可能成功。这是一个非常复杂的问题。您可能需要的是某种主从数据库复制集群。幸运的是,MySQL为您提供了这样做的能力。不幸的是,设置和正确设置可能很复杂,如果你不得不在这里问这个问题,可能对你来说有点挑战。

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

最新更新