【问题标题】:How to sync two MySQL tables?如何同步两个 MySQL 表?
【发布时间】:2013-03-12 16:58:00
【问题描述】:

如果我在我的一台服务器上有一个表(我们称之为orders),例如命名为local。我的另一台服务器也有同一张表,例如,命名为remote

我的问题是,同步这两个表的最佳方式是什么?

如果本地与远程不同,我想要一个替换注册表的解决方案。如果本地表上不存在注册表,则插入注册表。

我曾尝试使用 dump 一个类似于此的转储命令,但没有按预期工作:

/usr/bin/mysqldump --defaults-file=~/my/conf.cnf --skip-opt --skip-add-locks --default-character-set=latin1 --disable-keys --no-create-db --no-create-info --dump-date --compress --quick --replace --where='date > DATE_SUB(NOW(), INTERVAL 1 DAY)' mydb orders >> /backup/myDump

我该怎么做?我怎么能做一个脚本来做到这一点?

【问题讨论】:

  • MySQL 内置了主/从复制功能,这对您的应用程序来说是否过大? dev.mysql.com/doc/refman/5.0/en/replication.html
  • 您需要双向同步吗?如果是这样,那么您需要某种方式来标记删除,因为仅插入双向同步会错误地重新创建已删除的行。
  • @cdhowie,仅无方向性。
  • @AlexandreLavoie,我去看看,谢谢。
  • 不删除,然后呢?否则 this 有效。

标签: mysql sql synchronization


【解决方案1】:

pt-table-sync 可以这样做:http://www.percona.com/doc/percona-toolkit/2.1/pt-table-sync.html

另请参阅 other SO questions and answers 提及 pt-table-sync。

【讨论】:

  • 你知道我是否也可以在 Mac 上安装这个工具吗?
  • 是的,我经常在 Mac 上使用 Percona Toolkit。您只需要 Perl,也许还需要几个 Perl 模块。
  • 我正在搜索,但您知道如何解决此警告吗? Warning: prerequisite DBD::mysql 3 not found.我跑过perl Makefile.PL
  • 这个命令解决了对我的警告:sudo perl -MCPAN -e 'install Bundle::DBD::mysql'.
  • @recmund,pt-table-sync 不打算连续使用。复制就是解决这个问题的方法。
【解决方案2】:

我正在解决不断同步两个表的类似问题。

在所有脚本(其中大部分都是旧的)中,我发现了这个积极开发的应用程序(看起来很有前途)

https://github.com/mrjgreen/db-sync

我会尝试一下,也许稍后我会写一个例子。

【讨论】:

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