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

我们在各种商店运行一个java POS应用程序,后端为Mysql,现在我想让店铺中的数据库与服务器中的数据库保持同步,当店铺发生一些变化时,应该在服务器上更新。 我如何做到这一点? 请帮助我

复制不是很难创build。

这里有一些很好的教程:

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个或多个服务器(从属)以读取数据。

这样,你会避免错误。

例如:如果您的脚本插入到主站和从站上的相同表中,则会有重复的主键冲突。

您可以将“从站”视为与主站保持相同信息的“备份”服务器,但不能直接添加数据,只能遵循主服务器的指示。

注意:当然,您可以从主服务器读取数据,并且可以写入从服务器,但是请确保不要写入相同的表(主服务器到从服务器和从服务器到主服务器)。

我会build议监视您的服务器,以确保一切正常。

让我知道你是否需要额外的帮助

三种不同的方法:

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

  2. 复制的主/主:如宙斯build议的书。 缺点:安装稍微复杂一点(特别是如果你有几家店铺的话),打破任何商店机器都可能危及整个系统。 优点:由于读操作完全是本地的,写操作asynchronous传播,因此响应性更好。

  3. 离线操作+同步步骤:在本地和时间(可能是每小时一次,每天一次,每周一次)上执行所有工作,将所有新的/修改的logging从最后的同步操作写入摘要并发送到服务器。 优点:可以无networking工作,快速,易于检查(如果摘要是可读的)。 缺点:你没有实时的信息。

SymmetricDS是答案。 它支持一个方向的多个用户或双向asynchronous数据复制。 它使用Web和数据库技术在关系数据库之间复制表,如果需要,可近实时地复制表。

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

查看dbForge Studio for MySQL中的架构和数据比较工具 。 这些工具将帮助您进行比较,查看差异,生成同步脚本并同步两个数据库。