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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.