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


81

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

商店中发生某些更改时,应在主机服务器上对其进行更新。我该如何实现?



做起来容易吗?您认为需要多长时间?
2011年

2
@peedee MySQL复制非常容易设置。一些命令和初始同步。我第一次大约花了30分钟。
ceejayoz

2
一个好问题上的问题是想知道出于相同目的的同一件事]
codefreaK 2014年

您可以使用MySQL的复制功能或有一些可用的工具,做数据库的同步,在此列出stackoverflow.com/questions/52583/...
彼得Venderberghe

Answers:


60

复制不是很难创建。

这里有一些很好的教程:

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

这样,您将避免错误。

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

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

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

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

让我知道您是否需要其他帮助


是的,商店=主服务器,服务器=从服务器
Zeus图书,

我现在已经配置了一个主数据库,我将连接到一个从数据库。.当我这样做时,对主数据库的任何更改都将反映在从数据库中,而从数据库中的更改也会反映在主数据库上。
撒尿2011年

是的,如果安装正确,马上就可以!您可以在主机中插入一条记录,在从机中进行选择以进行测试。如果通过,您就定了!
宙斯记

嘿伙伴...我在奴隶身上出现错误1045。会是什么原因呢?你有什么主意吗?
2011年

错误1045:拒绝访问用户:“ root @ localhost”(使用密码:NO)和dev.mysql.com/doc/refman/5.1/en/access-denied.html
Zeus图书Book of Zeus,

23

三种不同的方法:

  1. 经典的客户端/服务器方法:不要在商店中放置任何数据库;只需让应用程序访问您的服务器即可。当然,设置VPN会更好,但是仅将连接包装在SSL或ssh中是合理的。优点:这就是数据库最初的想法。缺点:如果延迟时间长,复杂的操作可能会变慢,您可能必须使用存储过程来减少往返次数。

  2. 复制的母版/母版:如@Book Of Zeus建议。缺点:设置有些复杂(特别是如果您有多个商店),闯入任何商店的机器都可能损害整个系统。优点:更好的响应能力,因为读取操作完全是本地的,而写入操作则异步传播。

  3. 脱机操作+同步步骤:在本地进行所有工作,并不时(可能每小时,每天,每周一次,无论何时)在所有上次同步操作中写入所有新的/已修改的记录的摘要,并将其发送到服务器。优点:无需网络即可工作,快速,易于检查(如果摘要易于阅读)。缺点:您没有实时信息。


10
我需要设置数据库同步的第3种类型(离线操作+同步),希望了解更多信息。不能用谷歌搜索出来。我可以参考他们的书/文章吗?
abhishek7714年

10

答案就是SymmetricDS。它通过一个方向或双向异步数据复制来支持多个订户。如果需要,它使用Web和数据库技术在关系数据库之间复制表。

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


如果我有一个内部服务器,在某个区域没有互联网,并且有单独的数据库,并且我托管了数据库Web上的在线购买者,并且我想将内部数据库购买迁移到实时状态,请您告知两个之间的自动增量会如何?如果他们都保留相同的ID,那就太乱了!!因此(我需要将内部数据库上的操作同步到实时状态,而又不影响id自动添加和表之间的关系)
shareef,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.