【技術(shù)實(shí)戰(zhàn)】使用binlog日志恢復(fù)MySQL數(shù)據(jù)庫刪除數(shù)據(jù)的方法
瀏覽量: 次 發(fā)布日期:2023-10-11 19:12:03
【技術(shù)實(shí)戰(zhàn)】使用binlog日志恢復(fù)MySQL數(shù)據(jù)庫刪除數(shù)據(jù)的方法
binlog日志簡介
binlog 就是binary log,二進(jìn)制日志文件,這個(gè)文件記錄了MySQL所有的DDL和DML(除了數(shù)據(jù)查詢語句)語句,以事件形式記錄,還包含語句所執(zhí)行的消耗的時(shí)間。
binlog日志包括兩類文件:
1)二進(jìn)制日志索引文件(文件名后綴為.index):用于記錄所有的二進(jìn)制文件;
2)二進(jìn)制日志文件(文件名后綴為.00000*):記錄數(shù)據(jù)庫所有的DDL和DML(除了數(shù)據(jù)查詢語句select)語句事件。
binlog日志對于mysql數(shù)據(jù)庫來說是十分重要的。在數(shù)據(jù)丟失的緊急情況下,可以嘗試用binlog日志功能進(jìn)行數(shù)據(jù)恢復(fù)操作。
正是由于binlog日志以上的特性,在實(shí)際的案件取證中也可以通過binlog日志來恢復(fù)刪除數(shù)據(jù)。
要通過binlog日志恢復(fù)mysql數(shù)據(jù)庫刪除數(shù)據(jù)的前提:binlog日志確定是開啟的。
查看binlog日志是否開啟
有以下三種方法
方法一:
打開MySQL數(shù)據(jù)庫的配置文件(windows系統(tǒng)中的配置文件為my.ini,一般在安裝目錄的根目錄下;Linux系統(tǒng)中配置文件為my.cnf,一般在/usr/local/mysql/etc/目錄下),在配置文件中查看log-bin=MySQL-bin有沒有被注釋掉(每行第一個(gè)字符為#號表示該行被注釋),若沒被注釋表示開啟,若被注釋表示沒有開啟。
方法二:
在MySQL命令行下使用show variables like ‘log_bin’;命令查看binlog日志是否開啟,Value的值為ON表示開啟,為OFF表示關(guān)閉。
方法三:
在存放數(shù)據(jù)庫的文件夾中是否存在mysql-bin.000001類似的文件,有則表示binlog日志功能是開啟的。
在數(shù)據(jù)恢復(fù)過程中會用到的
binlog日志操作命令
1、查看所有binlog日志列表:
在mysql命令界面輸入命令: mysql> show master logs
2、查看master狀態(tài),即最后(最新)一個(gè)binlog日志的編號名稱及其最后一個(gè)操作事件pos結(jié)束點(diǎn)(Position)值:
在mysql命令界面輸入命令: mysql> show master status
3、刷新log日志,自此刻開始產(chǎn)生一個(gè)新編號的binlog日志文件:
在mysql命令界面輸入命令:mysql> flush logs
注:每當(dāng)mysqld服務(wù)重啟時(shí),會自動執(zhí)行此命令,刷新binlog日志;在mysqldump備份數(shù)據(jù)時(shí)加 -F 選項(xiàng)也會刷新binlog日志
4、重置(清空)所有binlog日志:
在mysql命令界面輸入命令:mysql> reset master
如何讀取binlog日志中的內(nèi)容?
1、使用mysqlbinlog自帶查看命令法:
注: binlog是二進(jìn)制文件,普通文件查看器cat more vi等都無法打開,必須使用自帶的 mysqlbinlog 命令查看binlog日志與數(shù)據(jù)庫文件在同目錄中。常州數(shù)據(jù)恢復(fù)
Mysql安裝路徑下的bin文件夾下輸入以下命令:
C:\xampp\mysql\bin>mysqlbinlog C:\xampp\mysql\data\mysql-bin.000009
2、上面這種辦法讀取出binlog日志的全文內(nèi)容較多,不容易分辨查看pos點(diǎn)信息,這里介紹一種更為方便的查詢命令在MySQL的命令界面:
在mysql命令界面輸入:mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
選項(xiàng)解析↓
IN 'log_name':指定要查詢的binlog文件名(不指定就是第一個(gè)binlog文件)FROM pos:指定從哪個(gè)pos起始點(diǎn)開始查起(不指定就是從整個(gè)文件首個(gè)pos點(diǎn)開始算)
LIMIT [offset,]:偏移量(不指定就是0)
row_count:查詢總條數(shù)(不指定就是所有行)
刪除數(shù)據(jù)案例及操作步驟
下面我們通過一個(gè)實(shí)例操作來完整查看「如何通過binlog日志恢復(fù)MySQL數(shù)據(jù)庫刪除數(shù)據(jù)。
案例介紹
現(xiàn)有MySQL數(shù)據(jù)庫,其中有名為test的數(shù)據(jù)庫,其中沒有任何的表,懷疑數(shù)據(jù)被刪除,在該電腦中還發(fā)現(xiàn)了該數(shù)據(jù)庫的備份,備份最后被修改的時(shí)間為2018-11-21 15:27:12。
目的
查看是否有刪除的操作,如有刪除嘗試恢復(fù)出刪除的表的內(nèi)容。
思路分析
1、判斷數(shù)據(jù)庫是否開啟了binlog日志的功能;2、通過binlog日志查詢是否有刪除的操作;
3、若刪除了數(shù)據(jù),通過binlog日志恢復(fù)數(shù)據(jù)庫中的內(nèi)容。
下圖就是通過binlog日志實(shí)現(xiàn)增量恢復(fù)數(shù)據(jù)庫刪除數(shù)據(jù)的流程:
點(diǎn)擊圖片查看大圖
01
判斷數(shù)據(jù)庫是否開啟了binlog日志:
在MySQL命令行下使用show variables like‘log_bin’;命令中l(wèi)og_bin的Value為ON,該數(shù)據(jù)庫的binlog日志是開啟的。
02
揚(yáng)州數(shù)據(jù)恢復(fù)判斷數(shù)據(jù)庫是否有被刪除的操作:
1)在mysql命令界面通過show master logs;命令查看binlog日志列表,發(fā)現(xiàn)一共有8條日志。
2)在mysql命令界面通過命令show binlog events in 'mysql-bin.000008';可以查看最后兩條命令為“use ‘test‘;delete from t1,use `test`;DROP TABLE `t1`”由此可判斷出數(shù)據(jù)庫test中t1表中的內(nèi)容被清空了,并且把表也刪除了。
03
恢復(fù)數(shù)據(jù)庫中刪除的數(shù)據(jù):
1)由于表t1被刪除了,沒有該表的數(shù)據(jù)結(jié)構(gòu)無法直接通過binlog日志來恢復(fù)刪除的數(shù)據(jù);但是我們在電腦中發(fā)現(xiàn)了該數(shù)據(jù)庫的備份,直接還原后就可以得到表t1的數(shù)據(jù)結(jié)構(gòu)。(這里不做還原的詳細(xì)解說,如果您想了解還原詳細(xì)操作步驟,可在后臺留言)。
恢復(fù)出的數(shù)據(jù)結(jié)構(gòu)
2)備份最后修改時(shí)間為2018-11-21 15:27:12,MySQL-bin.000008的創(chuàng)建時(shí)間為2018?-?11?-?20 ??14:15:40,可以推斷出備份后表t1的所有操作都在該日志中。
3)在mysql命令界面使用命令show binlog events in 'mysql-bin.000008';打開最后一個(gè)日志文件,找出開始和結(jié)尾的pos點(diǎn),分別為:4和1223,如下圖:
南京數(shù)據(jù)恢復(fù)4)提取日志文件該段落:在mysql安裝界面的bin目錄下輸入一下命令:
mysqlbinlog C:\xampp\data\mysql-bin.000008 --start-position=4 --stop-position=1223 -r 1.sql,該命令把日志文件中的所有語句提取到了bin目錄下的1.sql中。
5)通過分析該sql文件可以發(fā)現(xiàn)其中記錄了每一條命令的執(zhí)行的時(shí)間,找到備份創(chuàng)建時(shí)間2018-11-21 15:27:12之后的所有命令另存為2.sql。如下圖:
6)另存為2.sql后,把最后兩條刪除的命令去除,直接在數(shù)據(jù)庫中運(yùn)行,就可以恢復(fù)出表中的所有數(shù)據(jù)。
注
意
事
項(xiàng)
1、在恢復(fù)之前一定要確認(rèn)MySQL數(shù)據(jù)庫的binlog日志是開啟的;
2、若把表刪除一定要想辦法把表的數(shù)據(jù)結(jié)構(gòu)找到,這樣才能準(zhǔn)確的恢復(fù)出數(shù)據(jù);
3、binlog日志中是記錄了每條語句的執(zhí)行時(shí)間的,可以通過時(shí)間來恢復(fù);
4、在截取插入語句的時(shí)候一定要注意不要把最后一條刪除的語句截取到,不然恢復(fù)的數(shù)據(jù)又會被刪除。
“
以上就是使用binlog日志恢復(fù)MySQL數(shù)據(jù)庫刪除數(shù)據(jù)的方法,希望上述的問題解決思路能給大家一些參考和幫助。如對文中的操作、描述有任何疑問,或者有相關(guān)數(shù)據(jù)庫恢復(fù)案件協(xié)助支持也可以直接在微信公眾號后臺給我們留言。”
【相關(guān)閱讀】
【技術(shù)實(shí)戰(zhàn)】行車記錄儀數(shù)據(jù)刪除如何恢復(fù)?
【技術(shù)實(shí)戰(zhàn)】阿里云網(wǎng)站服務(wù)器鏡像取證方法
【技術(shù)實(shí)戰(zhàn)】Access數(shù)據(jù)庫解密方法
【技術(shù)視界】Access數(shù)據(jù)庫文件恢復(fù)提取技術(shù)介紹
【技術(shù)視界】受損固態(tài)硬盤(SSD)數(shù)據(jù)恢復(fù)方法(文內(nèi)有福利)
【技術(shù)視界】虛擬機(jī)文件取證技術(shù)研究
【技術(shù)實(shí)戰(zhàn)】如何對有訪問密碼的MySQL數(shù)據(jù)庫進(jìn)行取證?
【便攜易用】只讀設(shè)備新選擇
【技術(shù)實(shí)戰(zhàn)】安卓模擬器數(shù)據(jù)提取分析方法
【技術(shù)實(shí)戰(zhàn)】樹莓派的數(shù)據(jù)固定與提取方法
【技術(shù)視界】暗網(wǎng)取證思路和方法研究
【技術(shù)視界】WhatsApp取證:對未root手機(jī)的數(shù)據(jù)庫解密以及刪除數(shù)據(jù)的提取
. 六安移動硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù),守護(hù)您的數(shù)據(jù)安全
. 硬盤數(shù)據(jù)恢復(fù)拆盤,拆盤操作與數(shù)據(jù)恢復(fù)技術(shù)解析
. 硬盤數(shù)據(jù)恢復(fù)圖書,從原理到實(shí)踐的技術(shù)解析
. emcc存儲和ssd,EMCC存儲優(yōu)化與SSD性能提升技術(shù)解析
. 硬盤數(shù)據(jù)恢復(fù)從哪學(xué),從原理到實(shí)踐的技術(shù)解析
. 杭州機(jī)械硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù)助力數(shù)據(jù)失而復(fù)得
. 上海機(jī)械硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù)守護(hù)數(shù)據(jù)安全
. 硬盤內(nèi)部儲存器,存儲技術(shù)的核心與未來趨勢
. 回天移動硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù)守護(hù)數(shù)據(jù)安全
. 楊浦區(qū)硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù)助力數(shù)據(jù)安全與恢復(fù)
. deepke源碼,揭秘知識圖譜嵌入技術(shù)的核心原理與實(shí)踐
. 數(shù)據(jù)恢復(fù)中心有哪些,揭秘硬盤故障與數(shù)據(jù)丟失的解決方案n2. 硬盤數(shù)據(jù)恢復(fù)攻略:數(shù)據(jù)恢
. 國內(nèi)有哪些ai大模型,技術(shù)突破與產(chǎn)業(yè)應(yīng)用全景
. 硬盤數(shù)據(jù)恢復(fù)re,技術(shù)原理、方法與案例分析
. deepded,DeepDed的突破性技術(shù)與應(yīng)用
. oracle數(shù)據(jù)庫數(shù)據(jù)恢復(fù),Oracle數(shù)據(jù)庫數(shù)據(jù)恢復(fù)策略與實(shí)戰(zhàn)指南
. superrecovery超級硬盤數(shù)據(jù)恢復(fù),superrecovery技術(shù)解析與應(yīng)用
. 唐山機(jī)械硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù)助力數(shù)據(jù)安全
. 移動硬盤維修的地方,專業(yè)技術(shù)守護(hù)數(shù)據(jù)安全
. 哪里可以學(xué)ai技術(shù),探索AI技術(shù)學(xué)習(xí)之路