windows下mysql中binlog日志分析和數(shù)據(jù)恢復問題
1.首先查看是否開啟了binlog
show variables like '%log_bin%';
看到了是沒有開啟的。
2.開啟binlog日志,并重啟mysql服務
不能通過命令的方式去打開,因為會提示說這個參數(shù)是只讀的。如下圖:
所以,打開mysql的配置文件,找到mysql的配置文件(和Linux下的文件名是不一樣的,Linux是my.cnf),windows默認的在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
在[mysqld]節(jié)點下添加 log-bin= mysqlbinlog binlog-format=ROW
配置好之后,要進行重啟mysql服務,沒有重啟之前該路徑目錄長這樣子
重啟服務
在任務管理器中找到mysql右鍵點擊重新啟動。
重啟服務之后該文件的目錄長這樣子,新添加了如圖所示的文件。
此時在命令行中再去查看是否開啟了binlog,
3.查看有哪些binlog文件和正在使用的binlog文件
查看有哪些binlog文件
show binary logs; 或者 show master logs;
查看當前正在使用的是哪一個binlog文件
show master status;
4.binlog中的事件(show binlog events)數(shù)據(jù)恢復就會使用到該命令
我們執(zhí)行命令都是以事件的形式操作的
查看所有的事件 show binlog events; 當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ù)庫日志都添加進去了。
6.查看binlog文件中的內(nèi)容(mysqlbinlog)
由于binlog是二進制的文件,是不能直接查看的,可以使用mysqlbinlog命令就可以轉換成人能夠看懂的內(nèi)容,進入到C:\ProgramData\MySQL\MySQL Server 5.7\Data下面打開cmd
結尾沒有分號
mysqlbinlog "mysqlbinlog.000001" 或者將binlog文件換成人能夠看懂的文件 mysqlbinlog "mysqlbinlog.000001">"test.sql"
轉成文件
在控制臺不好看,用記事本打開方便查看
7.數(shù)據(jù)恢復
現(xiàn)在做了一個偉大的壯舉,,,刪庫了
已經(jīng)刪庫了,現(xiàn)在要進行數(shù)據(jù)的恢復
查看有哪些binlog文件(這個binlog文件是重啟一次mysql服務就會形成一個新的文件mysqlbinlog.000002 …后綴依次累加)
show binary logs;
查看刪庫之前執(zhí)行過的操作事件,并找到要恢復數(shù)據(jù)的起點和終點(這里在控制到中看起來比較費勁,可以借助別的軟件如:navicat)
show binlog events; 或者 show binlog events in 'mysqlbinlog.000001';
那就以創(chuàng)建數(shù)據(jù)庫為起點,以刪庫之前為終點
為了方便查看我將上圖show binlog events;
結果復制到excel中
binlog命令恢復數(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.總結
簡單來說,要恢復數(shù)據(jù)
1.查看當前使用的binlog文件是那個
show binary logs; --文件列表 show master status; --當前使用的是哪個文件
2.針對當前使用的文件查看事件,以此來確認要恢復數(shù)據(jù)的終點和起點
show binlog events; 或者 show binlog events in 'mysqlbinlog.000001';
3.攜帶起點和終點,執(zhí)行數(shù)據(jù)恢復命令
mysqlbinlog --start-position=154 --stop-position=1503 mysqlbinlog.000001 | mysql -uroot -proot
到此這篇關于windows下mysql中binlog日志分析和數(shù)據(jù)恢復的文章就介紹到這了,更多相關mysql binlog日志分析和數(shù)據(jù)恢復內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL聯(lián)表查詢基本操作之left-join常見的坑
這篇文章主要給大家介紹了關于MySQL聯(lián)表查詢基本操作之left-join的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-05-05使用Grafana+Prometheus監(jiān)控mysql服務性能
這篇文章主要介紹了使用Grafana+Prometheus監(jiān)控mysql服務性能的相關知識,本文給大家介紹的非常詳細,對大家的工作或學習具有一定的參考借鑒價值,需要的朋友可以參考下方法2020-03-03在Centos7中利用Shell腳本實現(xiàn)MySQL數(shù)據(jù)備份
備份是容災的基礎,是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導致數(shù)據(jù)丟失,而將全部或部分數(shù)據(jù)集合從應用主機的硬盤或陣列復制到其它的存儲介質的過程,本文將給大家介紹了在Centos7中利用Shell腳本實現(xiàn)MySQL數(shù)據(jù)備份,文中有詳細的圖文介紹,需要的朋友可以參考下2023-12-12一文了解mysql索引的數(shù)據(jù)結構為什么要用B+樹
這篇文章主要介紹了一文了解mysql索引的數(shù)據(jù)結構為什么用B+樹,在節(jié)點中存儲某段數(shù)據(jù)的首地址,并且B+樹的葉子節(jié)點用了一個鏈表串聯(lián)起來,便于范圍查找,下文利用各種索引的數(shù)據(jù)結構的方法與B+樹做對比,看看它的優(yōu)勢到底是什么,感興趣的小伙伴可以參考一下2022-04-04