1.首先查看是否開啟了binlog
show variables like '%log_bin%';
看到了是沒有開啟的。
2.開啟binlog日志,并重啟mysql服務(wù)
不能通過命令的方式去打開,因為會提示說這個參數(shù)是只讀的。如下圖:
所以,打開mysql的配置文件,找到mysql的配置文件(和Linux下的文件名是不一樣的,Linux是my.cnf),windows默認(rèn)的在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
在[mysqld]節(jié)點下添加
log-bin= mysqlbinlog
binlog-format=ROW
配置好之后,要進(jìn)行重啟mysql服務(wù),沒有重啟之前該路徑目錄長這樣子
重啟服務(wù)
在任務(wù)管理器中找到mysql右鍵點擊重新啟動。
重啟服務(wù)之后該文件的目錄長這樣子,新添加了如圖所示的文件。
此時在命令行中再去查看是否開啟了binlog,
3.查看有哪些binlog文件和正在使用的binlog文件
查看有哪些binlog文件
show binary logs;
或者
show master logs;
查看當(dāng)前正在使用的是哪一個binlog文件
show master status;
4.binlog中的事件(show binlog events)數(shù)據(jù)恢復(fù)就會使用到該命令
我們執(zhí)行命令都是以事件的形式操作的
查看所有的事件
show binlog events;
當(dāng)binlog文件比較多的時候可以加條件來查看具體的某一個文件中的所有事件
show binlog events in 'mysqlbinlog.000001';
5.創(chuàng)建一個數(shù)據(jù)庫和一張表并插入數(shù)據(jù)之后再次查看binlog中的事件(show binlog events)
create database binlogtest;
創(chuàng)建數(shù)據(jù)庫后,再查看binlog日志文件,就看到剛剛執(zhí)行的創(chuàng)建數(shù)據(jù)庫的命令事件。
在剛才創(chuàng)建的數(shù)據(jù)庫下面新建一張測試表并插入數(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ù)庫、創(chuàng)建表、新增數(shù)據(jù)庫日志都添加進(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下面打開cmd
結(jié)尾沒有分號
mysqlbinlog "mysqlbinlog.000001"
或者將binlog文件換成人能夠看懂的文件
mysqlbinlog "mysqlbinlog.000001">"test.sql"
轉(zhuǎn)成文件在控制臺不好看,用記事本打開方便查看
7.數(shù)據(jù)恢復(fù)
現(xiàn)在做了一個偉大的壯舉,,,刪庫了
已經(jīng)刪庫了,現(xiàn)在要進(jìn)行數(shù)據(jù)的恢復(fù)
查看有哪些binlog文件(這個binlog文件是重啟一次mysql服務(wù)就會形成一個新的文件mysqlbinlog.000002 …后綴依次累加)
show binary logs;
查看刪庫之前執(zhí)行過的操作事件,并找到要恢復(fù)數(shù)據(jù)的起點和終點(這里在控制到中看起來比較費勁,可以借助別的軟件如:navicat)
show binlog events;
或者
show binlog events in 'mysqlbinlog.000001';
那就以創(chuàng)建數(shù)據(jù)庫為起點,以刪庫之前為終點
為了方便查看我將上圖show binlog events;
結(jié)果復(fù)制到excel中
binlog命令恢復(fù)數(shù)據(jù)
mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -proot
提示信息不需要理會,要是有強迫癥,那你就先
mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -p
回車
再次單獨輸入密碼
root
8.總結(jié)
簡單來說,要恢復(fù)數(shù)據(jù)
1.查看當(dāng)前使用的binlog文件是那個
show binary logs; --文件列表
show master status; --當(dāng)前使用的是哪個文件
2.針對當(dāng)前使用的文件查看事件,以此來確認(rèn)要恢復(fù)數(shù)據(jù)的終點和起點文章來源:http://www.zghlxwxcb.cn/news/detail-610685.html
show binlog events;
或者
show binlog events in 'mysqlbinlog.000001';
3.攜帶起點和終點,執(zhí)行數(shù)據(jù)恢復(fù)命令文章來源地址http://www.zghlxwxcb.cn/news/detail-610685.html
mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -proot
到了這里,關(guān)于windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!