今天我們來實驗一下用mysqlbinlog進行資料誤刪除後的恢復實驗。
tips:首先作為dba要有備份資料的意識,否則真到出問題丟資料的時候就可以收拾收拾回家了。
前提假設:①17:48已經有了mail表的乙個全備(以防丟失資料)
示例表結構如下:
create table
create tablemail
(
id
int(10) unsigned not null auto_increment,
user_email
varchar(50) not null comment 『郵件位址』,
subject
varchar(30) not null comment 『郵件主題』,
mail_type
varchar(10) not null comment 『郵件型別』,
addtime
int(11) not null comment 『新增時間』,
is_send
tinyint(1) not null comment 『是否已傳送 1為已傳送 0為未發』,
我們現在已前幾條資料做實驗:
為了有對比,我更改其中兩條資料,乙個update乙個delete,delete的那個是我們要恢復的資料,update是我們要保留的更新的資料。
下面我們來看日誌記錄:
日誌中記錄了兩條資料更改的記錄。
下面開始日誌恢復:
我們應該將日誌position恢復時position放在誤刪語句的上下
mysqlbinlog –stop-position=』597』 -d=』test』 /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -p
mysqlbinlog –start-position=』749』 -d=』test』 /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -p
檢視資料:
包括update的資料和已刪除的資料都已經回來了。
總結:此種方法雖然能簡單的恢復資料,但是並不適合真正的生產環境,生產環境讀寫量大,日誌都是以g來算,此種方法是不太實用。但是這是一種對資料恢復的小實驗。
基於時間點恢復 mysql binlog
data mysq mysqlbin.000026 mysqlbinlog檔案,恢復如下內容 注意 按照時間點恢復時,可能同乙個時間點有其他的操作,要結合上下文的時間選取 at 523 181113 17 15 44server id 161 end log pos 554 crc32 0x2ad4...
MySQL binlog日誌基於段和語句的使用
總綱 基於語句的日誌 statement 基於行的日誌 row 混合日誌 mixed 通用操作步驟 檢視當前日誌型別 show variables like binlog format 設定日誌格式為基於語句形式 基於語句 set session binlog format statement 基於...
mysql binlog備份初探
備份mysql的binlog檔案,可以配合分庫或全庫的備份檔案實現基於時間點的資料恢復.在工作過程中,遇到兩種情況 1.不執行flush logs命令 缺點 對於不進行頻繁寫入和更新的業務,備份後,浪費磁碟空間.優點 對於一天只生成乙個binlog檔案的業務,恢復資料比較容易,只需要解壓乙個binl...