我的问题很像 这个. 。然而,我在 MySQL 上,正在寻找我能找到的“技术含量最低”的解决方案。

情况是我有两个数据库,它们应该包含相同的数据,但它们主要在无法相互联系时进行更新。我怀疑有某种集群或主/从设备可以很好地同步它们。然而,在我的情况下,这是一个重大的矫枉过正,因为这只是一个供我自己使用的临时数据库。

有什么好的方法可以做到这一点?

我当前的方法是在其中一个上建立一个联合表,并经常通过插入/选择将数据通过线路填充到另一个。尝试处理主键等问题会有点复杂。(insert ignore 似乎无法正常工作)

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

有帮助吗?

解决方案 2

我目前的解决方案是

  • 在源设备上设置一个联合表,以获取目标设备上的表
  • 在源框中设置一个视图,选择要更新的行(作为联合表的联接)
  • 在目标框上设置另一个联合表,以获取源框上的视图
  • 发出 INSERT...SELECT...ON DUPLICATE UPDATE 在目标框上运行拉动。

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

其他提示

MySQL的内置复制非常容易设置,即使在大多数时间断开数据库时也能正常工作。我说配置这比任何自定义解决方案简单得多。

有关说明,请参阅 http://www.howtoforge.com/mysql_database_replication ,您应该参加在10-15分钟内跑步,你不必再考虑它了。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top