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. 执行结果验

     

利用脚本实现mysql主库到备库数据同步(每五分钟同步一次增量)_同步

利用脚本实现mysql主库到备库数据同步(每五分钟同步一次增量)_mysql_02