Mysql誤刪除DELETE數(shù)據(jù)找回操作指南
1.查看binlog是否開啟
show variables like '%log_bin%';
2.查看數(shù)據(jù)文件存放路徑:bin-log路徑
show variables like '%datadir%';
3.找到刪除時間段的binlog,翻譯為sql
mysqlbinlog --base64-output=decode-rows -v --database=數(shù)據(jù)庫名 --start-datetime="2022-10-19 16:40:00" --stop-datetime="2022-10-19 16:450:00" "D:\Program Files\mysql-5.7.30-winx64\mysqldb\bin.000041" > d:\mysqllog.sql
4.在生成的 mysqllog.sql 文件同路徑下 ,生成將delete翻譯為insert的sql文件
linux:
cat mysqllog.sql | sed -n '/###/p' | sed 's/### //g;s//*./,/g;s/DELETE FROM/;INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@17.),/\1;/g' | sed 's/@1=//g'| sed 's/@[1-9]=/,/g' | sed 's/@[1-9][0-9]=/,/g' > mysqllogOK.sql
5、windows:
在生成的sql文件同目錄下,創(chuàng)建.vbs文件,寫入如下內(nèi)容,并雙擊執(zhí)行
'========================== '用VBS實現(xiàn) MYSQL binglog DELETE轉(zhuǎn)INSERT '========================== function replaceregex(patern,str,tagstr) dim regex,matches set regex=new regExp regex.pattern=patern regex.IgnoreCase=true regex.global=true matches=regex.replace(str,tagstr) replaceregex=matches end function 'Mysql binlog DELETE轉(zhuǎn)INSERT========== 'VBS打開文本文件 Set oldStream = CreateObject(“ADODB.Stream”) oldStream.CharSet = “utf-8” oldStream.Open oldStream.LoadFromFile(“mysqllog.sql”) 'binLog生成的DELETE原日志文件 oldText = oldStream.ReadText() newText=replace(oldText,“### DELETE FROM”, “;INSERT INTO”) newText=replace(newText,“### WHERE”, “SELECT”) newText=replace(newText,“###”, “”) newText=replace(newText,“@1=”, “”) newText=replaceregex(“@[1-9]=”,newText, “,”) newText=replaceregex(“@[1-9][0-9]=”,newText, “,”) oldStream.Close 'VBS保存文件 Set newStream = CreateObject(“ADODB.Stream”) newStream.Type = 2 'Specify stream type - we want To save text/string data. newStream.Charset = “utf-8” 'Specify charset For the source text data. newStream.Open 'Open the stream And write binary data To the object newStream.WriteText newText newStream.SaveToFile “mysqllogOK.sql”, 2 'DELETE轉(zhuǎn)成INSERT以后的新的SQL文件名 newStream.Close
6、把mysqllog.sql文件和生成的windows中的.vbs放在同一個文件夾中雙擊執(zhí)行生成mysqllogOK.sql文件
7、進(jìn)入mysqllogOK.sql文件刪除其中的delete保留insert再去執(zhí)行mysqllogOK.sql就成功了
8、如果binlog日志沒有開啟可以進(jìn)行開啟
linux:
cd /usr/etc/vim my.cnf
log-bin=mysql-bin # 開啟Binlog 一般只需要修改這一行即可 binlog-format=ROW # 設(shè)置格式 此行可以不加 命令設(shè)置即可 詳見下方拓展 server_id=1 # 配置serverID 這一行本來就存在 systemctl restart mysqld #重啟mysql
總結(jié)
到此這篇關(guān)于Mysql誤刪除DELETE數(shù)據(jù)找回操作的文章就介紹到這了,更多相關(guān)Mysql誤刪除數(shù)據(jù)找回內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
數(shù)據(jù)庫面試必備之MySQL中的樂觀鎖與悲觀鎖
這篇文章主要介紹了數(shù)據(jù)庫面試必備之MySQL中樂觀鎖與悲觀鎖的相關(guān)資料,樂觀鎖適用于讀多寫少的場景,通過版本號檢查避免沖突,而悲觀鎖適用于寫多讀少且對數(shù)據(jù)一致性要求極高的場景,通過加鎖確保數(shù)據(jù)一致,需要的朋友可以參考下2025-04-04原來MySQL?數(shù)據(jù)類型也可以優(yōu)化
這篇文章主要介紹了原來MySQL?數(shù)據(jù)類型也可以優(yōu)化,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-08-08MySQL數(shù)據(jù)庫如何正確設(shè)置主鍵
主鍵是用于唯一標(biāo)識數(shù)據(jù)庫表中每一行數(shù)據(jù)的一列或一組列,主鍵可以確保數(shù)據(jù)的唯一性和完整性,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫如何正確設(shè)置主鍵的相關(guān)資料,需要的朋友可以參考下2024-04-04快速解決MySQL服務(wù)無法啟動顯示:系統(tǒng)出錯,發(fā)生系統(tǒng)錯誤1067, 進(jìn)程意外終止的兩種方法
本人因為phpstudy的MySQL數(shù)據(jù)庫與我的電腦上的MySQL數(shù)據(jù)庫發(fā)生沖突,當(dāng)我將MySQL服務(wù)器的服務(wù)名從MySQL改為MySQL5后,啟動MySQL5服務(wù)后就報錯:系統(tǒng)出錯, 發(fā)生系統(tǒng)錯誤 1067, 進(jìn)程意外終止,現(xiàn)在將這個解決方法分享給大家,需要的朋友可以參考下2024-06-06MySQL?中的?SQL_MODE?設(shè)置方法ANSI_QUOTES?選項解析與應(yīng)用小結(jié)
sql_mode是?MySQL?中的一個系統(tǒng)變量,用于控制?SQL?語句的解析和執(zhí)行方式,它由多個選項組成,每個選項都可以獨立設(shè)置,以滿足不同的應(yīng)用場景需求,這篇文章主要介紹了MySQL?中的?SQL_MODE?設(shè)置:ANSI_QUOTES?選項解析與應(yīng)用2024-12-12Ubuntu 18.04配置mysql以及配置遠(yuǎn)程連接的步驟
這篇文章主要給大家介紹了關(guān)于Ubuntu 18.04配置mysql以及配置遠(yuǎn)程連接的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07