windows下mysql中binlog日志分析和數(shù)據(jù)恢復(fù)問題
1.首先查看是否開啟了binlog
show variables like '%log_bin%';
看到了是沒有開啟的。
2.開啟binlog日志,并重啟mysql服務(wù)
不能通過命令的方式去打開,因?yàn)闀?huì)提示說這個(gè)參數(shù)是只讀的。如下圖:
所以,打開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ù),沒有重啟之前該路徑目錄長(zhǎng)這樣子
重啟服務(wù)
在任務(wù)管理器中找到mysql右鍵點(diǎn)擊重新啟動(dòng)。
重啟服務(wù)之后該文件的目錄長(zhǎng)這樣子,新添加了如圖所示的文件。
此時(shí)在命令行中再去查看是否開啟了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í)候可以加條件來查看具體的某一個(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下面打開cmd
結(jié)尾沒有分號(hào)
mysqlbinlog "mysqlbinlog.000001" 或者將binlog文件換成人能夠看懂的文件 mysqlbinlog "mysqlbinlog.000001">"test.sql"
轉(zhuǎn)成文件
在控制臺(tá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í)行過的操作事件,并找到要恢復(fù)數(shù)據(jù)的起點(diǎn)和終點(diǎn)(這里在控制到中看起來比較費(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)單來說,要恢復(fù)數(shù)據(jù)
1.查看當(dāng)前使用的binlog文件是那個(gè)
show binary logs; --文件列表 show master status; --當(dāng)前使用的是哪個(gè)文件
2.針對(duì)當(dāng)前使用的文件查看事件,以此來確認(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL聯(lián)表查詢基本操作之left-join常見的坑
這篇文章主要給大家介紹了關(guān)于MySQL聯(lián)表查詢基本操作之left-join的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05使用Grafana+Prometheus監(jiān)控mysql服務(wù)性能
這篇文章主要介紹了使用Grafana+Prometheus監(jiān)控mysql服務(wù)性能的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下方法2020-03-03在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ù)制到其它的存儲(chǔ)介質(zhì)的過程,本文將給大家介紹了在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下2023-12-12一文了解mysql索引的數(shù)據(jù)結(jié)構(gòu)為什么要用B+樹
這篇文章主要介紹了一文了解mysql索引的數(shù)據(jù)結(jié)構(gòu)為什么用B+樹,在節(jié)點(diǎn)中存儲(chǔ)某段數(shù)據(jù)的首地址,并且B+樹的葉子節(jié)點(diǎn)用了一個(gè)鏈表串聯(lián)起來,便于范圍查找,下文利用各種索引的數(shù)據(jù)結(jié)構(gòu)的方法與B+樹做對(duì)比,看看它的優(yōu)勢(shì)到底是什么,感興趣的小伙伴可以參考一下2022-04-04Mysql連接join查詢?cè)碇R(shí)點(diǎn)
在本文里我們給大家整理了一篇關(guān)于Mysql連接join查詢?cè)碇R(shí)點(diǎn)文章,對(duì)此感興趣的朋友們可以學(xué)習(xí)下。2019-02-02