不积跬步,无以至千里;不积小流,无以成江海。

Mysql跳过主从同步错误

方法一: 适用于5.5版本

mysql>stop slave;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;        #跳过一个事务
mysql>start slave;
修改mysql的配置文件
通过slave_skip_errors参数来跳所有错误或指定类型的错误vi /etc/my.cnf

[mysqld]

#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误

#slave-skip-errors=all #跳过所有错误
————————————————

方法二: 通用

下载percona-toolkit(centos 7版本rpm包)
wget https://www.percona.com/downloads/percona-toolkit/3.0.10/binary/redhat/7/x86_64/percona-toolkit-3.0.10-1.el7.x86_64.rpm
下载percona-toolkit源码包
wget https://www.percona.com/downloads/percona-toolkit/3.0.10/binary/tarball/percona-toolkit-3.0.10_x86_64.tar.gz

基础依赖安装:

yum install perl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker  perl-DBI  perl-DBD-MySQL perl-IO-Socket-SSL perl-Digest-MD5 perl-TermReadKey.x86_64

rpm安装

rpm -ivh percona-toolkit-3.0.10-1.el7.x86_64.rpm

编译安装

perl Makefile.PL
make && make install

命令使用

pt-slave-restart  --user=root --password=XXXX  --socket=/r2/mysqldata/mysql.sock  --error-numbers=1062

pt-slave-restart的使用

mysql主从同步遇到问题,指定跳过某个错误。对于开启GTID的复制进程也有用。
可以跳过所有错误,但是是否要执行跳过操作,要看错误提示和业务要求。

./pt-slave-restart  --user=root --password=dkqb5ilwv9rKe~riBgqa  --socket=/r2/mysqldata/mysql.sock  --error-numbers=1062

但是对于mysql5.6以后,开启了多线程复制的,就不能跳过错误,会报错:
Cannot skip transactions properly because GTID is enabled and slave_parallel_workers > 0. See 'GLOBAL TRANSACTION IDS' in the tool's documentation.
解决办法:

mysql> set global slave_parallel_workers=0;
posted @ 2021-12-14 10:29  |是吴啊|  阅读(652)  评论(0)    收藏  举报