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

作者:DBA随笔 时间:2024-01-17 11:42:34 

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

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

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


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

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

MySQL复制问题的三个参数介绍 

分别是调整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的位置来停止

来源:https://mp.weixin.qq.com/s/QD9M2rp5XtbhGoMTa-KBNA

标签:MySQL,pt-slave-restart
0
投稿

猜你喜欢

  • asp 快钱网关接口 支付宝接口 财付通接口代码

    2011-03-08 10:55:00
  • mysql如何分组统计并求出百分比

    2024-01-22 02:07:51
  • MySql数据引擎简介与选择方法

    2024-01-28 12:04:29
  • 浅谈pytorch卷积核大小的设置对全连接神经元的影响

    2022-08-19 04:49:55
  • Pandas常用累计、同比、环比等统计方法实践过程

    2021-03-13 01:48:36
  • Finished with error:Navicat运行SQL文件报错的解决

    2024-01-28 01:40:03
  • javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)

    2023-08-18 20:01:36
  • 最强大最好最全的javascript 验证表单的例子

    2010-03-14 11:26:00
  • python实现三阶魔方还原的示例代码

    2021-03-12 08:45:04
  • python time模块计算时间之间的差距(练习题)

    2021-09-05 02:24:03
  • 如何在PyCharm中配置使用Anaconda环境

    2021-01-28 14:16:53
  • Pytorch 解决自定义子Module .cuda() tensor失败的问题

    2023-11-19 15:01:57
  • Python的Django框架中使用SQLAlchemy操作数据库的教程

    2021-10-28 11:41:09
  • Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析

    2022-05-01 15:04:21
  • 将pymysql获取到的数据类型是tuple转化为pandas方式

    2024-01-26 11:26:18
  • Python进程间通信用法实例

    2023-02-13 02:53:18
  • JS异步函数队列功能实例分析

    2024-04-22 13:26:28
  • Python实现对二维码数据进行压缩

    2022-10-22 12:51:59
  • 探讨:如何查看和获取SQL Server实例名

    2024-01-18 03:47:42
  • MySQL中随机生成固定长度字符串的方法

    2024-01-12 13:04:20
  • asp之家 网络编程 m.aspxhome.com