如何通過Mysql的二進位制日誌恢復資料庫資料

2021-08-08 18:18:13 字數 2203 閱讀 3797

經常有**管理員因為各種原因和操作,導致**資料誤刪,而且又沒有做**備份,結果不知所措,甚至給**運營和盈利帶來負面影響。所以本文我們將和大家一起分享學習下如何通過mysql的二機制日誌(binlog)來恢復資料。

系統環境:

作業系統:centos 6.5 x64  (虛擬機器);

web服務:php+mysql+apache;

**:為方便,直接在本地用蟬知系統搭建乙個demo站點;

操作步驟:

1.開啟binlog功能及基本操作;

2.往站點新增資料;

3.重新整理binlog日誌;

4.刪除資料;

5.binlog日誌內容解析;

6.恢復指定資料;

1.開啟binlog功能及基本操作

要使用mysql的binlog日誌功能,首先要在mysql的配置檔案中開啟該功能,操作很簡單。找到mysql的配置檔案,在檔案中新增一行」log_bin = mysql-bin」即可。其實在我安裝的各種mysql環境中,該功能通常都是預設開啟的。

開啟binlog功能後,在mysql的資料庫目錄下就會有諸如mysql-bin.000001、mysql-bin.000002等檔案,這就是mysql的二進位制日誌檔案。每當mysql啟動或手動重新整理日誌後都會新建乙個二進位制日誌檔案。

首先我們mysql命令列中,用」show master logs」命令檢視已有的binlog檔案。

2.往站點新增資料

3.重新整理binlog日誌

此前mysql的binlog檔案為mysql-bin.000001,並且在**後台往資料庫中新增了三篇文章。現在我們重新整理binlog日誌,會生成新的mysql-bin.000002檔案,如下:

flush logs;show master logs;

4.刪除資料

這裡我把剛才新增的三篇文章都刪除掉。

5.binlog日誌內容解析

mysql的二進位制日誌檔案記錄的mysql的操作,比如剛才的刪除操作,我們來看下日誌檔案的具體內容。

使用mysql的mysqlbinlog命令:

mysqlbinlog /data/mysql/mysql-bin.000002

注意:因為我本地mysqlbinlog無法識別binlog配置中的default-character-set=utf8,所以這裡我在命令中加上了」 –no-defaults」才起作用,大家引以為鑑。

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

6.恢復指定資料;

在通過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

這時我們在看後台,發現剛才刪除的三篇文章都已恢復回來了,從而到達我們期望的目的。
總結:

本文和大家分享了如何通過mysql的二進位制日誌檔案恢復資料。但還是要提醒大家,在平時要做好**資料備份,現在的一些主流cms建站系統都會內建資料庫備份功能,比如這裡我用的蟬知系統,資料是**的命脈,做好資料備份以避免後期不必要的麻煩或損失。

mysql二進位制 MySql二進位制連線方式詳解

使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示視窗,你可以...

mysql二進位制恢復 mysql二進位制日誌恢復

二進位制日誌匯出 1.按時間節點匯出 no defaults 用來對mysql5.5之前mysqlbinlog命令報錯 mysqlbinlog no defaults start date 2017 08 08 15 04 04 stop date 2017 08 08 15 12 00 progr...

mysql二進位制方式 MySql二進位制連線方式詳解

使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 複製 如下 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示...