Mysql数据库在两个数据库之间同步

时间:2011-10-10 01:57:05

标签: mysql database

我们正在各个商店运行Java PoS(销售点)应用程序,并使用MySql后端。我想让商店中的数据库与主机服务器上的数据库保持同步。

当商店发生某些变化时,应该在主机服务器上进行更新。我该如何实现这一目标?

4 个答案:

答案 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. 设置1个用于写入数据的服务器(主服务器)。
  2. 设置1个或多个服务器(从属设备)以读取数据。
  3. 这样,您就可以避免错误。

    例如: 如果您的脚本插入主服务器和从服务器上的相同表中,则会出现重复的主键冲突。

    您可以查看"奴隶"作为"备份"服务器与主服务器保存相同的信息但不能直接添加数据,只遵循主服务器的说明。

    注意:当然你可以从主机读取,你可以写入从机,但要确保你不要写入相同的表(主机到从机和从机到主机)。

    我建议您监控服务器以确保一切正常。

    如果您需要其他帮助,请告诉我

答案 1 :(得分:22)

三种不同的方法:

  1. 经典客户端/服务器方法:不要在商店中放置任何数据库;只需让应用程序访问您的服务器。当然,如果你设置VPN更好,但只需将连接包装在SSL或ssh中是合理的。亲:这是数据库最初被认为的方式。 Con:如果你有高延迟,复杂的操作可能会变慢,你可能不得不使用存储过程来减少往返次数。

  2. 复制master / master:正如Zeus建议的@Book。缺点:设置稍微复杂一些(特别是如果你有几家商店),任何商店机器的破坏都可能会危及整个系统。优点:更好的响应性,因为读操作完全是本地的,写操作是异步传播的。

  3. 离线操作+同步步骤:在本地和不时(可能是每小时一次,每天,每周,等等)完成所有工作,使用上次同步操作中的所有新/修改记录编写摘要并发送到服务器。优点:可以在没有网络的情况下工作,快速,易于检查(如果摘要是可读的)。缺点:您没有实时信息。

答案 2 :(得分:10)

SymmetricDS就是答案。它支持具有单向或双向异步数据复制的多个订户。它使用Web和数据库技术在关系数据库之间复制表,如果需要,几乎实时。

全面而强大的Java API,以满足您的需求。

答案 3 :(得分:2)

在dbForge Studio for MySQL中查看Schema and Data Comparison tools。这些工具将帮助您进行比较,查看差异,生成同步脚本并同步两个数据库。