當(dāng)MySQL主庫(kù)宕機(jī)時(shí),可以采取以下步驟:
檢查主庫(kù)的故障原因:主庫(kù)宕機(jī)可能是由于硬件故障、網(wǎng)絡(luò)中斷、操作系統(tǒng)崩潰等多種原因造成的。首先需要檢查主庫(kù)的日志和錯(cuò)誤日志,確認(rèn)宕機(jī)原因。
啟動(dòng)備庫(kù):如果主庫(kù)無(wú)法修復(fù)或修復(fù)時(shí)間過長(zhǎng),可以將備庫(kù)提升為新的主庫(kù)。在宕機(jī)期間,備庫(kù)一直在進(jìn)行數(shù)據(jù)同步,因此可以將備庫(kù)設(shè)置為可寫入模式,接受客戶端的讀寫請(qǐng)求。
修改應(yīng)用程序的數(shù)據(jù)庫(kù)連接:將應(yīng)用程序中連接主庫(kù)的數(shù)據(jù)庫(kù)連接信息修改為連接新的主庫(kù)的信息。
將修復(fù)后的主庫(kù)重新加入復(fù)制拓?fù)洌寒?dāng)主庫(kù)修復(fù)完成后,需要將其重新加入主從復(fù)制拓?fù)???梢允褂肅HANGE MASTER TO命令更新備庫(kù)的主庫(kù)信息,并啟動(dòng)復(fù)制進(jìn)程。
數(shù)據(jù)同步:備庫(kù)成為了新的主庫(kù)后,需要確保它與之前的主庫(kù)之間的數(shù)據(jù)同步??梢允褂霉ぞ呷鏿t-table-checksum和pt-table-sync來檢測(cè)和修復(fù)數(shù)據(jù)不一致的問題。
恢復(fù)原來主庫(kù)的數(shù)據(jù)庫(kù):如果主庫(kù)修復(fù)完成后,需要將其重新加入主從復(fù)制拓?fù)洌⒗^續(xù)擔(dān)任備庫(kù)的角色??梢允褂肅HANGE MASTER TO命令更新原來備庫(kù)的主庫(kù)信息,并啟動(dòng)復(fù)制進(jìn)程。
需要注意的是,在進(jìn)行上述操作之前,應(yīng)備份主庫(kù)和備庫(kù)的數(shù)據(jù),以防止數(shù)據(jù)丟失。