mysql从2个数据库同步两个表

mysql从2个数据库同步两个表,mysql,Mysql,我有一个问题。我在两台不同的服务器上有两个表。这两个表都有相同的结构。一台服务器上的主表每天都会更新,因此我需要一个cron作业或一个php脚本cron来更新另一台服务器上的第二个从属表。 我看过很多脚本,但都没有解决我的需求 我真不敢相信你没有找到合适的脚本来做这件事。根据服务器到服务器的带宽和连接性以及表数据大小,您可以: 直接转移整个表: mysqldump [options] sourcedatabase tablename \ | mysql [options] --host r

我有一个问题。我在两台不同的服务器上有两个表。这两个表都有相同的结构。一台服务器上的主表每天都会更新,因此我需要一个cron作业或一个php脚本cron来更新另一台服务器上的第二个从属表。
我看过很多脚本,但都没有解决我的需求

我真不敢相信你没有找到合适的脚本来做这件事。根据服务器到服务器的带宽和连接性以及表数据大小,您可以:

  • 直接转移整个表:

    mysqldump [options] sourcedatabase tablename \
      | mysql [options] --host remoteserver --user username ...
    
  • 使用MySQL压缩传输表

    # same as above, mysql has the "-C" flag
    
  • 使用SSH加密和压缩进行传输;mysql是远程执行的

    mysqldump [options] sourcedatabase tablename \
      | ssh -C user@remoteserver 'mysql [options]'
    
  • 使用中间SQL文件和rsync进行传输以仅传输修改

    mysqldump [options] sourcedb tbl > dump.sql
    rsync [-z] dump.sql user@remoteserver:/path/to/remote/dump.sql
    ssh user@remoteserver "mysql [options] < /path/to/remote/dump.sql"
    
    mysqldump[options]sourcedb tbl>dump.sql
    rsync[-z]dump.sqluser@remoteserver:/path/to/remote/dump.sql
    sshuser@remoteserver“mysql[选项]
以上都是简单的表覆盖,远程数据丢失并被主副本替换。mysqldump+rsync+ssh的运行时间与修改大致成正比,这意味着如果您有一个10-GB的SQL转储并添加了十几个插入,那么传输阶段最多需要几秒钟来同步两个SQL文件


为了优化insert阶段,要么进行完整的MySQL复制,要么需要一种方法来识别表上的操作,以便在同步时手动复制它们。这可能需要更改表结构,例如添加“上次同步时间”和“需要删除”列,甚至引入辅助表。

您可以使用一个简单的解决方案-in

  • 创建数据比较项目,比较并同步两个不同MySQL服务器上的两个表
  • 使用创建的数据比较项目文档(*.dcomp文件)在命令行模式下运行应用程序

  • 以哪种方式更新?结构、数据,。。它应该如何更新,为什么很多脚本不能解决您的需求。你的要求是什么。它是mysql。它与结构无关。它与不断增长的数据有关。我想要一个php cron作业来完成它。但是我不知道如何以最简单和最优化的方式完成它。我不想从主表中选择数据并循环它们,直到它们被插入到从表中。这需要太多的时间。因此,如果我建议使用一些优化的方法,我将不胜感激。不清楚您的确切要求是什么,但也许您想了解一下?