大数跨境
0
0

增量数据恢复

增量数据恢复 云容灾备份安全治理
2018-12-16
1

前提条件:

  1.具备全量备份(mysqldump)。

  2.除全量备份以外,还有全量备份之后产生的的所有binlog增量日志。

环境准备

(1)准备环境:

drop database clsn;CREATE DATABASE clsn;USE `clsn`;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,'clsn'),(2,'znix'),(3,'inca'),(4,'zuma'),(5,'kaka');

  查看创建好的数据

mysql> select * from test;
+----+------+| id | name |+----+------+| 1 | clsn || 2 | znix || 3 | inca || 4 | zuma || 5 | kaka |+----+------+5 rows in set (0.00 sec)

(2)模拟环境:

mkdir /data/backup -p
date -s "2017/12/22"

全备份:

mysqldump -B --master-data=2 --single-transaction clsn|gzip>/data/backup/clsn_$(date +%F).sql.gz

  模拟增量:

mysql -e "use clsn;insert into test values(6,'haha');"
mysql -e "use clsn;insert into test values(7,'hehe');"
mysql -e "select * from clsn.test;"

(3)模拟误删数据:

date -s "2017/12/22 11:40"
mysql  -e "drop database clsn;show databases;"

  出现问题10分钟后,发现问题,删除了数据库了.

恢复数据准备

(1)采用iptables防火墙屏蔽所有应用程序的写入。

[root@clsn ~]# iptables -I INPUT -p tcp --dport 3306 ! -s 172.16.1.51 -j DROP #<==非172.16.1.51禁止访问数据库3306端口。

         或采用mysql 配置参数,但是需要重启数据库

--skip-networking

         复制二进制日志文件

cp -a /application/mysql/logs/clsn-bin.* /data/backup/

         截取日志

zcat clsn_2017-12-22.sql.gz >clsn_2017-12-22.sql
sed -n '22p' clsn_2017-12-22.sql
mysqlbinlog -d clsn --start-position=339 clsn-bin.000008 -r bin.sql

需要恢复的日志:

1.clsn_2017-12-22.sql2.bin.sql
grep -i drop bin.sql 
sed -i '/^drop.*/d' bin.sql

进行数据恢复

恢复数据

[root@db02 backup]# mysql <clsn_2017-12-22.sql
[root@db02 backup]# mysql -e "show databases;
"
+--------------------+| Database |+--------------------+| information_schema || mysql || clsn || znix || performance_schema |+--------------------+

查看数据库

mysql> select * from test;
+----+------+| id | name |+----+------+| 1 | clsn || 2 | znix || 3 | inca || 4 | zuma || 5 | kaka |+----+------+5 rows in set (0.00 sec)

恢复增量数据:

[root@db02 backup]# mysql clsn <bin.sql
mysql> select * from test;+----+------+| id | name |+----+------+|  1 | clsn ||  2 | znix ||  3 | inca ||  4 | zuma ||  5 | kaka ||  6 | haha ||  7 | hehe |+----+------+7 rows in set (0.00 sec)

  恢复完毕。

  调整iptables允许用户访问.

1.4.5 多个binlog问题

mysqlbinlog -d clsn --start-position=339 clsn-bin.000009 clsn-bin.0000010 -r bin1.sqlmysql clsn <bin1.sql


【声明】内容源于网络
0
0
云容灾备份安全治理
分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
内容 2171
粉丝 0
云容灾备份安全治理 分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
总阅读4.1k
粉丝0
内容2.2k