企业案例(二):增量恢复案例
生活随笔
收集整理的這篇文章主要介紹了
企业案例(二):增量恢复案例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、環境準備
條件:
1.具備全量備份(mysqldump)。
2.除全量備份以外,還有全量備份之后產生的的所有binlog增量日志。
1.1、建立數據庫和表
CREATE DATABASE dadong; USE `dadong`; CREATE TABLE `test` (`id` int(4) NOT NULL AUTO_INCREMENT,`name` char(20) NOT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; INSERT INTO `test` VALUES (1,'dadong'),(2,'he'),(3,'inca'),(4,'zuma'),(5,'kaka');1.2、建立備份目錄
準備環境: mkdir /data/backup -p date -s "2017/06/22"1.3、備份數據庫
mysqldump -B --master-data=2 --single-transaction dadong|gzip>/data/backup/dadong_$(date +%F).sql.gz 備份數據庫后插入幾行數據。模擬沒有備份全備,但是binlog存在記錄時,恢復數據。 mysql -e "use dadong;insert into test values(6,'bingbing');" mysql -e "use dadong;insert into test values(7,'xiaoting');" mysql -e "select * from dadong.test;"1.4、 模擬誤刪數據
date -s "2017/06/22 11:40" mysql -e "drop database dadong;show databases;"出現問題10分鐘后,發現問題,刪除了數據庫了.2、開始恢復準備
2.1、采用iptables防火墻屏蔽所有應用程序的寫入
[root@dadong ~]# iptables -I INPUT -p tcp --dport 3306 ! -s 172.16.1.51 -j DROP #<==非172.16.1.51禁止訪問數據庫3306端口。注:此步操作目的是停止客戶數據的寫入,而并不是停止數據庫
2.2、 操作前備份
cp -a /application/mysql/logs/dadong-bin.* /data/backup/2.3、準備全量和增量備份文件
1.dadong_2017-06-22.sql(全量) 2.bin.sql(增量)3、恢復過程
3.1、?恢復全備
[root@db02 backup]#zcat dadong_2017-06-22.sql.gz >dadong_2017-06-22.sql ###解壓全備文件 [root@db02 backup]# mysql <dadong_2017-06-22.sql [root@db02 backup]# mysql -e "show databases;" +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | dadong | | he | | performance_schema | +--------------------+[root@db02 backup]# mysql -e "use dadong;select * from test;" +----+---------+ | id | name | +----+---------+ | 1 | dadong | | 2 | he | | 3 | inca | | 4 | zuma | | 5 | kaka | +----+---------+3.2、恢復增量
———————————以下正式恢復操作—————————————— [root@db02 backup]#sed -n '22p' dadong_2017-06-22.sql ###獲取binlog日志的起始地址339 [root@db02 backup]#mysqlbinlog -d dadong --start-position=339 dadong-bin.0000012 -r bin.sql ##”-d” 指定查看哪個庫;”-r” 指定binlog日志存放在哪個文件中。 [root@db02 backup]#grep -i drop bin.sql [root@db02 backup]#sed -i '/^drop.*/d' bin.sql ###刪除刪庫語句,防止恢復后又執行drop語句。 [root@db02 backup]# mysql dadong <bin.sql [root@db02 backup]# mysql -e "use dadong;select * from test;" +----+----------+ | id | name | +----+----------+ | 1 | dadong | | 2 | he | | 3 | inca | | 4 | zuma | | 5 | kaka | | 6 | bingbing | | 7 | xiaoting | +----+----------+####注釋:mysqlbinlog -d dadong dadong-bin.0000012 -r bin.sql ###其中“dadong-bin.0000012”要根據最后相關操作時間(刪庫時間)來確定drop語句放在哪個binlog文件中,并且binlog文件是二進制文件,必須使用mysqlbinlog進行操作后才能使用cat查看。
注:此時如果沒有執行sed -i '/^drop.*/d' bin.sql;就會出現下面錯誤
3.3、?恢復完畢
最后一步特別重要,恢復完畢后,一定要調整iptables允許用戶訪問.轉載于:https://www.cnblogs.com/dadonggg/p/8618467.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的企业案例(二):增量恢复案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax post 传参数加引号和不加引
- 下一篇: springboot jpa 创建数据库