背景环境
正在运行的网站系统,mysql-5.7.20 数据库,数据量50G,日业务增量1-5M。
备份策略
每天23:00点,计划任务调用mysqldump执行全备脚本
故障时间点
年底故障演练:模拟周三上午10点误删除数据库,并进行恢复.
思路
1、停业务,避免数据的二次伤害 2、找一个临时库,恢复周三23:00全备 3、截取周二23:00 --- 周三10点误删除之间的binlog,恢复到临时库 4、测试可用性和完整性 5、方法一:直接使用临时库顶替原生产库,前端应用割接到新库 方法二:将误删除的表导出,导入到原生产库 6、开启业务 处理结果:经过20分钟的处理,最终业务恢复正常
故障模拟演练
准备数据
create database backup; use backup create table t1 (id int); insert into t1 values(1),(2),(3); commit; rm -rf /data/backup/*
周二 23:00全备
mysqldump -uroot -p123456 -A -R -E --triggers --set-gtid-purged=OFF --master-data=2 --single-transaction|gzip > /data/backup/full_$(date +%F).sql.gz
模拟周二 23:00到周三 10点之间数据变化
use backup insert into t1 values(11),(22),(33); commit; create table t2 (id int); insert into t2 values(11),(22),(33);
模拟故障,删除表(只是模拟,不代表生产操作)
drop database backup;
恢复过程