国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MySQL數(shù)據(jù)庫雙主同步異常故障處理

IT那活兒 / 3011人閱讀
MySQL數(shù)據(jù)庫雙主同步異常故障處理
[
概述
]

在企業(yè)中,數(shù)據(jù)庫高可用一直是企業(yè)的重中之重,中小企業(yè)很多都是使用mysql主從方案,一主多從,讀寫分離等,但是單主存在單點(diǎn)故障,從庫切換成主庫需要作改動(dòng)。因此,如果是雙主或者多主,就會增加mysql入口,增加高可用。不過多主需要考慮自增長ID問題,這個(gè)需要特別設(shè)置配置文件,比如雙主,可以使用奇偶,總之,主之間設(shè)置自增長ID相互不沖突就能完美解決自增長ID沖突問題。

[
故障背景
]

Linux系統(tǒng)環(huán)境:SUSE12.4

MySQL數(shù)據(jù)庫版本:5.7.29

Mysql數(shù)據(jù)庫架構(gòu):雙主

由于業(yè)務(wù)側(cè)在做雙主架構(gòu)選擇的時(shí)候,沒有做VIP高可用冗余,所以只能實(shí)現(xiàn)普通的雙主基本復(fù)制功能,分別基于maser01和master02之間的讀寫同步復(fù)制。


[
故障發(fā)現(xiàn)
]


生產(chǎn)中經(jīng)監(jiān)控平臺發(fā)現(xiàn)MySQL數(shù)據(jù)庫雙主復(fù)制中SQL復(fù)制線程斷開,經(jīng)排查發(fā)現(xiàn)雙主復(fù)制出現(xiàn)了異常,具體報(bào)錯(cuò)信息如下圖所示:在master02數(shù)據(jù)庫服務(wù)器上發(fā)現(xiàn),同步master01數(shù)據(jù)庫服務(wù)器的SQL線程斷開了,截圖如下:


此時(shí),檢查master01數(shù)據(jù)庫服務(wù)器的同步情況,發(fā)現(xiàn)master01同步master02的復(fù)制目前是正常顯示的。


[
故障分析
]


4.1日志分析

通過查看日志文件發(fā)現(xiàn)如下報(bào)錯(cuò)信息:

通過上面日志分析,發(fā)現(xiàn)雙主同步復(fù)制異常存在兩種情況:

A:master01的表數(shù)據(jù)可能被truncate導(dǎo)致master02同步異常中斷;


B:或者是master01和master02之間數(shù)據(jù)復(fù)制過程中主鍵沖突導(dǎo)致同步異常中斷。最后我們來清查一下對應(yīng)報(bào)錯(cuò)的表數(shù)據(jù)在master01和master02兩個(gè)庫中的數(shù)據(jù)是否一致,如果不一致,那就說明其中一個(gè)庫中的數(shù)據(jù)被清理了,或者另一個(gè)庫中的表數(shù)據(jù)同步一直不一致導(dǎo)致同步異常。


4.2表數(shù)據(jù)核對

1)經(jīng)報(bào)錯(cuò)信息查詢該表數(shù)據(jù)統(tǒng)計(jì)記錄master02的表數(shù)據(jù)量為:462740條。


2)同時(shí)也記錄了master01數(shù)據(jù)庫上,該表的數(shù)據(jù)量為:462733條。與master02對比發(fā)現(xiàn)數(shù)據(jù)量少了7條。


4.3主鍵沖突

將master02上的這個(gè)表全表導(dǎo)出備份后,再將該表數(shù)據(jù)導(dǎo)入到master01中,最后還是報(bào)該表存在數(shù)據(jù)主鍵沖突,報(bào)錯(cuò)如下:


[
故障處理
]


5.1表數(shù)據(jù)恢復(fù)

在導(dǎo)入過程中,需要關(guān)閉binlog的記錄setsql_log_bin=0,避免導(dǎo)入數(shù)據(jù)表時(shí)報(bào)ID主鍵列沖突數(shù)據(jù)刷新到日志中,這樣master01的表數(shù)據(jù)就會被master02的表數(shù)據(jù)全部置換,在主主同時(shí)寫同時(shí)復(fù)制的情況下,之前一樣的數(shù)據(jù)就沒有了,最后剩下的是7條不一致的數(shù)據(jù)。雖然把主主復(fù)制功能恢復(fù)了,但是這個(gè)cer_work_order_temp表數(shù)據(jù)被新的二進(jìn)制文件數(shù)據(jù)置換掉了,最終導(dǎo)致這表數(shù)據(jù)丟失。


5.2全量和增量恢復(fù)

通過全備+增量備份在測試環(huán)境對cer_work_order_temp表進(jìn)行數(shù)據(jù)恢復(fù),先找到增量起始點(diǎn)position812016541結(jié)合二進(jìn)制日志進(jìn)行恢復(fù)該表在master02服務(wù)器上的數(shù)據(jù)。


第一個(gè)binlog日志恢復(fù)命令如下:

mysql-bin.000025一次執(zhí)行不完,分兩次執(zhí)行:

第一次:

mysqlbinlog --no-defaults --start-position="812016541" --stop-position="883789149" mysql-bin.000025 |mysql --login-path=myconn

第二次:

mysqlbinlog --no-defaults --start-position="883789256" mysql-bin.000025 |mysql --login-path=myconn


第二個(gè)binlog日志恢復(fù)命令如下:

因第二個(gè)日志mysql-bin.000026事務(wù)量比較大,如果像第一個(gè)binlog那樣恢復(fù)的話,時(shí)間會很慢,所以第二個(gè)日志binlog我們采用sql文件導(dǎo)入方式:

根據(jù)發(fā)生的故障時(shí)間點(diǎn),進(jìn)行二進(jìn)制日志數(shù)據(jù)的提取,提取方式如下所示:

mysqlbinlog   --stop-datetime=2020-07-07 23:59:59   mysql-bin.000026   > new_026.sql


5.3主鍵修復(fù)

刪除原表主鍵,再重建新表及1條索引,目的為了導(dǎo)入數(shù)據(jù)不沖突,并且導(dǎo)入速度快。

刪除主鍵并建索引:

alter table cer_work_order_temp drop primary key;

create index aa on cer_work_order_temp(serial_no);

創(chuàng)建新的aa表并把cer_work_order_temp信息同步:

create table aa as

select *,count(distinct serial_no) from cer_work_order_temp group by serial_no;


5.4導(dǎo)入修復(fù)好的表數(shù)據(jù)

再把new_026.sql數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫即可

[mysql@vgasmrzfaceresource02 ~]$cat mysql_in.sh

mysql --login-path=myconn<

use smzrz;

set names utf8mb4;

select database();

set sql_log_bin=0;

source /data/backup/new_026.sql

EOF


5.5校驗(yàn)數(shù)據(jù)

最終數(shù)據(jù)查詢,如下查詢已經(jīng)恢復(fù)到原始數(shù)據(jù)量。

最后把這個(gè)表數(shù)據(jù)mysqldump到master01/master02數(shù)據(jù)庫,再把雙主復(fù)制功能恢復(fù)就可以了。


[
故障總結(jié)
]


此次故障恢復(fù)還是算流暢的,沒有遇到較大的難點(diǎn),數(shù)據(jù)庫服務(wù)器恢復(fù)正常后,也通知業(yè)務(wù)側(cè)那邊進(jìn)行數(shù)據(jù)校驗(yàn),同時(shí)得到他們的認(rèn)可數(shù)據(jù)恢復(fù)一致,沒有問題再現(xiàn)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/130108.html

相關(guān)文章

  • MySQL集群搭建(3)-MMM高可用架構(gòu)

    摘要:上個(gè)文章集群搭建主主從模式中我們知道如何搭建主主從模式,今天這個(gè)文章正式進(jìn)入高可用的架構(gòu)。由開發(fā),用來管理和監(jiān)控雙主復(fù)制,雖然是雙主架構(gòu),但是業(yè)務(wù)上同一時(shí)間只允許一個(gè)節(jié)點(diǎn)進(jìn)行寫入操作。包含兩類角色和分別對應(yīng)讀寫節(jié)點(diǎn)和只讀節(jié)點(diǎn)。 上個(gè)文章 MySQL集群搭建(2)-主主從模式 中我們知道如何搭建 MySQL 主主從模式,今天這個(gè)文章正式進(jìn)入 MySQL 高可用的架構(gòu)。 1 MMM 介紹 ...

    _ivan 評論0 收藏0
  • MySQL高可用方案測試

    MySQL高可用方案測試 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin...

    IT那活兒 評論0 收藏2496

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<