說明:由於本人的實際情況是不能修改線上對資料引擎的支援,並且只是為了同步部分表,因此沒必要將兩個庫做主從,因此採用以下的方式進行解決
對於跨伺服器同步增量導資料的問題,
本可以使用:
select * into outfile "/home/yls/my.log" fields terminated by ',' lines terminated by '\\n' from test where id>=(select max(maxid) from maxidtable;
但是由於不是每個資料庫伺服器都開啟了:--secure-file-priv,因此不能使用into outfile進行匯出資料
鑑於實際情況可以採用以下兩種方式:
1、直接跨伺服器導資料
在目標庫中或者源庫中執行都可以
mysqldump --host=123.216.147.180 -uroot -p123456 -c stat eb_base_ec4003 --where='id >= 3 and id <= 10000' --no-create-info |mysql --host=127.0.0.1 -uroot -p123456 test2
優點:1、使用方便簡單
2、無需依賴特定的資料庫引擎
3、效率高
4、可以新增查詢條件
缺點:1、兩個庫中必須要有兩個一模一樣的表結構
2、不能只導部分字段,必須全部導全部的字段
容易出現的問題:這種方式需要注意自增主鍵id衝突的問題,因為不能只匯入部分字段,因此自增主鍵id在兩個庫中如果存在衝突就會發生錯誤
如何解決:可以人為干預從而解決,保證目標庫中的所有資料都只是從源表中得到,將可以解決這種問題
2、通過匯出導sql檔案然後再通過網路傳輸,再進行匯入
在目標庫中或者源庫中執行都可以(建議在目標庫中操作)
mysqldump -h123.216.147.180 -uroot -p123456 stat eb_base_ec4003 --where='id >= 3 and id <= 10000' --no-create-info > /home/yls/my.sql
這條語句必須在目標庫中執行
source /home/yls/my.sql;
優點:1、可以匯出指定的字段
2、無需依賴特定的資料庫引擎
缺點:1、操作比較複雜
2、效率比較低
鑑於兩種方式的比較建議使用第一種方式,雖然第一種方式不能匯出部分字段,但是,通過規則的限定,可以避免主鍵衝突的問題
使用shell的實現:跨伺服器增量同步mysql表資料的shell實現
JOB MERGE 跨伺服器同步資料
為了解決單伺服器壓力,將庫分伺服器部署,但是原來用觸發器實現的表資料同步就實現不了了。因為總監老大不允許 開啟分布式事務 msdtc 我又不想為了乙個幾千行的基礎資料做複製訂閱。於是乎決定用 job merge的方式實現。第一步 建立乙個儲存過程 當然也可以直接寫到job中 create proce...
Linux跨伺服器檔案同步
大部分已經安裝了,檢視是否安裝 密碼自定義,但要與目的伺服器一直 echo 123456 etc rsyncd.secrets vi stat2master.sh bin sh 實時同步檔案目錄 目的伺服器ip host 源伺服器目錄 src data grid 配置模組名,自定義但要與目的伺服器一...
mysql實現跨伺服器查詢資料
在日常的開發中經常進行跨資料庫進行查詢資料。同伺服器下跨資料庫進行查詢在表前加上資料庫名就可以查詢到資料。mysql跨伺服器進行查詢提供了federated引擎進行對映表,然後進行查詢。mysql資料庫federated引擎是關閉的,首先需要先啟用該引擎。mysql執行show engines命令檢...