windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)問(wèn)題
1.首先查看是否開(kāi)啟了binlog
show variables like '%log_bin%';

看到了是沒(méi)有開(kāi)啟的。
2.開(kāi)啟binlog日志,并重啟mysql服務(wù)
不能通過(guò)命令的方式去打開(kāi),因?yàn)闀?huì)提示說(shuō)這個(gè)參數(shù)是只讀的。如下圖:

所以,打開(kāi)mysql的配置文件,找到mysql的配置文件(和Linux下的文件名是不一樣的,Linux是my.cnf),windows默認(rèn)的在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
在[mysqld]節(jié)點(diǎn)下添加 log-bin= mysqlbinlog binlog-format=ROW

配置好之后,要進(jìn)行重啟mysql服務(wù),沒(méi)有重啟之前該路徑目錄長(zhǎng)這樣子

重啟服務(wù)
在任務(wù)管理器中找到mysql右鍵點(diǎn)擊重新啟動(dòng)。

重啟服務(wù)之后該文件的目錄長(zhǎng)這樣子,新添加了如圖所示的文件。

此時(shí)在命令行中再去查看是否開(kāi)啟了binlog,

3.查看有哪些binlog文件和正在使用的binlog文件
查看有哪些binlog文件
show binary logs; 或者 show master logs;

查看當(dāng)前正在使用的是哪一個(gè)binlog文件
show master status;

4.binlog中的事件(show binlog events)數(shù)據(jù)恢復(fù)就會(huì)使用到該命令
我們執(zhí)行命令都是以事件的形式操作的
查看所有的事件 show binlog events; 當(dāng)binlog文件比較多的時(shí)候可以加條件來(lái)查看具體的某一個(gè)文件中的所有事件 show binlog events in 'mysqlbinlog.000001';

5.創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)和一張表并插入數(shù)據(jù)之后再次查看binlog中的事件(show binlog events)
create database binlogtest;

創(chuàng)建數(shù)據(jù)庫(kù)后,再查看binlog日志文件,就看到剛剛執(zhí)行的創(chuàng)建數(shù)據(jù)庫(kù)的命令事件。

在剛才創(chuàng)建的數(shù)據(jù)庫(kù)下面新建一張測(cè)試表并插入數(shù)據(jù)。
mysql> use binlogtest; Database changed mysql> CREATE TABLE test ( id int NOT NULL AUTO_INCREMENT, name varchar(10) DEFAULT NULL, age int DEFAULT 0, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; mysql> insert into test values(1,'zhangsan',20); Query OK, 1 row affected (0.01 sec) mysql> insert into test values(2,'lisi',30); Query OK, 1 row affected (0.00 sec) mysql> insert into test values(3,'wangwu',40); Query OK, 1 row affected (0.00 sec)
show binlog events in 'mysqlbinlog.000001';
已經(jīng)將創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表、新增數(shù)據(jù)庫(kù)日志都添加進(jìn)去了。

6.查看binlog文件中的內(nèi)容(mysqlbinlog)
由于binlog是二進(jìn)制的文件,是不能直接查看的,可以使用mysqlbinlog命令就可以轉(zhuǎn)換成人能夠看懂的內(nèi)容,進(jìn)入到C:\ProgramData\MySQL\MySQL Server 5.7\Data下面打開(kāi)cmd
結(jié)尾沒(méi)有分號(hào)
mysqlbinlog "mysqlbinlog.000001" 或者將binlog文件換成人能夠看懂的文件 mysqlbinlog "mysqlbinlog.000001">"test.sql"

轉(zhuǎn)成文件


在控制臺(tái)不好看,用記事本打開(kāi)方便查看

7.數(shù)據(jù)恢復(fù)

現(xiàn)在做了一個(gè)偉大的壯舉,,,刪庫(kù)了

已經(jīng)刪庫(kù)了,現(xiàn)在要進(jìn)行數(shù)據(jù)的恢復(fù)
查看有哪些binlog文件(這個(gè)binlog文件是重啟一次mysql服務(wù)就會(huì)形成一個(gè)新的文件mysqlbinlog.000002 …后綴依次累加)
show binary logs;

查看刪庫(kù)之前執(zhí)行過(guò)的操作事件,并找到要恢復(fù)數(shù)據(jù)的起點(diǎn)和終點(diǎn)(這里在控制到中看起來(lái)比較費(fèi)勁,可以借助別的軟件如:navicat)
show binlog events; 或者 show binlog events in 'mysqlbinlog.000001';

那就以創(chuàng)建數(shù)據(jù)庫(kù)為起點(diǎn),以刪庫(kù)之前為終點(diǎn)
為了方便查看我將上圖show binlog events;
結(jié)果復(fù)制到excel中

binlog命令恢復(fù)數(shù)據(jù)
mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -proot

提示信息不需要理會(huì),要是有強(qiáng)迫癥,那你就先
mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -p 回車 再次單獨(dú)輸入密碼 root

8.總結(jié)
簡(jiǎn)單來(lái)說(shuō),要恢復(fù)數(shù)據(jù)
1.查看當(dāng)前使用的binlog文件是那個(gè)
show binary logs; --文件列表 show master status; --當(dāng)前使用的是哪個(gè)文件
2.針對(duì)當(dāng)前使用的文件查看事件,以此來(lái)確認(rèn)要恢復(fù)數(shù)據(jù)的終點(diǎn)和起點(diǎn)
show binlog events; 或者 show binlog events in 'mysqlbinlog.000001';
3.攜帶起點(diǎn)和終點(diǎn),執(zhí)行數(shù)據(jù)恢復(fù)命令
mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -proot
到此這篇關(guān)于windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)的文章就介紹到這了,更多相關(guān)mysql binlog日志分析和數(shù)據(jù)恢復(fù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mysql如何通過(guò)binlog日志恢復(fù)數(shù)據(jù)詳解
- 教你自動(dòng)恢復(fù)MySQL數(shù)據(jù)庫(kù)的日志文件(binlog)
- MySQL使用binlog日志進(jìn)行數(shù)據(jù)庫(kù)遷移和數(shù)據(jù)恢復(fù)
- 解說(shuō)mysql之binlog日志以及利用binlog日志恢復(fù)數(shù)據(jù)的方法
- MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)
- MySQL使用binlog日志恢復(fù)數(shù)據(jù)的方法步驟
- MySQL中根據(jù)binlog日志進(jìn)行恢復(fù)的實(shí)現(xiàn)
- Mysql利用binlog日志恢復(fù)數(shù)據(jù)實(shí)戰(zhàn)案例
相關(guān)文章
VSCODE連接MySQL數(shù)據(jù)庫(kù)服務(wù)圖文教程
最近做網(wǎng)頁(yè)碰到連接數(shù)據(jù)庫(kù)的問(wèn)題,上網(wǎng)查了挺久終于搞明白了,下面這篇文章主要給大家介紹了關(guān)于VSCODE連接MySQL數(shù)據(jù)庫(kù)服務(wù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Mysql 服務(wù) 1067 錯(cuò)誤 的解決方法:修改mysql可執(zhí)行文件路徑
這篇文章主要介紹了Mysql 服務(wù) 1067 錯(cuò)誤 的解決方法:修改mysql可執(zhí)行文件路徑的相關(guān)資料,需要的朋友可以參考下2017-05-05
MySQL數(shù)據(jù)庫(kù)分區(qū)概念及使用
本文主要介紹了數(shù)據(jù)庫(kù)分區(qū)的基本概念,分區(qū)類型以及如何在MySQL中實(shí)現(xiàn)分區(qū),可以提高查詢性能和管理效率,實(shí)現(xiàn)分區(qū)需要根據(jù)具體的業(yè)務(wù)需求選擇合適的分區(qū)類型,感興趣的可以了解一下2024-10-10
Mysql 的存儲(chǔ)引擎,myisam和innodb的區(qū)別
這篇文章主要介紹了Mysql 的存儲(chǔ)引擎,myisam和innodb的區(qū)別,需要的朋友可以參考下2014-12-12
DBeaver連接MySQL提示"Public Key Retrieval is
dbeaver數(shù)據(jù)庫(kù)連接工具,可以支持幾乎所有的主流數(shù)據(jù)庫(kù).mysql,oracle.sqlserver,db2 等等,這篇文章主要給大家介紹了關(guān)于DBeaver連接MySQL提示"Public Key Retrieval is not allowed"問(wèn)題的解決方式,需要的朋友可以參考下2023-10-10
在win10系統(tǒng)下安裝Mysql 5.7.17圖文教程
因?yàn)橄胍诠倦娔X上安裝Mysql,于是到官網(wǎng)上下載了最新版本的Mysql-5.7.17,其實(shí)安裝方法也很簡(jiǎn)單,下面小編把安裝過(guò)程分享到腳本之家平臺(tái)供大家參考2017-03-03
一文深入解析Mysql的開(kāi)窗函數(shù)(易懂版)
在MySQL中窗口函數(shù)是一類非常強(qiáng)大的函數(shù),它們?cè)试S你在不改變表數(shù)據(jù)的情況下,對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的分析和計(jì)算,這篇文章主要介紹了Mysql開(kāi)窗函數(shù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-09-09

