簡體   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