MySQL恢復(fù)誤刪數(shù)據(jù)圖文教程
MySQL 恢復(fù)誤刪數(shù)據(jù),針對 window 和 Linux 均適用,只需要找到對應(yīng)的 binlog 目錄文件,默認(rèn)就是 MySQL 安裝目錄下的 data 文件夾
一般誤刪數(shù)據(jù),先停止所有操作,備份數(shù)據(jù)庫
# 備份所有數(shù)據(jù)庫 mysqldump -uroot -p123456 --all-databases > /backup/mysqldump/all.db # 恢復(fù)數(shù)據(jù) mysql -uroot -p db_name < /backup/mysqldump/db_name.db
1、查看是否啟用 binlog 日志
SHOW VARIABLES LIKE '%log_bin%'

2、查看所有 binlog 日志
SHOW BINARY LOGS;

3、查看正在使用的日志
SHOW MASTER STATUS;

4、查找日志所在文件夾
SHOW VARIABLES LIKE '%datadir%';

5、log 日志轉(zhuǎn) sql
使用上面使用的 binlog.000056 文件,先把 該文件復(fù)制到其他地方
mysqlbinlog E:\test\result\binlog.000056 > E:\test\result\db.sql
有可能報(bào)錯(cuò)

添加 --no-defaults 參數(shù)可以解決,但中文會亂碼(使用下面 vbs 或自定義語言實(shí)現(xiàn)可解決 亂碼問題),一般要加上時(shí)間字段轉(zhuǎn)換 sql
mysqlbinlog --no-defaults --base64-output=decode-rows -v --database=oauth --start-datetime="2023-06-01 01:44:00" --stop-datetime="2023-06-01 01:48:00" F:\mysql-8.0.29-winx64\data\binlog.000058 > E:\test\result\db.sql
轉(zhuǎn)換成功如下,可以看到刪除 sql 的語句

接下來只需要將上面的 delete 語句轉(zhuǎn)換為 inert 即可恢復(fù)誤刪數(shù)據(jù),如果需要轉(zhuǎn)換的多可以通過代碼自定義實(shí)現(xiàn),主要就是將
delete 轉(zhuǎn) insert
6、delete 轉(zhuǎn) insert 恢復(fù)誤刪
通過 vbs 腳本轉(zhuǎn)換 sql 語句,當(dāng)然也可以使用其他的語言,window 執(zhí)行 vbs 不需要額外的環(huán)境,你只需要修改下面 vbs 文件中輸入輸出文件名以及編碼類型即可
'==========================
'用VBS實(shí)現(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
'binLog 生成的 DELETE 原日志文件'
oldStream.LoadFromFile("E:\test\result\db.sql")
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
轉(zhuǎn)換結(jié)果如下,自行選擇新增恢復(fù)數(shù)據(jù)

總結(jié)
到此這篇關(guān)于MySQL恢復(fù)誤刪數(shù)據(jù)的文章就介紹到這了,更多相關(guān)MySQL恢復(fù)誤刪數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 關(guān)于mysql數(shù)據(jù)庫誤刪除后的數(shù)據(jù)恢復(fù)操作說明
- MySQL數(shù)據(jù)庫誤刪恢復(fù)的超詳細(xì)教程
- Mysql恢復(fù)誤刪庫表數(shù)據(jù)完整場景演示
- MySQL誤刪后使用binlog恢復(fù)數(shù)據(jù)的實(shí)現(xiàn)方法
- MySQL使用MyFlash快速恢復(fù)誤刪除和修改的數(shù)據(jù)
- MYSQL?Binlog恢復(fù)誤刪數(shù)據(jù)庫詳解
- mysql誤刪數(shù)據(jù)后快速恢復(fù)的辦法推薦
- MySQL數(shù)據(jù)庫誤刪恢復(fù)的幾種方式實(shí)現(xiàn)
相關(guān)文章
在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份
備份是容災(zāi)的基礎(chǔ),是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全部或部分?jǐn)?shù)據(jù)集合從應(yīng)用主機(jī)的硬盤或陣列復(fù)制到其它的存儲介質(zhì)的過程,本文將給大家介紹了在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下2023-12-12
mysql中自增auto_increment功能的相關(guān)設(shè)置及問題
mysql中的自增auto_increment功能相信每位phper都用過,本文就為大家分享一下mysql字段自增功能的具體查看及設(shè)置方法2012-12-12
解決hibernate+mysql寫入數(shù)據(jù)庫亂碼
初次沒習(xí)hibernate,其中遇到問題在網(wǎng)上找的答案與大家共同分享!2009-07-07
Mysql存儲過程循環(huán)內(nèi)嵌套使用游標(biāo)示例代碼
本節(jié)主要介紹了Mysql存儲過程循環(huán)內(nèi)如何嵌套使用游標(biāo),詳細(xì)實(shí)現(xiàn)如下,需要的朋友不要錯(cuò)過2014-08-08
MySQL注釋的三種寫法之單行注釋、多行注釋和特殊注釋的使用方法
本文詳細(xì)介紹了MySQL注釋的各個(gè)方面,包括注釋的定義、重要性、三種注釋方式(單行注釋、多行注釋和特殊注釋)以及它們的使用場景、語法和最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧2026-03-03

