這篇文章主要介紹MySQL GTID復(fù)制跳過復(fù)制錯(cuò)誤的方式有哪些,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)專業(yè)成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,集網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文發(fā)稿等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計(jì),讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計(jì)制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。
1、從庫執(zhí)行了事務(wù),主庫執(zhí)行語句時(shí)導(dǎo)致沖突:
解決辦法一:跳過錯(cuò)誤(少數(shù)錯(cuò)誤推薦)
(1)停止slave進(jìn)程
(2)設(shè)置事務(wù)號(hào),事務(wù)號(hào)從Executed_Gtid_Set事務(wù)號(hào)+1獲取,即跳過當(dāng)前執(zhí)行完成的下一條事務(wù),在session里設(shè)置gtid_next,即跳過這個(gè)GTID
(3)執(zhí)行空事物
(4)恢復(fù)自動(dòng)事物號(hào)
(5)啟動(dòng)slave進(jìn)程
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方法跳過錯(cuò)誤(不推薦,因?yàn)樾枰獔?zhí)行reset master;如果其他節(jié)點(diǎn)記錄有該實(shí)例的位點(diǎn)信息的話,切換時(shí)需要重新找位點(diǎn))
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 這個(gè)GTID事務(wù),下一次事務(wù)接著從 5 這個(gè)GTID開始,即可跳過上述錯(cuò)誤。
解決辦法三:使用pt-slave-restart工具,忽略特定錯(cuò)誤,(沖突較多時(shí)可以使用,建議保留relaylog核對(duì)事務(wù)),
pt-slave-restart工具的作用是監(jiān)視某些特定的復(fù)制錯(cuò)誤,然后忽略,并且再次啟動(dòng)SLAVE進(jìn)程(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/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION'*/
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決定跳過事務(wù)的方式)
SELECT @@GLOBAL.slave_parallel_workers AS threads(不支持并行復(fù)制)
2、檢查同步錯(cuò)誤
SHOW SLAVE STATUS;
如果使用--error-numbers則檢查Last_SQL_Errno:錯(cuò)誤號(hào),判斷是否匹配;如果匹配繼續(xù)進(jìn)行,不匹配不做任何操作
如果使用--error-text則檢查Last_SQL_Error:報(bào)錯(cuò)內(nèi)容,判斷是否匹配;如果匹配繼續(xù)進(jìn)行,不匹配不做任何操作
3、跳過事務(wù)
SET GTID_NEXT='026b75e5-d99f-11e7-a343-000c29dc5f5c:2023';
set autocommit=0;
commit;
set autocommit=1;
SET GTID_NEXT='AUTOMATIC';
START SLAVE;
4、繼續(xù)判斷狀態(tài),如果還有報(bào)錯(cuò)繼續(xù)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
參數(shù)解釋:
--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復(fù)制跳過復(fù)制錯(cuò)誤的方式有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文名稱:mysqlGTID復(fù)制跳過復(fù)制錯(cuò)誤的方式有哪些
URL標(biāo)題:http://m.newbst.com/article40/ijphho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作、面包屑導(dǎo)航、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)