MySQL主从复制数据一致性校验和修复方法及自动化(3)

REPLACEINTO `testhx1`.`testhx1`(`name`,
 `age`, `id`) VALUES ('lily', '5', '9')/*percona-toolkit src_db:testhx1 src_tbl:testhx1 src_dsn:P=3306,h=’MasterIP’,p=...,u=hangxing  dst_db:testhx1 dst_tbl:testhx1dst_dsn:P=3306,h=’SlaveIP’,p=...,u=hangxing lock:1 transaction:1 changing_src:1replicate:0 bidirectional:0
 pid:24745 user:root host: XXXXXXXXXX */;

执行数据修复语句

pt-table-sync--execute --sync-to-master
 h='SlaveIP',P=3306,u=hangxing,p='PASSWORD'--databases=testhx1 --tables=testhx1

(6)再次校验


上述修复完成之后,需要再次执行一次数据校验,确保数据成功修复,校验方法同(4)主从数据校验。

2.4
值得注意的点

(1)校验修复工作每月定期开展;

(2)主从复制架构在割接操作前后均需执行数据校验和修复工作;

(3)主从复制出现故障后要开展数据校验和修复工作;

(4)校验修复需在业务低谷期进行,CPU利用率超过60%时不建议做数据校验和修复;

(5)校验和修复必须在主库进行;

(6)数据库的表要有主键,否则校验效率极差,并且修复不成功。

3.数据一致性校验和修复的自动化实现

理解上述方法后,我们可以顺利完成主从复制数据一致性的校验和修复工作,但是这项工作在MySQL主从复制架构维护中开展频率较高,包括定期和各种不定期的情况,每次都手工开展耗时耗力,并且容易出现人为错误及隐患,因此,我们考虑将这项工作通过脚本实现自动化。

3.1前提准备

创建校验账号,创建校验结果输出表,配置两台主机的ssh免密码登录。

3.2自动化实现

(1)部署自动化脚本和定时任务

理解数据一致性校验和修复的全部原理和详细步骤,将其转化为多个自动化脚本,分别部署在主从库上,每月定期执行可通过在主库制定crontab定时任务调用主从库脚本实现,不定期执行可通过手动调用主从库部署的自动化脚本来实现。

(2)自动化脚本实现步骤

a.将DB相关信息赋予对应参数,如账户密码、IP、端口、常用指令等等

dbuser=XXXX

dbpasswd="XXXXX"

port=3306

mysql_commend="mysql-u${dbuser}
 -p${dbpasswd} -P${port}"

master_ip=XXXXX

slave_ip=XXXXX

password="XXXXX"

date=`date+%Y%m%d`

logfile="XXXXX"

hostname=`XXXXX`

b.检查ssh免密码登录是否成功;

ssh_status=`XXXXX`


 if [ $ssh_status != $hostname ]; then


 echo -e "\nthe ssh should berepair" >$logfile


 exit

else


 echo -e "\nthe ssh is ok">$logfile

fi

c.脚本实现准备工作:包括账号密码的创建、建立校验结果输出表,代码可参见第2小节;

d.将主库的脚本执行校验和主键判断写成联合SQL语句,实现剔除无主键表的所有表的自动数据校验,并将结果存入所建表中;

selectXXXXX NOT IN XXXXX

e.从库部署检查校验结果输出表的脚本,主库执行d后自动登录从库调用这个脚本,实现对从库上输出表中校验字段的对比如master_crc
和 this_crc,找到数据不一致的表,并且通过执行调用修复工具的指令实现不一致数据修复语句的print;

master_cnt<> this_cnt OR master_crc <> this_crc OR
 isnull(master_crc)<> isnull(this_crc))

f.print结果自动存储从库的某个路径文件下;

intooutfile '/tmp/execute_sql.sh'

g.主库自动登录从库scp获取语句修复文件;

scp/tmp/execute_sql.sh root@$master_ip:/tmp/execute_sql.sh

h.主库上自动执行修复语句;

sh/tmp/execute_sql.sh

i.清理掉各个中间文件,中间表等

上述内容记录了该项工作的自动化实现思路及部分实现要点,自动化便是通过在这个思路的基础上编写主从库部署的脚本来实现,目前已亲测成功,已实现自动化的数据校验和修复,说明上述思路正确。

4.结语

本文分享了MySQL复制数据一致性校验和修复的详细步骤及其自动化实现思路和方法,对MySQL复制架构运维中该项工作的实施及其自动化具有较好的借鉴意义。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/39b587836e6b3fde04e1a02fe290b8e8.html