我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql GTID复制跳过复制错误的方式有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql GTID复制跳过复制错误的方式有哪些

这篇文章主要介绍mysql GTID复制跳过复制错误的方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1、从库执行了事务,主库执行语句时导致冲突:

解决办法一:跳过错误(少数错误推荐)

(1)停止slave进程
(2)设置事务号,事务号从Executed_Gtid_Set事务号+1获取,即跳过当前执行完成的下一条事务,在session里设置gtid_next,即跳过这个GTID
(3)执行空事物
(4)恢复自动事物号
(5)启动slave进程

mysql> STOP SLAVE;
mysql> SET @@SESSION.GTID_NEXT= '8f9e146f-0a18-11e7-810a-0050568833c8:4';
mysql> BEGIN; COMMIT;
mysql> SET SESSION GTID_NEXT = AUTOMATIC;
mysql> START SLAVE;

解决办法二:重置master方法跳过错误(不推荐,因为需要执行reset master;如果其他节点记录有该实例的位点信息的话,切换时需要重新找位点)

mysql> STOP SLAVE;
mysql> RESET MASTER;
mysql> SET @@GLOBAL.GTID_PURGED ='8f9e146f-0a18-11e7-810a-0050568833c8:1-4';
mysql> START SLAVE;

上面这些命令的用意是,忽略8f9e146f-0a18-11e7-810a-0050568833c8:1-4 这个GTID事务,下一次事务接着从 5 这个GTID开始,即可跳过上述错误。

解决办法三:使用pt-slave-restart工具,忽略特定错误,(冲突较多时可以使用,建议保留relaylog核对事务),

pt-slave-restart工具的作用是监视某些特定的复制错误,然后忽略,并且再次启动SLAVE进程(Watch and restart MySQL replication after errors)。

pt-slave-restart工具原理初探
1、检查版本信息和兼容性
set autocommit=1
SHOW VARIABLES LIKE 'wait\_timeout'
SET SESSION wait_timeout=10000
SELECT @@SQL_MODE
SET @@SQL_QUOTE_SHOW_CREATE = 1
SELECT @@SERVER_ID
SHOW SLAVE STATUS
SELECT CONCAT(@@hostname, @@port)
SHOW VARIABLES LIKE 'version%'
SHOW ENGINES
SHOW VARIABLES LIKE 'innodb_version'
SELECT @@GLOBAL.gtid_mode(是否开启GTID决定跳过事务的方式)
SELECT @@GLOBAL.slave_parallel_workers AS threads(不支持并行复制)
2、检查同步错误
SHOW SLAVE STATUS;
如果使用--error-numbers则检查Last_SQL_Errno:错误号,判断是否匹配;如果匹配继续进行,不匹配不做任何操作
如果使用--error-text则检查Last_SQL_Error:报错内容,判断是否匹配;如果匹配继续进行,不匹配不做任何操作
3、跳过事务
SET GTID_NEXT='026b75e5-d99f-11e7-a343-000c29dc5f5c:2023';
set autocommit=0;
commit;
set autocommit=1;
SET GTID_NEXT='AUTOMATIC';
START SLAVE;
4、继续判断状态,如果还有报错继续2,3,4步骤
SHOW SLAVE STATUS;

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.137.101
                  Master_User: repluser
                  Master_Port: 3307
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 3435
               Relay_Log_File: mysql-relay-bin.000016
                Relay_Log_Pos: 1026
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
  Replicate_Wild_Ignore_Table: passport.cooke,passport.user_token,sysbench_test.sbtest1,sysbench_test.sbtest_1
                   Last_Errno: 1062
                   Last_Error: Error 'Duplicate entry '9' for key 'PRIMARY'' on query. Default database: 'test'. Query: 'insert into backup_test (id,backup_que) values(9,'1_111')'
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 2856
              Relay_Log_Space: 2362
               Last_SQL_Errno: 1062
               Last_SQL_Error: Error 'Duplicate entry '9' for key 'PRIMARY'' on query. Default database: 'test'. Query: 'insert into backup_test (id,backup_que) values(9,'1_111')'
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1013307
                  Master_UUID: 026b75e5-d99f-11e7-a343-000c29dc5f5c
             Master_Info_File: mysql.slave_master_info
     Last_SQL_Error_Timestamp: 180504 11:58:07
           Retrieved_Gtid_Set: 026b75e5-d99f-11e7-a343-000c29dc5f5c:1004-2018
            Executed_Gtid_Set: 026b75e5-d99f-11e7-a343-000c29dc5f5c:1-2016,
5f5c73b5-2768-11e8-9e7e-000c298bd943:1-2997,
68be50a9-3ba1-11e8-a25d-000c298bd943:1-4
                Auto_Position: 1

[root@vm102 yum.repos.d]# pt-slave-restart  --user=mg -h227.0.0.1 -P3307 -p123qwe  --error-numbers=1062
2018-05-04T11:47:31 P=3307,h=127.0.0.1,p=...,u=mg mysql-relay-bin.000016         448 1062 
2018-05-04T11:47:31 P=3307,h=127.0.0.1,p=...,u=mg mysql-relay-bin.000016         737 1062 

[root@vm102 yum.repos.d]# pt-slave-restart  --user=mg -h227.0.0.1 -P3307 -p123qwe  --error-text="backup_test" 
2018-05-04T12:00:23 P=3307,h=127.0.0.1,p=...,u=mg mysql-relay-bin.000016        1026 1062 
2018-05-04T12:00:24 P=3307,h=127.0.0.1,p=...,u=mg mysql-relay-bin.000016        1315 1062 

参数解释:
 --slave-password=s     Sets the password to be used to connect to the slaves
  --slave-user=s         Sets the user to be used to connect to the slaves
  --sleep=i              Initial sleep seconds between checking the slave ( default 1)
  --socket=s         -S  Socket file to use for connection=
--password=s       -p  Password to use when connecting
pt-slave-resetart  -S./mysql.sock —error-numbers=1032
 --error-numbers=h      Only restart this comma-separated list of errors
 --host=s           -h  Connect to host
 --user=s           -u  User for login if not current user

以上是“mysql GTID复制跳过复制错误的方式有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql GTID复制跳过复制错误的方式有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#复制数组的方式有哪些

本文小编为大家详细介绍“C#复制数组的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#复制数组的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。如果把一个变量值复制给另外一个数组变量,那么2
2023-07-04

php数组的复制方式有哪些

在PHP中,有几种方式可以复制一个数组:1. 使用赋值操作符(=):可以直接使用赋值操作符将一个数组赋值给另一个变量,这样两个变量将指向同一个数组。```php$array1 = [1, 2, 3];$array2 = $array1;``
2023-08-23

win10跳过自动修复的方法有哪些

Win10跳过自动修复的方法有以下几种:1. 使用高级启动选项:在开机过程中按住Shift键,然后点击“电源”按钮选择“重新启动”,进入高级启动选项界面。在界面中选择“疑难解答”->“高级选项”->“启动设置”,点击“重新启动”按钮。系统会
2023-08-22

C#数组的复制方法有哪些

本篇内容主要讲解“C#数组的复制方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#数组的复制方法有哪些”吧!C#数组复制方法有哪些呢?在实际开发的过程中,我们需要掌握学习的有哪些呢?这
2023-06-17

Java复制数组的方法有哪些

这篇“Java复制数组的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java复制数组的方法有哪些”文章吧。前言所
2023-07-05

java复制list内容的方法有哪些

Java中复制一个List的内容有多种方法,以下是其中几种常用的方法:1. 使用构造函数:可以使用List的构造函数来创建一个新的List,并将原始List的内容传递给构造函数。例如:```List oldList = new ArrayL
2023-08-11

Flex中Flex ArrayCollection的复制方法有哪些

这篇文章主要介绍Flex中Flex ArrayCollection的复制方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flex中Flex ArrayCollection的复制在Flex的开发过程中,常常会遇
2023-06-17

编程热搜

目录