- 目标: 将主库数据(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)
- 执行结果验