【问题标题】:How do I keep 2 scratch Databases in sync如何保持 2 个临时数据库同步
【发布时间】:2010-09-22 02:43:15
【问题描述】:

我的问题很像this one。但是我在 MySQL 上,我正在寻找我能找到的“最低技术”解决方案。

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

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

我目前的方法是在其中一个上建立一个联合表,并且每隔一段时间,通过插入/选择将数据通过网络填充到另一个。尝试处理主键和不处理的东西有点令人费解。 (insert ignore 似乎无法正常工作)

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

【问题讨论】:

    标签: mysql synchronization federated-table


    【解决方案1】:

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

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

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

    【讨论】:

    • 一个很好的教程,可读,简洁等等。然而,它仍然是我想要的侵入性。
    • 我,作为一个懒惰的程序员,也会使用复制功能,而不必时不时地手动发出一条语句。不要被最初的设置步骤吓到,它最终会得到回报!
    • 这个项目的结束(项目的终止,最后期限)是在 12 月的某个时间,我不希望再在这个数据库上进行复制。
    【解决方案2】:

    我目前的解决方案是

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      相关资源
      最近更新 更多