Linux上通過binlog文件恢復mysql數據庫詳細步驟

我們開發階段,經常要有一些測試數據在我們測試相關功能的時候,是十分必要的.後期由於引入了正式的數據,但是測試數據並沒有被及時清理.這個時候由於一個誤刪除,導致一些正式的數據被刪除,由此,一場追找數據的過程就開始了…

解決方案:

  1. 通過每天備份的日誌進行查找,但是很不幸的是,我們由於沒有正式上線,所以數據庫的備份腳本一直沒有執行中,故此路不通
  2. 藉助強大的mysqlbinlog工具了

一、binlog 介紹

服務器的二進制日誌記錄着該數據庫的所有增刪改的操作日誌(前提是要在自己的服務器上開啓binlog),還包括了這些操作的執行時間。爲了顯示這些二進制內容,我們可以使用mysqlbinlog命令來查看。
用途:

  1. 恢復數據庫
  2. 主從同步

mysqlbinlog 命令的語法格式:

mysqlbinlog mysql-bin.0000xx | mysql -u用戶名 -p密碼 數據庫名

#常用參數選項解釋:
--start-position=875 起始pos點
--stop-position=954 結束pos點
--start-datetime="2016-9-25 22:01:08" 起始時間點
--stop-datetime="2019-9-25 22:09:46" 結束時間點
--database=zyyshop 指定只恢復zyyshop數據庫(一臺主機上往往有多個數據庫,只限本地log日誌)
-------------------------------------------------------- 
不常用選項: 
-u --user=name 連接到遠程主機的用戶名
-p --password[=name] 連接到遠程主機的密碼
-h --host=name 從遠程主機上獲取binlog日誌
--read-from-remote-server 從某個MySQL服務器上讀取binlog日誌

二、備份恢復

第一步: 保證mysql已經開啓binlog,查看binklog是否開啓

show variables like '%log_bin%';

在這裏插入圖片描述
值爲OFF,需開啓,值爲ON,已開啓。
如果沒有開啓binlog,也沒有預先生成回滾SQL,那可能真的無法快速回滾了。對存放重要業務數據的MySQL,強烈建議開啓binlog。
查看binlog存放日誌文件目錄

show variables like '%datadir%';

在這裏插入圖片描述
第二步: 進入binlog文件目錄,找出日誌文件
在這裏插入圖片描述
第三步: 切換到mysqlbinlog目錄(具體位置在mysql安裝目錄**/mysql/bin/下)
在這裏插入圖片描述
第四步: 通過mysqlbinlog工具命令查看數據庫增刪改查記錄(必須切換到mysqlbinlog目錄纔有效)

#查詢2020-01-01 08:00:00到2020-01-09 20:00:00 數據庫爲 dataweb 的操作日誌,輸入如下命令將數據寫入到一個備用的txt文件中
mysqlbinlog --no-defaults --database=dataweb --start-datetime="2020-01-01 08:00:00" --stop-datetime="2020-01-09 20:00:00" /data/mysql/mysql-bin.000008    > dataweb.txt

#查詢2020-01-01 08:00:00到2020-01-09 20:00:00 數據庫爲 dataweb 的操作日誌,並輸出到屏幕上
mysqlbinlog --no-defaults --database=dataweb --start-datetime="2020-01-01 08:00:00" --stop-datetime="2020-01-09 20:00:00" /data/mysql/mysql-bin.000008  |more

#查詢2020-01-01 08:00:00到2020-01-09 20:00:00 數據庫爲 dataweb 的操作日誌,並且過濾出 只包括 rf_classify 表數據的操作記錄 ,輸入如下命令將數據寫入到一個備用的txt文件中
mysqlbinlog --no-defaults --database=youxi --start-datetime="2020-01-01 08:00:00" --stop-datetime="2020-01-09 20:00:00" /data/mysql/mysql-bin.000008   | grep rf_classify   > classify.txt

在這裏插入圖片描述
第五步: 利用第四步輸出的sql語句或者txt文本進行語句過濾,重新插入數據或更新數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章