我们正在各个商店运行Java PoS(销售点)应用程序,并使用MySql后端。我想让商店中的数据库与主机服务器上的数据库保持同步。
当商店发生某些变化时,应该在主机服务器上进行更新。我该如何实现这一目标?
答案 0 :(得分:59)
复制不是很难创建。
这里有一些很好的教程:
http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/
http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication
这里有一些简单的规则,你必须记住(当然还有更多,但这是主要概念):
这样,您就可以避免错误。
例如: 如果您的脚本插入主服务器和从服务器上的相同表中,则会出现重复的主键冲突。
您可以查看"奴隶"作为"备份"服务器与主服务器保存相同的信息但不能直接添加数据,只遵循主服务器的说明。
注意:当然你可以从主机读取,你可以写入从机,但要确保你不要写入相同的表(主机到从机和从机到主机)。
我建议您监控服务器以确保一切正常。
如果您需要其他帮助,请告诉我
答案 1 :(得分:22)
三种不同的方法:
经典客户端/服务器方法:不要在商店中放置任何数据库;只需让应用程序访问您的服务器。当然,如果你设置VPN更好,但只需将连接包装在SSL或ssh中是合理的。亲:这是数据库最初被认为的方式。 Con:如果你有高延迟,复杂的操作可能会变慢,你可能不得不使用存储过程来减少往返次数。
复制master / master:正如Zeus建议的@Book。缺点:设置稍微复杂一些(特别是如果你有几家商店),任何商店机器的破坏都可能会危及整个系统。优点:更好的响应性,因为读操作完全是本地的,写操作是异步传播的。
离线操作+同步步骤:在本地和不时(可能是每小时一次,每天,每周,等等)完成所有工作,使用上次同步操作中的所有新/修改记录编写摘要并发送到服务器。优点:可以在没有网络的情况下工作,快速,易于检查(如果摘要是可读的)。缺点:您没有实时信息。
答案 2 :(得分:10)
SymmetricDS就是答案。它支持具有单向或双向异步数据复制的多个订户。它使用Web和数据库技术在关系数据库之间复制表,如果需要,几乎实时。
全面而强大的Java API,以满足您的需求。
答案 3 :(得分:2)
在dbForge Studio for MySQL中查看Schema and Data Comparison tools。这些工具将帮助您进行比较,查看差异,生成同步脚本并同步两个数据库。