場景概述
1、mysql資料庫每日零點自動全備
2、某天上午10點,小明莫名其妙地drop了乙個資料庫
3、我們需要通過全備的資料檔案,以及增量的binlog檔案進行資料恢復
主要思想
1、利用全備的sql檔案中記錄的change master語句,binlog檔案及其位置點資訊,找出binlog檔案增量的部分
2、用mysqlbinlog命令將上述的binlog檔案匯出為sql檔案,並剔除其中的drop語句
3、通過全備檔案和增量binlog檔案的匯出sql檔案,就可以恢復到完整的資料
過程示意圖
操作過程
模擬資料create table `student` ( `id` int(11) not null auto_increment, `name` char(20) not null, `age` tinyint(2) not null default '0', primary key (`id`), key `index_name` (`name`)) engine=innodb auto_increment=8 default charset=utf8 mysql> insert student values(1,'zhangsan',20);mysql> insert student values(2,'lisi',21);mysql> insert student values(3,'wangwu',22);
全備命令# mysqldump -uroot -p -b -f -r -x --master-data=2 test|gzip >/server/backup/test_$(date +%f).sql.gz 引數說明:-b 指定資料庫-f 重新整理日誌-r 備份儲存過程等-x 鎖表--master-data 在備份語句裡新增change master語句以及binlog檔案及位置點資訊
繼續插入資料mysql> insert student values(6,'xiaoming',20);mysql> insert student values(6,'xiaohong',20); 此時誤操作,刪除了test資料庫mysql> drop database test;
此時,全備之後到誤操作時刻之間,使用者寫入的資料在binlog中,需要恢復出來
檢視全備之後新增的binlog檔案# cd /server/backup/# lstest_2016-08-02.sql.gz# gzip -d test_2016-08-02.sql.gz# grep change test_2016-08-02.sql-- change master to master_log_file='mysql-bin.000003', master_log_pos=107;
這是全備時刻的binlog檔案位置,即mysql-bin.000003的107行,因此在該檔案之前的binlog檔案中的資料都已經包含在這個全備的sql檔案中了
移動binlog檔案,並讀取sql,
剔除其中的drop語句# cp /data/3306/mysql-bin.000003 /server/backup/# mysqlbinlog -d test mysql-bin.000003 >003bin.sql# 用vim編輯檔案,剔除drop語句
在恢復全備資料之前必須將該binlog檔案移出,否則恢復過程中,會繼續寫入語句到binlog,最終導致增量恢復資料部分變得比較混亂
恢復資料# mysql -uroot -p
小結適合人為sql語句造成的誤操作或者沒有主從複製等的熱備情況宕機時的修復
恢復條件要全備和增量的所有資料
恢復時建議對外停止更新,即禁止更新資料庫
先恢復全量,然後把全備時刻點以後的增量日誌,按順序恢復成sql檔案,然後把檔案中有問題的sql語句刪除(也可通過時間和位置點),再恢復到資料庫
mysql增量 mysql資料庫增量恢復
mysqldump uroot p b discuzx f x master data 2 events gzip root discuzx.sql.gz 寫入資料 刪除資料 第一時間關閉資料庫對外讀寫功能,並進入資料執行重新整理mysqlbinlog的位置點,新生成檔案 flush logs 根據...
Mysql 資料庫增量備份
mysql 的二進位制日誌檔案中,儲存了所有對資料庫進行更改的sql語句,所以增量備份就是 先把mysql資料庫進行完全備份,然後儲存完全備份以後產生的日誌檔案,等下次完全備份時,重複以上過程.具體操作 在my.ini中新增如下資訊 log bin 二進位制日誌檔名 新增了這條配置資訊以後,重啟my...
MySQL 資料庫增量資料恢復案例
mysql資料庫每日零點自動全備 某天上午10點,小明莫名其妙地drop了乙個資料庫 我們需要通過全備的資料檔案,以及增量的binlog檔案進行資料恢復 利用全備的sql檔案中記錄的change master語句,binlog檔案及其位置點資訊,找出binlog檔案增量的部分 用mysqlbinlo...