Mysql----阿里數(shù)據(jù)庫(mysql)誤刪除后的數(shù)據(jù)恢復

注意:本案例適用于人為SQL語句造成的誤操作或者沒有主從復制等的熱備情況宕機時的修復

思路:

  1. 利用全備的sql文件中記錄的CHANGE MASTER語句记靡,binlog文件及其位置點信息蛙酪,找出binlog文件中增量的那部分
  2. 用mysqlbinlog 命令將上述的binlog 文件導出為sql文件,并剔除其中的drop語句
  3. 通過全備文件和增量binlog文件的導出sql文件呵燕,就可以恢復到完整的數(shù)據(jù)

詳細模擬操作如下:

一. 創(chuàng)建數(shù)據(jù)庫,表扶认,插入模擬數(shù)據(jù)

開啟 binlog日志功能
/etc/my.cnf文件里的[mysqld]區(qū)塊添加:<code>log-bin=mysql-bin</code> 重啟服務

use test;

CREATE TABLE IF NOT EXISTS recover_table(
    id mediumint unsigned NOT NULL AUTO_INCREMENT,
    name varchar(32) NOT NULL,  
    age int unsigned NOT NULL,
    PRIMARY KEY(id)
)ENGINE=innoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT 'recover_table';


insert into recover_table values(null, 'tom', 20);
insert into recover_table values(null, 'jack', 22);
insert into recover_table values(null, 'rose', 23);
insert into recover_table values(null, 'json', 23);


mysql> select * from recover_table;
+----+------+-----+
| id | name | age |
+----+------+-----+
|  1 | tom  |  20 |
|  2 | jack |  22 |
|  3 | rose |  23 |
|  4 | json |  22 |
+----+------+-----+
4 rows in set (0.00 sec)

二. 進行全文件備份

參數(shù)說明:
-B:指定數(shù)據(jù)庫
-F:刷新日志
-R:備份存儲過程等
-x:鎖表
--master-data:在備份語句里添加CHANGE MASTER語句以及binlog文件及位置點信息
test 為數(shù)據(jù)庫名

[root@iZ95i72m2pc9 backup]# mysqldump -uroot -p -B -F -R -x --master-data=2 test|gzip >/test/backup/test_$(date +%F).sql.gz
Enter password: 

mysql> select * from recover_table;
+----+------+-----+
| id | name | age |
+----+------+-----+
|  1 | tom  |  20 |
|  2 | jack |  22 |
|  3 | rose |  23 |
|  4 | json |  22 |
+----+------+-----+
4 rows in set (0.00 sec)

三. 再插入模擬數(shù)據(jù), 刪除數(shù)據(jù)庫

insert into recover_table values(null, 'sam', 25);
insert into recover_table values(null, 'jare', 26);

mysql> select * from recover_table;
+----+------+-----+
| id | name | age |
+----+------+-----+
|  1 | tom  |  20 |
|  2 | jack |  22 |
|  3 | rose |  23 |
|  4 | json |  22 |
|  5 | sam  |  25 |
|  6 | jare |  26 |
+----+------+-----+
6 rows in set (0.00 sec)

drop database test;

四. 查看全備之后新增的binlog文件

[root@iZ95i72m2pc9 backup]# ll
-rw-r--r-- 1 root root 936 Oct 17 10:40 test_2017-10-17.sql.gz

[root@iZ95i72m2pc9 backup]# gzip -d test_2017-10-17.sql.gz 
[root@iZ95i72m2pc9 backup]# ll
-rw-r--r-- 1 root root 2397 Oct 17 10:40 test_2017-10-17.sql

[root@iZ95i72m2pc9 backup]# grep CHANGE test_2017-10-17.sql 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=120;

說明:mysql-bin.000002的120行唇跨,在該文件之前的binlog文件中的數(shù)據(jù)都已經(jīng)包含在這個全備的sql文件中了(增量)

五. 查看并切換到mysql 數(shù)據(jù)存放目錄, 轉(zhuǎn)sql 格式

[root@iZ95i72m2pc9 backup]# ps -ef|grep mysql
root      4411  4376  0 10:13 pts/0    00:00:00 mysql -uroot -p
root      4458  4421  0 10:45 pts/1    00:00:00 grep mysql
root     13046     1  0 Apr12 ?        00:00:00 /bin/sh /alidata/server/mysql/bin/mysqld_safe --datadir=/alidata/server/mysql/data --pid-file=/alidata/server/mysql/data/iZ95i72m2pc9.pid
mysql    13347 13046  0 Apr12 ?        02:03:40 /alidata/server/mysql/bin/mysqld --basedir=/alidata/server/mysql --datadir=/alidata/server/mysql/data --plugin-dir=/alidata/server/mysql/lib/plugin --user=mysql --log-error=/alidata/log/mysql/error.log --pid-file=/alidata/server/mysql/data/iZ95i72m2pc9.pid --socket=/tmp/mysql.sock --port=3306
[root@iZ95i72m2pc9 backup]# cd /alidata/server/mysql/data

備份日志數(shù)據(jù)到指定目錄,避免數(shù)據(jù)混亂的問題

[root@iZ95i72m2pc9 mysql]# cp ./data/mysql-bin.000004 /opt/backup/
[root@iZ95i72m2pc9 backup]# cd /opt/backup/
[root@iZ95i72m2pc9 backup]# ll
-rw-r----- 1 root root  743 Oct 17 10:52 mysql-bin.000004
-rw-r--r-- 1 root root 2397 Oct 17 10:40 test_2017-10-17.sql

轉(zhuǎn)為sql 格式

[root@iZ95i72m2pc9 backup]# mysqlbinlog -d test mysql-bin.000004 >00004bin.sql

刪除里面的drop 語句(或誤操作的語句)

六. 開始恢復數(shù)據(jù),先恢復備份文件层坠,再恢復增加文件

[root@iZ95i72m2pc9 backup]# mysql -uroot -p < test_2017-10-17.sql 
Enter password: 

mysql> select * from recover_table;
+----+------+-----+
| id | name | age |
+----+------+-----+
|  1 | tom  |  20 |
|  2 | jack |  22 |
|  3 | rose |  23 |
|  4 | json |  22 |
+----+------+-----+
4 rows in set (0.00 sec)

[root@iZ95i72m2pc9 backup]# mysql -uroot -p < 00004bin.sql 
Enter password: 

mysql> select * from recover_table;
+----+------+-----+
| id | name | age |
+----+------+-----+
|  1 | tom  |  20 |
|  2 | jack |  22 |
|  3 | rose |  23 |
|  4 | json |  22 |
|  5 | sam  |  25 |
|  6 | jare |  26 |
+----+------+-----+
6 rows in set (0.00 sec)

總結(jié):

  1. 恢復條件為mysql要開啟binlog日志功能殖妇,并且要全備和增量的所有數(shù)據(jù)
  2. 恢復時建議對外停止更新,即禁止更新數(shù)據(jù)庫
  3. 先恢復全量破花,然后把全備時刻點以后的增量日志谦趣,按順序恢復成SQL文件,然后把文件中有問題的SQL語句刪除(也可通過時間和位置點)座每,再恢復到數(shù)據(jù)庫
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末前鹅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子峭梳,更是在濱河造成了極大的恐慌舰绘,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葱椭,死亡現(xiàn)場離奇詭異捂寿,居然都是意外死亡,警方通過查閱死者的電腦和手機孵运,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門秦陋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人治笨,你說我怎么就攤上這事驳概〕嘟溃” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵顺又,是天一觀的道長更卒。 經(jīng)常有香客問我,道長待榔,這世上最難降的妖魔是什么逞壁? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮锐锣,結(jié)果婚禮上腌闯,老公的妹妹穿的比我還像新娘。我一直安慰自己雕憔,他們只是感情好姿骏,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斤彼,像睡著了一般分瘦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琉苇,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天嘲玫,我揣著相機與錄音,去河邊找鬼并扇。 笑死去团,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的穷蛹。 我是一名探鬼主播土陪,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肴熏!你這毒婦竟也來了鬼雀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蛙吏,失蹤者是張志新(化名)和其女友劉穎源哩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸦做,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡璧疗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了馁龟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡漆魔,死狀恐怖坷檩,靈堂內(nèi)的尸體忽然破棺而出却音,到底是詐尸還是另有隱情,我是刑警寧澤矢炼,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布系瓢,位于F島的核電站,受9級特大地震影響句灌,放射性物質(zhì)發(fā)生泄漏夷陋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一胰锌、第九天 我趴在偏房一處隱蔽的房頂上張望骗绕。 院中可真熱鬧,春花似錦资昧、人聲如沸酬土。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撤缴。三九已至,卻和暖如春叽唱,著一層夾襖步出監(jiān)牢的瞬間屈呕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工棺亭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虎眨,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓侦铜,卻偏偏與公主長得像专甩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钉稍,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容