繁体   English   中英

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

[英]mysql sync two tables from 2 databases

我有一个问题。 我在两个不同的服务器上有两个表。这两个表具有相同的结构。 一台服务器上的主表每天都会更新,所以我想要一个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" 

以上都是简单的表覆盖,远程数据是LOST并由主副本替换。 mysqldump-plus-rsync-plus-ssh的运行时间大致与修改成比例,这意味着如果你有一个10 GB的SQL转储并添加了十几个INSERTS,那么传输阶段最多需要几秒钟来同步两个SQL文件。

要优化插入阶段,要么进行完整的MySQL复制,要么需要一种方法来识别表上的操作,以便在同步时手动复制它们。 这可能需要对表结构进行更改,例如添加“last-synced-on”和“needs-deletion”列,甚至引入辅助表。

您可以使用一个简单的解决方案 - dbForge Studio for MySQL中的 数据同步工具

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM