目標: 將主庫數據(IP1)每五分鐘一次同步到備庫(IP2) 服務器備庫上,只同步增加量
思路:
利用crontab 每五分鐘一次定時執行腳本進行數據同步
在腳本中編譯實現查詢五分鐘內的數據增加量,並將增加量導入到備庫
實現過程及代碼(以record 表爲例):
bash腳本中內容
vi transaction.sh----建立transaction腳本實現同步
#!/bin/bash
source.bash_profile
(由於定時執行的功能使用crontab實現,需要在bash中添加使環境變量生效)
exportID=`mysql -N -utest -ptest\!@#$ -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\!@#$ -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)
執行結果驗