我正在使用php和mysql开发一个Web应用程序。该应用程序在三个不同的位置运行。
应用程序在总公司和分支机构的本地服务器上运行。互联网连接不是每次都可用。客户通过这三个地点下订单。我的问题是,我想在这三个数据库之间同步数据并使这三个数据库保持最新。有没有办法做到这一点?
答案 0 :(得分:12)
我正在使用SymmetricDS来同步数据库。它能够在节点(服务器/数据库)之间同步或复制数据,只推送或拉动您定义的数据。它是一个基于Java的软件,它有一个陡峭的学习曲线,但它确实起到了作用。
SymmetricDS可以设置为将更改从一个节点推送到另外两个节点,从而确保所有三个节点都包含相同的数据。您需要确保主键是唯一键,而不是数据库分配的自动递增值,因为这很可能是您要同步的三个不同数据库中的问题。
软件在数据库上安装触发器,并在执行INSERT,UPDATE或DELETE(和其他)操作时捕获更改。然后在其他节点上调用这些数据更改。该软件需要在每个位置运行,但不需要始终可用的互联网连接。
我开始担心所有表格上的触发器会降低性能,但这根本不是问题。我不能说在安装触发器之后我们发现了任何性能问题。
有关详细信息,请查看http://symmetricds.org/。
答案 1 :(得分:2)