MySQL使用二進位制日誌來恢復資料的方法

2021-09-30 15:04:47 字數 2042 閱讀 6406

如果你不小心執行了drop table怎麼辦,先不要冒汗,假如你保留了完整的二進位制日誌的話, 這是可以恢復的,mysql伺服器啟用了二進位制日誌,你就可以使用mysqlbinlog工具來恢復從指定的時間點開始直到現在或另乙個指定的時間點的資料。

從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般可以從選項檔案(取決於你的系統)中找到路徑。如果未包含在選項檔案中。mysqlbinlog工具的使用,大家可以看mysql的幫助手冊。裡面有詳細的用法。

在這個例子中,重點是體現--start-position、--stop-position和—start-datetime、stop-datetime引數的使用。其含義是從二進位制日誌中第個位置等於n參量時的事件開始讀,從二進位制日 志中第個位置等於和大於n參量時的事件起停止讀。

案例:1、作業系統:linux

2、資料庫版本:mysql5.0

3、問題描述:誤對***db資料庫的***_table等表進行drop後,並重新建立了被drop表,且實現了對資料的重新錄入。如下指令碼:

drop table ***_table;

create table ts_user(

id int auto_increment not null primary key;

name varchar(50);

pass varchar(50)

)insert into ***_table values('tiancom','tiancom');

4、需求分析:要求對***db資料庫的***_table等表進行還原到誤操作drop之前的狀態。

5、操作步驟:

1.1、找到mysql二進位制日誌檔案的存放目錄,目錄在/usr/local/mysql/date

1.2、通過cd 命令進入到mysql的安裝目錄/usr/local/mysql/bin

1.3、進入1.2的目錄後可以通過命令mysqlbinlog /usr/local/mysql/date/xx檢視日

志檔案;因資料庫字符集的問題,在此步驟可能出現「default-character-set=utf8」的錯誤,為了設定字符集的差異問題和方便對日誌檢視,我們的命令可以修改為:mysqlbinlog --no-

defaults /usr/local/mysql/date/ ***_db-bin.000001 > /usr/log.txt。最終的日誌詳細資訊可以在usr目錄的log.txt檢視。

1.4、處理方法:

方法1:position

開啟日誌我們可以找到執行create table ***_db之後和drop table ***_db之前的position, 假如是20, 1000;

#mysqlbinlog --no-defaults--start-position="20" --stop-position="1000" /usr/local/mysql/date/***_db-bin.000001 | mysql -u root

方法2:datetime

#mysqlbinlog --no-defaults --start-datetime="2012-08-15 8:20:00" --stop-datetim="2012-08-15 10:25:00" /usr/local/mysql/date/***_db-bin.000001 | mysql -u root

如果create table ***_db和drop table ***_db之間的時間相距是較長, 或者分別在不同的二進位制日誌中,這樣能行嗎?答案告訴你就等著失眠!

方法3:

如在不同的二進位制日誌檔案,或者二進位制日誌檔案已經大於等於3個(第3個是記錄你誤操作的),那麼我們的處理方法是#mysqlbinlog --no-defaults /usr/local/mysql/date/***_db-

bin.000001(000002….) | mysql -uroot –p,執行到你誤操作日誌之前的2個日誌,因為我們要做的是正確的全部資料,也就是我們不希望去重做誤操作這個語句所以不需要執行000003;

不小心執行了drop table ***_db, 實際方法告訴你恢復是不成問題的,但是與其我們繃緊神經來處理這個意外的問題,不如做好資料備份;

mysql 二進位制日誌

如果mysql 伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 例如,從你最後一次備份 直到現在或另乙個指定的時間點的資料。mysqlbinlog 用於處理二進位制日誌檔案的實用工具 要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般...

mysql 二進位制日誌

1.日誌型別 二進位制日誌記錄了所有對mysql資料庫的修改事件,包括增刪改事件和對錶結構的修改事件。2.配置使用二進位制日誌 在my.ini 配置 log bin mysql bin 3.二進位制日誌格式 基於段的日誌格式 binlog format statement 記錄了操作的sql語句。優...

MySQL日誌 二進位制日誌(1)

一 二進位制日誌的介紹 二進位制日誌的資料當然是二進位制形式了,所以無法直接通過文字工具來檢視,並且二進位制日誌也不是用來檢視的而是通常給mysql使用的。它記錄了對資料發生或潛在發生更改的sql語句。二進位制日誌的用途有如下幾點 可以記錄對資料庫所在的變更,包括ddl和dml語句。用於資料庫的增量...