mysql5.7使用binlog 恢復數據的方法
第一步:保證mysql已經開啟binlog
show variables like '%log_bin%'; log_bin 為 on是開啟。
第二步:進入binlog文件目錄,找到二進制日志文件
mysql> show binary logs; #獲取binlog文件列表 mysql> show master status; #查看當前正在寫入的binlog文件 mysql> reset master; 重置binlog
第三步: 通過mysqlbinlog工具命令查看數據庫增刪改查記錄(必須切換到mysqlbinlog目錄才有效)或者直接指定binlog
例子1:查詢2021-3-12 14:00:00到2021-3-12 14:03:00 數據庫為 g_xinxiangshop的操作日志,輸入如下命令將數據寫入到一個備用的txt文件中
/usr/local/mysql/bin/mysqlbinlog –no-defaults –database=g_xinxiangshop –start-datetime=“2021-3-12 14:00:00” –stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt
例子2:查詢2021-3-12 14:00:00到2021-3-12 14:03:00 數據庫為 g_xinxiangshop的操作日志,並且過濾出 隻包括 g_user表數據的操作記錄 ,輸入如下命令將數據寫入到一個備用的txt文件中
/usr/local/mysql/bin/mysqlbinlog –no-defaults –database=g_xinxiangshop –start-datetime=“2021-3-12 14:00:00” –stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 | grep g_user > /tmp/binlog.txt
例子3:查詢2021-3-15 15:25:00到2021-3-15 15:35:00 數據庫為 g_shoptest 的操作日志,並輸出到屏幕上
/usr/local/mysql/bin/mysqlbinlog –no-defaults –database=g_shoptest –start-datetime=“2021-3-15 15:25:00” –stop-datetime=“2021-3-15 15:35:00” /data/mysql/mysql-bin.000001 |more
圖片和例1、例2內容一樣 看到瞭truncate操作 和記錄點 就可以做恢復操作瞭!
第四步:測試利用bin_log恢復數據
登錄mysql
測試:
1、 reset master; 重置binlog並重新生成記錄日志
2、 測試某個表 插入一條數據 然後不小心刪除瞭。
3、 查看bin-log 命令:show binlog events in ‘mysql-bin.000001’;
如上圖
我們看到刪除點在928到 1294 ;之前的新增的數據 在154到520
/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 –start-position 154 –stop-position 520 | mysql -uroot -p g_shoptest
執行完畢之後 去看看刪除那條數據吧 又回來瞭
binlog命令
1.最長用的就是回復指定數據端的數據瞭,可以直接恢復到數據庫中:
mysqlbinlog --start-date="2021-3-12 14:00:00" --stop-date="2021-3-12 14:03:00" mysql_bin.000001 |mysql -uroot -p123456
2.指定開始\結束位置,從上面的查看產生的binary log我們可以知道某個log的開始到結束的位置,我們可以在恢復的過程中指定回復從A位置到B位置的log.需要用下面兩個參數來指定:
- –start-positon=”50″ //指定從50位置開始
- –stop-postion=”100″//指定到100位置結束
/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 –start-position 7903538 –stop-position 7904498|mysql -uroot -p123456
**常見錯誤 ERROR: Error in Log_event::read_log_event(): ‘Found invalid event in binary log’, data_len: 31, event_type: 35
*問題為mysqlbinlog版本所導致
查看當前os使用的mysqlbinlog
shell> which mysqlbinlog /usr/bin/mysqlbinlog
查看mysql當前使用的mysqlbinlog
±--------------±------------------+ | Variable_name | Value | ±--------------±------------------+ | basedir | /usr/local/mysql/ | ±--------------±------------------+
mysql> show variables like ‘basedir’;
對比兩個版本
shell> /usr/bin/mysqlbinlog --version shell> /usr/local/mysql/bin/mysqlbinlog --version
解決此問題指定mysqlbinlog路徑即可
/usr/local/mysql/bin/mysqlbinlog –no-defaults –database=g_xinxiangshop –start-datetime=“2021-3-12 14:00:00” –stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt
到此這篇關於mysql5.7使用binlog 恢復數據的方法的文章就介紹到這瞭,更多相關mysql binlog 恢復數據內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!