大東網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,大東網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為大東上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的大東做網(wǎng)站的公司定做!
公司有一套MySQLAB復(fù)制架構(gòu)的生產(chǎn)庫,一主一從的架構(gòu), 每周一凌晨0天都自動做全備。
一切正常,但今天(假設(shè)為周6)不小心誤刪除了一張表,從庫也會跟著做誤刪除。假設(shè)這張表里有好幾年的業(yè)務(wù)數(shù)據(jù), 如何恢復(fù)呢?
有以下幾種思路:
需要把這幾年內(nèi)所有的二進制日志先合并,再通過sed,grep,awk等命令處理把這張表從建表到現(xiàn)在的所有操 作按順序找出來(當(dāng)然要除掉你最后誤刪除的那條),然后導(dǎo)回去(數(shù)據(jù)量太大就不建議了)
先恢復(fù)周一的全備到測試庫上,然后再恢復(fù)全備到現(xiàn)在的二進制日志(除了誤刪除的那句),再把那張表導(dǎo)出 來,導(dǎo)回到生產(chǎn)庫上
有延時復(fù)制的話,在延時庫上導(dǎo)出這張表,導(dǎo)回A, 再用二進制日志恢復(fù)延時時間內(nèi)的誤刪表的操作(除了誤刪除的那句)
從上面的分析來看,延時復(fù)制能夠在一定程序上簡化恢復(fù)的過程。
Maatkit是一個Perl寫的Mysql開源管理工具包,里面有一個可以在www.maatkit.org網(wǎng)站上下載軟件包。我這里軟包為
mk-slave-delay
maatkit-7540.tar.gz
命令可以實現(xiàn)延時復(fù)制。
搭建過程
首先需要搭建好mysqlAB復(fù)制(傳統(tǒng)AB復(fù)制,基于GTIDs的AB復(fù)制,半同步復(fù)制等都可以),然后做以下過程
1, 在需要做延時復(fù)制的slave上安裝mattkit
(注意: master和正常的slave不用安裝)
2, 確認整個架構(gòu)所有機器時間同步
因為延時是要按時間來計算的,所以時間必須要一致, 所有服務(wù)器執(zhí)行下面的命令,并比較時間
3, 運行延時復(fù)制進程
確認時間一致, 并且AB復(fù)制正常的情況下, 在slave上執(zhí)行下面的命令
4, 測試
在slave上查看復(fù)制狀態(tài),會發(fā)現(xiàn)SQL線程為NO,這是正常的,因為延時復(fù)制里IO線程是實時的,只是把SQL線程延時了
然后在master上找一個測試表插入幾條數(shù)據(jù),等待1分鐘后,才會看到數(shù)據(jù)在salve上復(fù)制成功。
來源于:黑馬程序員百家號。