完全備份(mysqldump)+增量備份(binlog)

##############################  第一步1.全庫備份  ##########################################
[root@db01 data]# mysqldump -p --flush-logs --master-data=2 --all-databases > /tmp/all.sql
Enter password:
--flush-logs //備份時先將內存中日志寫回磁盤霹陡,然后截斷二進制日志,并產生新的日志文件

初始狀態(tài):
mysql> select * from t1;
+------+---------+----------+
| id | name | sal |
+------+---------+----------+
| 1 | harry | 12000.33 |
| 2 | tom | 15000.00 |
| 3 | harryyy | NULL |
+------+---------+----------+
查看完整備份文件中的字段

# vim /tmp/all.sql
...
--開始復制或時間點恢復的位置
-- Position to start replication or point-in-time recovery from
--將主日志文件更改為主日志文件 mysqld-bin.000003 pos點位置為120
-- CHANGE MASTER TO MASTER_LOG_FILE='mysqld-bin.000003', MASTER_LOG_POS=120;
--
-- Current Database: `db01`
--
...

##############################  第二步 2. 更新相關數據  ######################################

注釋:更新的db02庫中的t1表
mysql> insert into t1 values (4,'jack',2000);
Query OK, 1 row affected (0.01 sec)
--------------------------------誤刪除之前的狀態(tài)-----------------------------------------
mysql> select * from t1;
+------+---------+----------+
| id | name | sal |
+------+---------+----------+
| 1 | harry | 12000.33 |
| 2 | tom | 15000.00 |
| 3 | harryyy | NULL |
| 4 | jack | 2000.00 | 
+------+---------+----------+
4 rows in set (0.00 sec)
--------------------------------誤刪除之前的狀態(tài)---------------------------------------

mysql> delete from t1 where id=3;
Query OK, 1 row affected (0.01 sec)
----------------------------------最新狀態(tài)-------------------------------------------
mysql> select * from t1;
+------+-------+----------+
| id | name | sal |
+------+-------+----------+
| 1 | harry | 12000.33 |
| 2 | tom | 15000.00 |
| 4 | jack | 2000.00 |
+------+-------+----------+
3 rows in set (0.00 sec)
----------------------------------最新狀態(tài)-------------------------------------------


[root@db01 data]#  mysqlbinlog mysqld-bin.000003|less ---用mysqlbinlog工具查看這個二進制文件會看到剛剛所操作數據庫的sql語句


----------------------mysqld-bin.000003二進制日志文件 開始------------------------------
# at 120 起始位置
#181012 19:06:00 server id 1 end_log_pos 199 CRC32 0xc4a7306e Query thread_id=9
exec_time=0 error_code=0
SET TIMESTAMP=1539342360/*!*/;
SET @@session.pseudo_thread_id=9/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1,
@@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET
@@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8
/*!*/;
SET @@session.lc_time_names=0/*!*/;
# at 199
#181012 19:06:00 server id 1 end_log_pos 310 CRC32 0x764ea2b3 Query thread_id=9
exec_time=0 error_code=0
use `db02`/*!*/;
SET TIMESTAMP=1539342360/*!*/;

insert into t1 values (4,'jack',2000) 正常的更新數據氮块,需要恢復

/*!*/;
# at 310
#181012 19:06:00 server id 1 end_log_pos 341 CRC32 0xa5a0cfe4 Xid = 1103
COMMIT/*!*/;
# at 341 //insert語句的結束位置
#181012 19:06:32 server id 1 end_log_pos 420 CRC32 0xc2c81cd3 Query thread_id=9
exec_time=0 error_code=0
SET TIMESTAMP=1539342392/*!*/;
BEGIN
/*!*/;
# at 420
#181012 19:06:32 server id 1 end_log_pos 519 CRC32 0x7b3404e2 Query thread_id=9
exec_time=0 error_code=0
SET TIMESTAMP=1539342392/*!*/;

delete from t1 where id=3 誤操作的數據卢鹦,不需要恢復

/*!*/;
# at 519
#181012 19:06:32 server id 1 end_log_pos 550 CRC32 0x5bbc4007 Xid = 1105
COMMIT/*!*/;
-----------------------------mysqld-bin.000003.sql二進制日志文件 結尾--------------------------



##############################  第三步 3.備份二進制日志文件 ######################################


3.備份二進制文件
方法1:直接拷貝二進制物理文件
# cp mysqld-bin.000003 /tmp/
方法2:備份改變過的數據(SQL)
# mysqlbinlog --start-post=120 mysqld-bin.000003 > /tmp/mysqld-bin.000003.sql
--start-position=# 開始的位置(POS)
--stop-position=# 結束的位置
##############################  第四步 4. 模擬故障(刪除庫) ######################################

進入到數據庫中迁筛,將3個業(yè)務庫全部刪掉
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db01 |
| db02 |
| myblog |
| mysql |
| performance_schema |
| test |
+--------------------+
7 rows in set (0.00 sec)
mysql> drop database db01;
Query OK, 7 rows affected (0.04 sec)
mysql> drop database db02;
Query OK, 1 row affected (0.01 sec)
mysql> drop database myblog;
Query OK, 12 rows affected (1.62 sec)


##############################  第五步 5. 還原全庫 ######################################

5.還原
1)全庫恢復
[root@db01 data]# mysql -p < /backup/all.sql
結果:當前數據庫恢復到了11:05分的狀態(tài)
2)增量恢復

#########################  5.1. 通過mysqld-bin.000003.sql恢復到(最新狀態(tài))#####################
進入mysql客戶端
> source /tmp/mysqld-bin.000003.sql

最新狀態(tài)匿又,沒有回復delete誤操作,恢復數據成功

mysql> select * from t1;
+------+-------+----------+
| id | name | sal |
+------+-------+----------+
| 1 | harry | 12000.33 |
| 2 | tom | 15000.00 |
| 4 | jack | 2000.00 |
+------+-------+----------+
3 rows in set (0.00 sec)
最新狀態(tài)骂蓖,沒有回復delete誤操作
###################################  end  #######################################

------------------------------------------------------------------------------------
查看(讀懂)二進制日志文件
----------------------mysqld-bin.000003.sql二進制日志文件 開始------------------------------
# at 120 起始位置
#181012 19:06:00 server id 1 end_log_pos 199 CRC32 0xc4a7306e Query thread_id=9
exec_time=0 error_code=0
SET TIMESTAMP=1539342360/*!*/;
SET @@session.pseudo_thread_id=9/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1,
@@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET
@@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8
/*!*/;
SET @@session.lc_time_names=0/*!*/;
# at 199
#181012 19:06:00 server id 1 end_log_pos 310 CRC32 0x764ea2b3 Query thread_id=9
exec_time=0 error_code=0
use `db02`/*!*/;
SET TIMESTAMP=1539342360/*!*/;

insert into t1 values (4,'jack',2000) 正常的更新數據殿如,需要恢復

/*!*/;
# at 310
#181012 19:06:00 server id 1 end_log_pos 341 CRC32 0xa5a0cfe4 Xid = 1103
COMMIT/*!*/;
# at 341 //insert語句的結束位置
#181012 19:06:32 server id 1 end_log_pos 420 CRC32 0xc2c81cd3 Query thread_id=9
exec_time=0 error_code=0
SET TIMESTAMP=1539342392/*!*/;
BEGIN
/*!*/;
# at 420
#181012 19:06:32 server id 1 end_log_pos 519 CRC32 0x7b3404e2 Query thread_id=9
exec_time=0 error_code=0
SET TIMESTAMP=1539342392/*!*/;

delete from t1 where id=3 誤操作的數據,不需要恢復

/*!*/;
# at 519
#181012 19:06:32 server id 1 end_log_pos 550 CRC32 0x5bbc4007 Xid = 1105
COMMIT/*!*/;
-----------------------------mysqld-bin.000003.sql二進制日志文件 結尾--------------------------


############################## 5.2. 通過mysqlbinlog 恢復到(誤刪除位置) ##########################

使用二進制日志文件恢復到我想要的狀態(tài)
# mysqlbinlog --start-position=120 --stop-position=341 /tmp/mysqld-bin.000003|mysql -uroot -p

Enter password:
驗證:
mysql> use db02;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from t1;
+------+---------+----------+
| id | name | sal |
+------+---------+----------+
| 1 | harry | 12000.33 |
| 2 | tom | 15000.00 |
| 3 | harryyy | NULL |
| 4 | jack | 2000.00 | //第4條記錄產生說明恢復成功
+------+---------+----------+
4 rows in set (0.00 sec)
最新狀態(tài)忙厌,沒有回復delete誤操作
###############################  數據備份恢復完成   ###########################################
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市江咳,隨后出現的幾起案子逢净,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爹土,死亡現場離奇詭異甥雕,居然都是意外死亡,警方通過查閱死者的電腦和手機胀茵,發(fā)現死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門犀农,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宰掉,你說我怎么就攤上這事呵哨。” “怎么了轨奄?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵孟害,是天一觀的道長。 經常有香客問我挪拟,道長挨务,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任玉组,我火速辦了婚禮谎柄,結果婚禮上,老公的妹妹穿的比我還像新娘惯雳。我一直安慰自己朝巫,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布石景。 她就那樣靜靜地躺著劈猿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪潮孽。 梳的紋絲不亂的頭發(fā)上揪荣,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死尚困,一個胖子當著我的面吹牛,可吹牛的內容都是我干的挨决。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼粟矿,長吁一口氣:“原來是場噩夢啊……” “哼凰棉!你這毒婦竟也來了?” 一聲冷哼從身側響起陌粹,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤撒犀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體或舞,經...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡荆姆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了映凳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胆筒。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诈豌,靈堂內的尸體忽然破棺而出仆救,到底是詐尸還是另有隱情,我是刑警寧澤矫渔,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布彤蔽,位于F島的核電站,受9級特大地震影響庙洼,放射性物質發(fā)生泄漏顿痪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一油够、第九天 我趴在偏房一處隱蔽的房頂上張望蚁袭。 院中可真熱鬧,春花似錦石咬、人聲如沸揩悄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虏束。三九已至棉饶,卻和暖如春厦章,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背照藻。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工袜啃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人幸缕。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓群发,卻偏偏與公主長得像,于是被迫代替她去往敵國和親发乔。 傳聞我的和親對象是個殘疾皇子熟妓,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345