MySQL pt-slave-restart工具的使用简介


Posted in MySQL onApril 07, 2021

    在MySQL主从复制环境的搭建中,常常会遇到一种场景,主库和从库都要初始化用户的账号密码,正常的情况下,需要在主库和从库都关闭session级别的binlog,然后再进行用户信息导入。

    但是有时候会忽略关闭session级别binlog这个前置动作,例如在基于GTID的复制模式下,主从库都直接导入了用户的账号密码信息,主库和从库都将账号密码的事务记录到了自己的GTID中,此时我们如果利用GTID的方式搭建复制,会出现报错,因为从库已经有账号了,所以主库上同步到从库的用户信息会出现报错现象,提示用户已经存在,这种情况下,我们需要在从库跳过从主库复制过来的创建用户的SQL语句。

    在GTID模式下,通过下面的办法可以跳过一个事务:

stop slave;
set gtid_next=xxxxx;
begin;
commit;
set gtid_next=automatic;
start slave;

但是在事务数很多的情况下,我们不能一个一个跳过,需要批量跳过同一个错误,这里有几种方式可以进行处理;

分别是调整slave_skip_errors参数或者slave_exec_mode 参数

今天我们来看另外一种方法,就是利用pt-slave-restart工具来进行事务跳过,命令如下:

./pt-slave-restart -uroot -proot123 --error-numbers=1062

命令很容易理解,写清楚错误编码,直接跳过就行,它会打印出来很多信息,默认情况下打印内容为:时间戳、连接信息、中继日志文件、中继日志位置以及上一个错误号。例如:

2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005         369 1032 
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005         726 1032 
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005        1085 1032 
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005        1444 1032 
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005        1800 1032

你可以使用--verbose选项添加更多信息,也可以使用--quiet选项阻止所有输出。

注意事项:

当采用多线程复制(slave_parallel_workers > 0)时,pt-slave-restart不能跳过事务。pt-slave-restart不能确定GTID事件是哪个特定slave线程执行失败的事务。

如果需要使用,请暂时关闭多线程复制的workers

关于pt-slave-restart的其他参数,可以使用pt-slave-restart --help的命令查看,也可以参考下面的常见参数列表:

--always        :永不停止slave线程,手工停止也不行

--ask-pass      :替换-p命令,防止密码输入被身后的开发窥屏

--error-numbers :指定跳过哪些错误,可用,进行分隔

--error-text    :根据错误信息进行匹配跳过

--log           :输出到文件

--recurse       :在主端执行,监控从端

--runtime       :工具执行多长时间后退出:默认秒,m=minute,h=hours,d=days

--slave-user --slave-password :从库的账号密码,从主端运行时使用

--skip-count    :一次跳过错误的个数,胆大的可以设置大些,不指定默认1个

--master-uuid   :级联复制的时候,指定跳过上级或者上上级事务的错误

--until-master  :到达指定的master_log_pos,file位置后停止,格式:”file:pos“

--until-relay   :和上面一样,但是根据relay_log的位置来停止

以上就是MySQL pt-slave-restart工具的使用简介的详细内容,更多关于MySQL pt-slave-restart工具的使用的资料请关注三水点靠木其它相关文章!

MySQL 相关文章推荐
MySQL 如何分析查询性能
May 12 MySQL
MySQL 可扩展设计的基本原则
May 14 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
mysql定时自动备份数据库的方法步骤
Jul 07 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
SQL基础的查询语句
Nov 11 MySQL
MySQL利用UNION连接2个查询排序失效详解
Nov 20 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
如何创建一个创建MySQL数据库中的datetime类型
Mar 21 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
delete in子查询不走索引问题分析
Jul 07 MySQL
MySQL实现用逗号进行拼接、以逗号进行分割
Dec 24 MySQL
MySQL主从复制断开的常用修复方法
Apr 07 #MySQL
MySQL infobright的安装步骤
Apr 07 #MySQL
MySQL表的增删改查基础教程
mysql批量新增和存储的方法实例
Apr 07 #MySQL
Mysql 性能监控及调优
数据库连接池
mysql优化
Apr 06 #MySQL
You might like
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
php 301转向实现代码
2008/09/18 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
img的onload的另类用法
2008/01/10 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Python pip使用超时问题解决方案
2020/08/03 Python
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
自主招生自荐信指南
2014/02/04 职场文书
中班中秋节活动反思
2014/02/18 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
Nginx反向代理、重定向
2022/04/13 Servers
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle