標籤:mysql 同步
目標: 將主庫資料(IP1)每五分鐘一次同步到備庫(IP2) 伺服器備庫上,只同步增加量
思路:
利用crontab 每五分鐘一次定時執行指令碼進行資料同步
在指令碼中編譯實現查詢五分鐘內的資料增加量,並將增加量匯入到備庫
實現過程及代碼(以record 表為例):
bash指令碼中內容
vi transaction.sh----建立transaction指令碼實現同步
#!/bin/bash
source.bash_profile
(由於定時執行的功能使用crontab實現,需要在bash中添加使環境變數生效)
exportID=`mysql -N -utest -ptest\[email protected]#$ -Dtest -e "select
max(transaction_id)from record"`
(使用替代變數ID定義備庫中現在最大transaction_id的值)
mysql-N -hIP2 -uslaveroot -p7Pyw#7AHh7 -Dtest -e "use
test;select* from record where transaction_id > $ID;"> backup.sql
(在主庫中尋找大於transaction_id 的值即在這五分鐘內record中資料增長量,並將其匯入
到backup.sql檔案中)
sed-i ‘s#NULL#\\N#g‘ backup.sql
(由於字元集問題"NULL" 在匯入中會出現錯誤,利用sed指令將NULL替代成為\N)
mysql -N -utest -ptest\[email protected]#$ -Dtest -e "use test;load datainfile
‘/home/mysql/backup.sql‘ into table record;"
(匯入產生的backup.sql檔案)
crontab指令碼編寫
crontab-e (編輯定時指令碼)
5,10,15,20,25,30,35,40,45,50,55* * * * /home/mysql/transaction.sh
(每五分鐘執行一次transaction.sh)
執行結果驗
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5A/02/wKioL1Tz4jWSXGaiAAC9WrRequ0816.jpg" style="float:none;" title="1.png" alt="wKioL1Tz4jWSXGaiAAC9WrRequ0816.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5A/06/wKiom1Tz4STTqRp1AACrfbrAP5Q098.jpg" style="float:none;" title="2.png" alt="wKiom1Tz4STTqRp1AACrfbrAP5Q098.jpg" />
本文出自 “Sunny” 部落格,請務必保留此出處http://dbasunny.blog.51cto.com/9192126/1616432
利用指令碼實現mysql主庫到備庫資料同步(每五分鐘同步一次增量)