[英]Sync two tables from two different databases with different structure MySql
[英]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中的 數據同步工具 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.