mysql通過mysqlbinlog日誌恢復數據

刪庫跑路 恢復
如果不是InnoDB跟沒開啓日誌!那就莫得方法了!還是選擇跑路吧!(開個玩笑)

【mysql bin 沒有mysqlbinlog.exe 去網上下載】
一、首先一定要開啓binlog!!!!
在mysql的 my.ini文件
 
[mysqld] 區塊設置/添加 log-bin=mysql-bin 確認是打開狀態(值 mysql-bin 是日誌的基本名或前綴名);
 
二、通過mysql的變量配置表,查看二進制日誌是否已開啓
show variables like "log_%"

 

 
然後再mysql的data查看 是否有日誌 
命令查看:
show master logs (查看所有)
show master status  (查看最後一條)
 
物理查看:
mysql-bin.000xxx 是日誌命名(默認的) ,可以通過 my.ini  log-bin=mysql-bin (改成其他別名)
 
 
注意:凡是是創建表、創建數據庫、插入、更新、刪除都會記錄在log裏。查詢不會去記錄。
(可以簡單做個實驗,insert into 一條記錄,Position的記錄值行數變大)
 
 
查看mysql日誌文件
普通的編輯器文本是看不到日誌裏的內容,都是二進制,需要用到 mysqlbinlog 去進行查看,
退出mysql;
格式 :  mysqlbinlog [日誌文件]  --其他參數(--start 等等)
mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005  【日誌文件名+路徑】
 
 
 
 
通過指定的開始位置跟結束位置
(比如取日誌裏的某一段, insert into test3 values(132) )
 
mysqlbinlog mysql.bin00005 --start-position=175 --stop-position=267  -r test.sql 
輸出 初始值位置175,結束位置267的所有binlog日誌 
 
通過指定時間段 (不精確,因爲一個時間段可能有多個sql語句)
 
指定開始時間到結束時間
mysqlbinlog mysql.bin00005 --start-datetime='2019-06-22 11:46:02' --stop-datetime='2019-06-30 11:46:02' -r test.sql
 
從文件開頭到指定結束時間
mysqlbinlog mysql.bin00005 --stop-datetime='2019-06-22 11:46:02' -r test.sql
 
指定開始時間到結束
mysqlbinlog mysql.bin00005 --start-datetime='2019-06-22' -r  test.sql
 
 
將日誌轉成mysql格式(其他格式 sql/txt····)
如果二進制文件過大,在命令行是看不到太多的內容,需要導出數據查看
格式 :  mysqlbinlog [日誌文件] > [導出在哪個目錄]
mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005 > test.sql 
然後再 source 運行test.sql
 
直接日誌恢復數據
格式 : mysqlbinlog [日誌文件] | [數據庫鏈接]
mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005 | mysql -u root - p 
 
 
其他命令
刷新日誌   flush logs;
清空日誌   reset master;
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章