統環境:html
操做系統:CentOS 6.5 X64 (虛擬機);mysql
Web 服務:PHP+MySQL+apache;linux
網站:爲方便,直接在本地用蟬知系統搭建一個演示站點;sql
操做步驟數據庫
一、開啓 binlog 功能及基本操做apache
要使用 MySQL 的 binlog 日誌功能,首先要在 MySQL 的配置文件中開啓該功能,操做很簡單。找到 MySQL 的配置文件,在文件中添加一行 log_bin = mysql-bin 便可。其實在我安裝的各類 MySQL 環境中,該功能一般都是默認開啓的。服務器
開啓 binlog 功能後,在 MySQL 的數據庫目錄下就會有諸如 mysql-bin.00000一、mysql-bin.000002等文件,這就是 MySQL 的二進制日誌文件。每當 MySQL 啓動或手動刷新日誌後都會新建一個二進制日誌文件。測試
首先咱們 MySQL 命令行中,用 show master logs 命令查看已有的 binlog 文件。網站
二、往站點添加數據操作系統
在網站後臺文章模塊裏,我添加了幾條測試數據。
三、刷新 binlog 日誌
此前 MySQL 的 binlog 文件爲 mysql-bin.000001,而且在網站後臺往數據庫中添加了三篇文章。如今咱們刷新 binlog 日誌,會生成新的 mysql-bin.000002 文件,以下:
flush logs; show master logs;
四、刪除數據
這裏我把剛纔添加的三篇文章都刪除掉。
五、binlog 日誌內容解析
MySQL 的二進制日誌文件記錄的 MySQL 的操做,好比剛纔的刪除操做,咱們來看下日誌文件的具體內容。
使用 MySQL 的 mysqlbinlog 命令:
mysqlbinlog /data/mysql/mysql-bin.000002
注意:由於我本地 mysqlbinlog 沒法識別 binlog 配置中的 default-character-set=utf8,因此這裏我在命令中加上了 –no-defaults才起做用,你們引覺得鑑。
下面是日誌內容部分截圖:
六、恢復指定數據
在經過 MySQL 的 binlog 日誌恢復數據時,咱們能夠指定恢復到具體時間點,這有點像服務器快照管理。因此咱們如今要恢復剛纔刪除的那篇文章,能夠從刪除以前找一個時間點,並恢復到那個時間點便可。
有關 mysqlbinlog 命令的使用方法,咱們能夠經過 mysqlbinlog 的幫助命令進行查看,以下:
mysqlbinlog –no-defaults –help
如幫助文檔所示,能夠經過指定時間或指定位置來恢復數據,這裏我以指定時間爲例給你們演示。
咱們來查看下日誌文件 mysql-bin.000001,以下:
mysqlbinlog -no--defaults /data/mysql/mysql-bin.000001
經過前面操做步驟咱們知道,在刪除數據以前,咱們生成了 mysql-bin.000002 日誌文件,因此咱們只要恢復到這個時間點便可,上圖中我已找到了這個時間。
命令以下:
mysqlbinlog –no-defaults –stop-datetime=’2017-04-11 09:48:48’/data/mysql/mysql-bin.000001 |mysql –uroot –p123456
這時咱們在看後臺,發現剛纔刪除的三篇文章都已恢復回來了,從而到達咱們指望的目的。
本文地址:http://www.linuxprobe.com/mysql-recovering-data.html