2011-10-10 237 views
67

我们在各种商店运行一个java POS应用程序,后端为Mysql,现在我想让店铺中的数据库与服务器中的数据库保持同步,并且当发生某些更改时它应该在服务器上更新的商店。我如何实现这一目标?请帮助我两个数据库之间的Mysql数据库同步

+7

mysql复制:http://dev.mysql.com/doc/refman/5.0/en/replication.html –

+0

容易吗?你认为会花多少时间? – peedee

+2

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

回答

56

复制不是很难创建。

下面是一些很好的教程:

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

这样你就可以避免错误。

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

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

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

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

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

+0

是的,Shop = master,Server = slave –

+0

现在我已经配置了主设备,我将连接到一个从设备数据库..当我这样做时,对主设备的任何更改都会反映在从设备中,奴隶反映到主人以及? – peedee

+0

是的,如果设置是好的!您可以在主机中插入一条记录,然后在从机上进行选择以进行测试。如果这个传球,你设置! –

18

三种不同的方法:

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

  2. 复制大师/主:作为@Book宙斯建议。缺点:设置起来要复杂一些(特别是如果你有几家商店),打破任何商店机器都可能危及整个系统。优点:更好的响应性,因为读取操作完全是本地的,写入操作是异步传播的。

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

+6

我有要求设置第三种类型的数据库同步(离线操作+同步),很想阅读更多。无法谷歌这一个出来。他们是否可以参考一本书/文章? – abhishek77in

6

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

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

+0

如果产品描述符合他们所说的这个产品是真棒的... – TheStoryCoder