濮阳杆衣贸易有限公司

主頁 > 知識庫 > MySQL主從復(fù)制斷開的常用修復(fù)方法

MySQL主從復(fù)制斷開的常用修復(fù)方法

熱門標簽:南太平洋地圖標注 400電話變更申請 大豐地圖標注app 北京金倫外呼系統(tǒng) 呂梁外呼系統(tǒng) html地圖標注并導(dǎo)航 催天下外呼系統(tǒng) 武漢電銷機器人電話 400電話辦理服務(wù)價格最實惠

01 問題描述

      在生產(chǎn)環(huán)境中,我們經(jīng)常會遇見MySQL主從復(fù)制斷開的情況,在遇到主從復(fù)制斷開是,通常情況,解決問題的步驟如下:

1、從庫上show slave status查看復(fù)制斷開的直觀原因,并記錄當前的復(fù)制位點

2、查看error log,分析更詳細的復(fù)制斷開原因

3、修復(fù)主從復(fù)制關(guān)系

4、如果復(fù)制關(guān)系無法修復(fù),則需要重新搭建從庫

02 解決問題的方法

      主從復(fù)制關(guān)系斷裂,有各種各樣的原因。有些時候,我們沒有時間去客觀分析原因,因為應(yīng)用程序處于無法使用狀態(tài),需要立即恢復(fù),這種情況下,我們對復(fù)制斷裂問題和服務(wù)可用性之間必須做一個權(quán)衡,然后再進行相應(yīng)的處理。

常見的解決主從復(fù)制斷裂的方法有以下幾種:

1、找到其他從庫,快速替換

   這種方法,需要你的應(yīng)用具有至少一主兩從的架構(gòu),其中一個從庫發(fā)生問題,可以將另外一個從庫快速上線,從而恢復(fù)應(yīng)用訪問,后續(xù)再來排查出現(xiàn)故障的從庫的具體問題原因。

2、跳過復(fù)制失敗的錯誤

    有些情況下,我們可以判斷主從復(fù)制斷裂的原因,例如主庫上比從庫上多一個數(shù)據(jù)庫db_1,那么當我們在主庫上執(zhí)行drop database db_1的時候,從庫的復(fù)制一定會斷開。這種情況下,我們可以通過跳過一個事務(wù)來解決。

方法一:(直接跳過當前事務(wù))

    在GTID模式下,可以通過下面的命令來解決:

mysql> STOP SLAVE;
mysql> SET GTID_NEXT='xxxxxx:yyy'; ----- 設(shè)置需要跳過的gtid event
mysql> BEGIN;COMMIT;
mysql> SET GTID_NEXT='AUTOMATIC';
mysql> START SLAVE;

   在非GTID模式下,可以通過下面的命令來解決:

stop slave;
set sql_slave_skip_counter=1;
start slave;

方法二:(指定新位置)

    如果我們通過binlog分析,知道了下一個事務(wù)的具體點位,也可以指定下一個事務(wù)具體位置的方法來解決:

GTID模式下:

mysql>  STOP SLAVE;
mysql>  RESET MASTER;
mysql>  SET @@GLOBAL.GTID_PURGED ='xxxxxxx:yyyyyy'  ----- 表示這些gtid event已經(jīng)執(zhí)行過了
mysql>  START SLAVE;

注意,GTID_PURGED 必須是 GLOBAL,上面的命令也可以寫成set global gtid_purged='xxx:yyy'

非GTID模式下:

stop slave;
change master to master_log_file='mysql-bin.001360',master_log_pos=676383371;
start slave;

方法三:pt-slave-restart工具

    如果我們跳過一個事務(wù)之后,還出現(xiàn)斷開的場景(例如我們在從庫上刪除了100條數(shù)據(jù),但是主庫要更新這100條數(shù)據(jù)),可以使用pt-slave-restart這個工具,它可以連續(xù)跳過斷開的位置。

    它的使用方法如下:

pt-slave-restart -h 10.xxx.xxx.xxx -P port -u user -p password

   當我們使用并行復(fù)制的時候,pt-slave-restart可能會出現(xiàn)報錯,這個時候我們可以通過將并行復(fù)制修改為單線程復(fù)制,然后再使用pt-slave-restart工具,可以參考這篇文章:

pt-slave-restart工具

方法四:設(shè)置參數(shù)slave_exec_mode

     這個參數(shù)可以修改主從復(fù)制過程中的從庫執(zhí)行模式,如果是strict嚴格模式,則所有的復(fù)制一旦報錯就會停止,如果設(shè)置成idempotent冪等模式,則特定錯誤號的錯誤將會被跳過。命令如下:

set global slave_exec_mode = idempotent

具體可以參考之前的文章:

MySQL復(fù)制問題的三個參數(shù)介紹

這篇文章中還有其他兩種跳過復(fù)制錯誤的參數(shù),分別是slave_skip_errors、sql_slave_skip_counter

3、利用備份重建從庫

   這種方法的使用場景不多,通常情況下,只有從庫已經(jīng)不可用或者無法從主庫同步的時候,才會考慮這種方法,例如主庫上執(zhí)行了reset master操作,導(dǎo)致所有的binlog被清理了,這樣從庫就無法獲取讀取正確的binlog,復(fù)制就會斷開,這種情況下,重建從庫可能是唯一的辦法了。

以上就是MySQL主從復(fù)制斷開的常用修復(fù)方法的詳細內(nèi)容,更多關(guān)于MySQL主從復(fù)制斷開修復(fù)的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MySQL5.7并行復(fù)制原理及實現(xiàn)
  • 詳解MySQL主從復(fù)制及讀寫分離
  • MySQL復(fù)制問題的三個參數(shù)分析
  • MySql主從復(fù)制機制全面解析
  • MySQL系列之十三 MySQL的復(fù)制

標簽:徐州 自貢 西寧 龍巖 無錫 迪慶 南充 麗水

巨人網(wǎng)絡(luò)通訊聲明:本文標題《MySQL主從復(fù)制斷開的常用修復(fù)方法》,本文關(guān)鍵詞  MySQL,主從,復(fù)制,斷開,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL主從復(fù)制斷開的常用修復(fù)方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL主從復(fù)制斷開的常用修復(fù)方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    临沧市| 西丰县| 福州市| 湟源县| 和静县| 盐山县| 晋宁县| 资溪县| 绿春县| 上虞市| 若尔盖县| 泸州市| 都兰县| 祁东县| 静安区| 仪陇县| 库车县| 沂南县| 德保县| 大石桥市| 阿克苏市| 集贤县| 寿阳县| 定陶县| 乐都县| 原平市| 景宁| 易门县| 陆川县| 新兴县| 自贡市| 奎屯市| 会理县| 福泉市| 大理市| 永兴县| 方正县| 冕宁县| 抚远县| 南皮县| 黄浦区|