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 25 MySQL
Mysql 如何实现多张无关联表查询数据并分页
Jun 05 MySQL
mysql 带多个条件的查询方式
Jun 05 MySQL
MySql子查询IN的执行和优化的实现
Aug 02 MySQL
SQL实现LeetCode(180.连续的数字)
Aug 04 MySQL
MYSQL 运算符总结
Nov 11 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
MySQL时区造成时差问题
Apr 13 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL主从复制断开的常用修复方法
Apr 07 #MySQL
MySQL infobright的安装步骤
Apr 07 #MySQL
MySQL表的增删改查基础教程
mysql批量新增和存储的方法实例
Apr 07 #MySQL
Mysql 性能监控及调优
数据库连接池
mysql优化
Apr 06 #MySQL
You might like
php使用codebase生成随机数
2014/03/25 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
js相册效果代码(点击创建即可)
2013/04/16 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
JavaScript表单验证实现代码
2017/05/22 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
介绍一下write命令
2014/08/10 面试题
几个Shell Script面试题
2014/04/18 面试题
同事吵架检讨书
2014/02/05 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Java实现聊天机器人完善版
2021/07/04 Java/Android
浅谈MySQL之select优化方案
2021/08/07 MySQL
详解Python内置模块Collections
2022/03/22 Python
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python