公司有一套mysqlAB復(fù)制架構(gòu)的生產(chǎn)庫,一主一從的架構(gòu), 每周一凌晨0天都自動做全備。
一切正常,但今天(假設(shè)為周6)不小心誤刪除了一張表,從庫也會跟著做誤刪除。假設(shè)這張表里有好幾年的業(yè)務(wù)數(shù)據(jù), 如何恢復(fù)呢?
有以下幾種思路:
需要把這幾年內(nèi)所有的二進(jìn)制日志先合并,再通過sed,grep,awk等命令處理把這張表從建表到現(xiàn)在的所有操 作按順序找出來(當(dāng)然要除掉你最后誤刪除的那條),然后導(dǎo)回去(數(shù)據(jù)量太大就不建議了)
先恢復(fù)周一的全備到測試庫上,然后再恢復(fù)全備到現(xiàn)在的二進(jìn)制日志(除了誤刪除的那句),再把那張表導(dǎo)出 來,導(dǎo)回到生產(chǎn)庫上
有延時(shí)復(fù)制的話,在延時(shí)庫上導(dǎo)出這張表,導(dǎo)回A, 再用二進(jìn)制日志恢復(fù)延時(shí)時(shí)間內(nèi)的誤刪表的操作(除了誤刪除的那句)
從上面的分析來看,延時(shí)復(fù)制能夠在一定程序上簡化恢復(fù)的過程。
Maatkit是一個(gè)Perl寫的Mysql開源管理工具包,里面有一個(gè)可以在www.maatkit.org網(wǎng)站上下載軟件包。我這里軟包為
mk-slave-delay
maatkit-7540.tar.gz
命令可以實(shí)現(xiàn)延時(shí)復(fù)制。
搭建過程
首先需要搭建好mysqlAB復(fù)制(傳統(tǒng)AB復(fù)制,基于GTIDs的AB復(fù)制,半同步復(fù)制等都可以),然后做以下過程
1, 在需要做延時(shí)復(fù)制的slave上安裝mattkit
(注意: master和正常的slave不用安裝)
2, 確認(rèn)整個(gè)架構(gòu)所有機(jī)器時(shí)間同步
因?yàn)檠訒r(shí)是要按時(shí)間來計(jì)算的,所以時(shí)間必須要一致, 所有服務(wù)器執(zhí)行下面的命令,并比較時(shí)間
3, 運(yùn)行延時(shí)復(fù)制進(jìn)程
確認(rèn)時(shí)間一致, 并且AB復(fù)制正常的情況下, 在slave上執(zhí)行下面的命令
4, 測試
在slave上查看復(fù)制狀態(tài),會發(fā)現(xiàn)SQL線程為NO,這是正常的,因?yàn)檠訒r(shí)復(fù)制里IO線程是實(shí)時(shí)的,只是把SQL線程延時(shí)了
然后在master上找一個(gè)測試表插入幾條數(shù)據(jù),等待1分鐘后,才會看到數(shù)據(jù)在salve上復(fù)制成功。
-
MySQL
+關(guān)注
關(guān)注
1文章
931瀏覽量
29753 -
線程
+關(guān)注
關(guān)注
0文章
510瀏覽量
20872
發(fā)布評論請先 登錄
MySQL 到 SelectDB 實(shí)時(shí)同步:傳統(tǒng) ETL 與 NineData 的能力側(cè)重
從業(yè)務(wù)庫到實(shí)時(shí)分析庫,NineData 構(gòu)建 MySQL到SelectDB 同步鏈路
NineData 新增支持 MySQL 到 openGauss PostgreSQL 數(shù)據(jù)復(fù)制鏈路
恒訊科技解析:如何安裝MySQL并創(chuàng)建數(shù)據(jù)庫
如何在Zephyr RTOS中實(shí)現(xiàn)延時(shí)和計(jì)時(shí)函數(shù)
CentOS 7下MySQL 8雙主熱備高可用架構(gòu)全解
MySQL 8.0性能優(yōu)化實(shí)戰(zhàn)指南
MySQL數(shù)據(jù)備份與恢復(fù)策略
企業(yè)級MySQL數(shù)據(jù)庫管理指南
應(yīng)用中的“復(fù)制功能”如何實(shí)現(xiàn)##HarmonyOS應(yīng)用開發(fā)##
介紹三種常見的MySQL高可用方案
MYSQL集群高可用和數(shù)據(jù)監(jiān)控平臺實(shí)現(xiàn)方案
MySQL數(shù)據(jù)庫是什么
利用dockerfile搭建mysql主從集群和redis集群
MySQL實(shí)現(xiàn)延時(shí)復(fù)制
評論