2008-11-13 88 views
1

我的问题很像this one。不过,我在MySQL上,我正在寻找我能找到的“最低技术”解决方案。如何保持2个临时数据库同步

情况是,我有2个数据库应该有相同的数据,但他们主要是当他们无法互相联系时更新。我怀疑有某种集群或主/从事物可以很好地同步它们。然而在我的情况下,这是主要的矫枉过正,因为这只是我自己使用的临时数据库。

这样做的好方法是什么?

我现在的做法是在其中一个上有一个联邦表,并且每隔一段时间通过一个插入/选择将数据通过电线填充到另一个表中。它试图处理主键有点复杂,什么不是。 (insert ignore似乎无法正常工作)

p.s.我可以轻松构建一个查询来选择要传输的行。

回答

0

我的当前的解决方案是

  • 设置在源盒联合表,抓住上
  • 设置上,其选择要被更新的行(源箱的视图作为对象的框表作为联邦表的联接)
  • 在目标框上设置另一个联合表,以抓取源框上的视图
  • 在目标框上发出INSERT...SELECT...ON DUPLICATE UPDATE以运行该拖动。

我想我可以抓住源表并一次性完成所有操作,但基于我所看到的查询日志,我猜测我最终会遇到大约20K个查询运行或大约100-300MB的数据传输取决于事情的发生。上述设置销售了大约4个查询,并且传输的数据比实际需要的要少。

5

即使DB在大多数时间断开连接,MySQL的内置复制也非常容易设置并且工作良好。我会说配置这将比任何自定义解决方案都更简单。

请参阅http://www.howtoforge.com/mysql_database_replication的说明,您应该在10-15分钟内启动并运行,您不必再考虑它。

我能看到的唯一缺点是它是异步的 - 即。你必须有一位指定的主人获得所有的改变。

+0

一个做得好的教程,可读,简洁和whatnot。然而,它仍然是我想要的侵入性。 – BCS 2008-11-13 05:54:22