Mysql誤刪除DELETE數據找回操作指南
1.查看binlog是否開啟
show variables like '%log_bin%';
2.查看數據文件存放路徑:bin-log路徑
show variables like '%datadir%';
3.找到刪除時間段的binlog,翻譯為sql
mysqlbinlog --base64-output=decode-rows -v --database=數據庫名 --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文件,寫入如下內容,并雙擊執(zhí)行
'========================== '用VBS實現 MYSQL binglog DELETE轉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轉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轉成INSERT以后的新的SQL文件名 newStream.Close
6、把mysqllog.sql文件和生成的windows中的.vbs放在同一個文件夾中雙擊執(zhí)行生成mysqllogOK.sql文件
7、進入mysqllogOK.sql文件刪除其中的delete保留insert再去執(zhí)行mysqllogOK.sql就成功了
8、如果binlog日志沒有開啟可以進行開啟
linux:
cd /usr/etc/vim my.cnf
log-bin=mysql-bin # 開啟Binlog 一般只需要修改這一行即可 binlog-format=ROW # 設置格式 此行可以不加 命令設置即可 詳見下方拓展 server_id=1 # 配置serverID 這一行本來就存在 systemctl restart mysqld #重啟mysql
總結
到此這篇關于Mysql誤刪除DELETE數據找回操作的文章就介紹到這了,更多相關Mysql誤刪除數據找回內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
快速解決MySQL服務無法啟動顯示:系統(tǒng)出錯,發(fā)生系統(tǒng)錯誤1067, 進程意外終止的兩種方法
本人因為phpstudy的MySQL數據庫與我的電腦上的MySQL數據庫發(fā)生沖突,當我將MySQL服務器的服務名從MySQL改為MySQL5后,啟動MySQL5服務后就報錯:系統(tǒng)出錯, 發(fā)生系統(tǒng)錯誤 1067, 進程意外終止,現在將這個解決方法分享給大家,需要的朋友可以參考下2024-06-06MySQL?中的?SQL_MODE?設置方法ANSI_QUOTES?選項解析與應用小結
sql_mode是?MySQL?中的一個系統(tǒng)變量,用于控制?SQL?語句的解析和執(zhí)行方式,它由多個選項組成,每個選項都可以獨立設置,以滿足不同的應用場景需求,這篇文章主要介紹了MySQL?中的?SQL_MODE?設置:ANSI_QUOTES?選項解析與應用2024-12-12Ubuntu 18.04配置mysql以及配置遠程連接的步驟
這篇文章主要給大家介紹了關于Ubuntu 18.04配置mysql以及配置遠程連接的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-07-07