利用腳本實現mysql主庫到備庫數據同步(每五分鐘同步一次增量)

  1. 目標: 將主庫數據(IP1)每五分鐘一次同步到備庫(IP2) 服務器備庫上,只同步增加量

  2. 思路:

  3. 利用crontab 每五分鐘一次定時執行腳本進行數據同步

  4. 在腳本中編譯實現查詢五分鐘內的數據增加量,並將增加量導入到備庫

  5. 實現過程及代碼(record 表爲例):

  6. 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)

  1. 執行結果驗

     

wKioL1Tz4jWSXGaiAAC9WrRequ0816.jpg

wKiom1Tz4STTqRp1AACrfbrAP5Q098.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章