Percona

restart

  1. pt-slave-restart 监视一个或多个 MySQL 复制的从是否有错误,如果复制停止,则尝试重新启动复制。

基本使用语法为:pt-slave-restart [OPTIONS] [DSN]

下面列表列出部分options,更加详细的请使用pt-slave-restart --help进行查看

OPTIONS:

类型备注:s=string, i=integer, f=float, h/H/a/A=comma-separated list, d=DSN, z=size, m=time

DSN为要操作的数据库和表。

DSN:

  1. 基本使用样例
  • 跳过错误(--skip-count

目前,有数据库test,存在如下表t_goods:

CREATE TABLE `t_goods` (

`goodid` int NOT NULL,

`goodname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,

PRIMARY KEY (`goodid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

表中有数据如下:

1 电视

2 冰箱

假设,我们在Slave上,先执行如下插入SQL:

INSERT INTO t_goods VALUES(3,'烤箱');

在Master上,后执行如下插入SQL:

INSERT INTO t_goods VALUES(3,'烤箱');

INSERT INTO t_goods VALUES(4,'电脑');

INSERT INTO t_goods VALUES(5,'手机');

则引发主从复制错误,这里,我们比较明确知道错误原因,则需要跳过发生错误的语句即可:

pt-slave-restart h=192.168.246.136,u=root,p=Ygzlpaul*2022 --skip-count=1

打印如下信息:

2022-11-19T23:32:29 h=192.168.246.136,p=...,u=root m_slave-relay-bin.000011 2871 1062

验证Slave状态,正常

2.2 跳过GTID--master-uuid

模拟发生错误同2.1,只是这里开启了GTID模式,则,我们需要查看并找到错误的GTID值:

8c17f5a5-55f6-11ed-a854-000c295b9532:5

pt-slave-restart h=192.168.246.136,u=root,p=Ygzlpaul*2022 --master-uuid=8c17f5a5-55f6-11ed-a854-000c295b9532

注1:上面仅仅需要UUID值,而无需TID值

打印如下信息:

2022-11-20T00:16:40 h=192.168.246.136,p=...,u=root m_slave-relay-bin.000002 1536 1062

验证Slave状态,正常

注2:需要在Slave上,先执行如下SQL:SET GLOBAL slave_parallel_workers=0

否则,会报告如下错误:

Cannot skip transactions properly because GTID is enabled and slave_parallel_workers > 0. See 'GLOBAL TRANSACTION IDS' in the tool's documentation.

版权声明:本网站为非赢利网站,作品与素材版权均归作者所有,如内容侵权与违规请发邮件联系,我们将在三个工作日内予以改正,请发送到chengfengseo#gmail.com(#换成@)。

本文链接:https://jancl.cn/youxigonglue/56912.html

TAG:restart