如何高效進行數據庫恢復?
瀏覽量: 次 發布日期:2023-09-11 09:25:28
如何高效進行數據庫恢復?
今天給大家介紹的是 ——————
mysqlbinlog flashback 5.6
一款非常高效快捷的數據庫恢復軟件。
DBA或者開發人員,有時會誤刪除或者誤更新數據。傳統的數據庫恢復方法是利用之前的備份再加上誤操作之前的binlog來恢復數據。該方法需要耗費較長時間來恢復備份,甚至需要停機維護,嚴重降低系統的可用性。
MySQL的flashback功能是在MySQL-5.5.18的基礎上開發的。隨著binlog格式的變動和類型的增加,基于5.5.18的版本,無法用于目前主流的5.6版本的。因此平民軟件將該功能移植到5.6版本上,讓相關人員對數據庫有更強的掌控能力。
MySQL的binlog格式分為三類:
statement、mixed、row。
其中, statement格式,記錄了所有客戶端的執行語句。比如 update tb1 set name='aaa' where id=1;
row格式,記錄了數據庫的變更前和變更后數據。比如 update tb1 set name='aaa' ,id=1 where name='bbb' , id=1;
mixed格式,是二者的混合。在使用statement格式不會造成主從不一致時,使用statement格式,否則使用row模式。無錫數據恢復
因此想要把數據回退到上一個時間點,必須保證binlog_format=row
舉例說明
在數據庫中創建如下表
執行增、刪、改動作
查看binlog文件
反轉
insert:event中包含該行數據的每個字段值,刪除即可
delete:event中包含了刪除前,該行數據的所有字段值。將刪除的數據,重新插入即可
update:只需將set和where部分調換,即可完成反轉。
如果誤操作的事務是由多個event組成的,那么必須將整個事務倒序恢復,即從最后一個event恢復到第一個event。
舉例說明
注意:恢復之前先在不使用的從機上做測試,測試成功后,再在主庫上做。
該軟件利用binlog中記錄了操作前的數據鏡像和操作后的數據鏡像。有如下限制
1) binlog_format=row
2) 只支持insert、update、delete
3) 不支持drop 、truncate、alter等ddl語句
flashback功能,可以在緊急情況下,避免用戶漫長的數據庫恢復過程。讓高可用提升一個級別。
http://pan.baidu.com/s/1nvGOOIl
在指定--start-position時,需要注意包含table_map_event的位置,否則工具無法找到相關表的元數據信息。