MySQL误删库之还原实战

1 场景介绍
某个时间点用户用drop database误删除了业务数据库数据(比如fi库),由于没有做物理备份,已知的备份策略为每天凌晨1点的逻辑全备+binlog日志。现需要回滚数据库到误删除之前的状态,并前滚至当前最新时间点。
2 还原恢复方案选择
根据已知备份策略,此处选择 全库还原+使用binlog增量还原方案,进行数据库恢复。
3 确定恢复所需的备份集及binlog日志文件
a. 根据每天定时任务的备份脚本,已知全量备份集在/备份路径/"`date '+%Y%m%d%H%M%S'`"目录下
b. 进入上述目录,查看最近备份集中metadata文件信息
# strings metadata
Started dump at: 2023-05-11 01:00:01
SHOW MASTER STATUS:
Log: mysql_bin_30001.001491
Pos: 185349301
GTID:8afb9d79-120c-11ed-9c65-005056a06c35:1-84026942
由上可知,我们应用binlog日志应该从mysql_bin_30001.001491日志文件的185349301位置开始,一直到最新的binlog文件(本例为mysql_bin_30001.001493)。
4 恢复数据库
a. 对当前数据库进行全备,全备脚本参考
# cat dbbackup.sh
DT="`date '+%Y%m%d%H%M%S'`"
echo "$DT : ##### begin backup"
mkdir -p /你的备份路径/$DT
/bin/mydumper -h 127.0.0.1 -u cosmic -p **** -P 3306 -G -R -E -c -t 8 -r 10000 -o /你的备份路径/$DT
[ $? -eq 0 ] && echo "$DT : backup done" || echo "$DT : backup failed"
重命名备份文件
mv /你的备份路径/`date '+%Y%m%d%H%M%S'` /你的备份路径/bak"`date '+%Y%m%d%H%M%S'`"
b. 停止应用
c. 清理业务库
# mysql -ucosmic -p****
mysql> show databases;
mysql> drop database uat_fi;
d. 全库还原
使用最近的全量备份进行恢复
# myloader -ucosmic -p**** -o -d /你的备份路径/bak_20230511010001
e. 增量还原
# mysqlbinlog --start-position=185349301 --skip-gtids=true mysql_bin_30001.001491 > mysql_bin_30001.001
MySQL误删库之还原实战
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



