当商店发生更改时,它们应该在主机服务器上进行更新。我该如何实现这一点?
创建复制是不太难的。
这里有一些好的教程:
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
以下是一些简单的规则,你需要记住(当然还有更多规则,但这是主要概念):
这样,您将避免错误。
例如: 如果您的脚本在主服务器和从服务器上都插入相同的表,则会出现重复的主键冲突。
您可以将“从服务器”视为“备份”服务器,它保存与主服务器相同的信息,但不能直接添加数据,只能遵循主服务器的指令。
注意:当然您可以从主服务器读取并向从服务器写入数据,但一定要确保不要将数据写入到同一个表中(即主服务器和从服务器都有对同一表的写操作)。
我建议您监控服务器以确保一切正常。
如果您需要额外的帮助,请告知我。
三种不同的方法:
传统的客户端/服务器方法:不要在商店中放置任何数据库;只需让应用程序访问您的服务器。当然,最好设置 VPN,但仅将连接包装在 SSL 或 ssh 中也是合理的。优点:这是最初设计数据库的方式。缺点:如果延迟很高,复杂操作可能会变慢,您可能需要使用存储过程来减少往返次数。
复制的主-主模式:如@Book Of Zeus所建议的。缺点:设置略微更加复杂(特别是如果您有多个商店),任何商店机器的损坏都可能危及整个系统。优点:读操作完全本地化,响应更快,写操作异步传播。
离线操作 + 同步步骤:在本地执行所有工作,并定期(可以是每小时、每天、每周等)编写摘要,其中包含自上次同步操作以来所有新的/修改的记录,并发送到服务器。优点:可以在没有网络的情况下工作,速度快,易于检查(如果摘要可读)。缺点:您没有实时信息。
SymmetricDS就是答案。它支持一个方向或双向异步数据复制的多个订阅者,并使用web和数据库技术在关系型数据库之间复制表,如果需要,可以实现几乎实时的复制。
全面而强大的Java API以满足您的需求。