經過 MySQL 的二進制日誌恢復數據庫數據

統環境: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 文件。網站

經過 MySQL 的二進制日誌恢復數據庫數據經過 MySQL 的二進制日誌恢復數據庫數據

二、往站點添加數據操作系統

在網站後臺文章模塊裏,我添加了幾條測試數據。

經過 MySQL 的二進制日誌恢復數據庫數據經過 MySQL 的二進制日誌恢復數據庫數據

三、刷新 binlog 日誌

此前 MySQL 的 binlog 文件爲 mysql-bin.000001,而且在網站後臺往數據庫中添加了三篇文章。如今咱們刷新 binlog 日誌,會生成新的 mysql-bin.000002 文件,以下:

flush logs;
show master logs;

經過 MySQL 的二進制日誌恢復數據庫數據經過 MySQL 的二進制日誌恢復數據庫數據

四、刪除數據

這裏我把剛纔添加的三篇文章都刪除掉。

五、binlog 日誌內容解析

MySQL 的二進制日誌文件記錄的 MySQL 的操做,好比剛纔的刪除操做,咱們來看下日誌文件的具體內容。

使用 MySQL 的 mysqlbinlog 命令:

mysqlbinlog /data/mysql/mysql-bin.000002

注意:由於我本地 mysqlbinlog 沒法識別 binlog 配置中的 default-character-set=utf8,因此這裏我在命令中加上了 –no-defaults才起做用,你們引覺得鑑。

經過 MySQL 的二進制日誌恢復數據庫數據經過 MySQL 的二進制日誌恢復數據庫數據

下面是日誌內容部分截圖:

經過 MySQL 的二進制日誌恢復數據庫數據經過 MySQL 的二進制日誌恢復數據庫數據

六、恢復指定數據

在經過 MySQL 的 binlog 日誌恢復數據時,咱們能夠指定恢復到具體時間點,這有點像服務器快照管理。因此咱們如今要恢復剛纔刪除的那篇文章,能夠從刪除以前找一個時間點,並恢復到那個時間點便可。

有關 mysqlbinlog 命令的使用方法,咱們能夠經過 mysqlbinlog 的幫助命令進行查看,以下:

mysqlbinlog –no-defaults –help

經過 MySQL 的二進制日誌恢復數據庫數據經過 MySQL 的二進制日誌恢復數據庫數據

如幫助文檔所示,能夠經過指定時間或指定位置來恢復數據,這裏我以指定時間爲例給你們演示。

咱們來查看下日誌文件 mysql-bin.000001,以下:

mysqlbinlog -no--defaults /data/mysql/mysql-bin.000001

經過 MySQL 的二進制日誌恢復數據庫數據經過 MySQL 的二進制日誌恢復數據庫數據

經過前面操做步驟咱們知道,在刪除數據以前,咱們生成了 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

相關文章
相關標籤/搜索