在实际生产环境中,只是误删除(误修改)了一个10M大小的数据表
假设某个企业进行数据库服务的数据备份,将会采用数据库全备方案,每次全备会生成大约50G的数据信息;
并且每次数据库服务进行全备耗时大约15~30分钟,因此如果有需要进行数据恢复时,耗费时间大约3~5小时左右(备份时间的3-5倍);
但是,在实际生产环境中,只是误删除(误修改)了一个10M大小的数据表,如何进行部分数据信息的快速恢复;
说明:此时需要实现部分单表数据信息恢复时,在实际企业生产环境中,并没有做指定的单表数据信息备份操作;
痛点解决思路:
只能通过已有的全备数据信息,配合已有binlog日志信息,进行指定表数据信息的恢复操作;
-
基于全备数据信息,可以将指定数据表的建表语句和插入语句提取出来,进行单表数据信息恢复(恢复全备前的数据);
-
基于增量日志信息,可以将指定数据表的所有相关事件信息进行截取,进行单表数据信息增量恢复;
处理方法参考:
-
基于全备数据信息,获取指定数据表的建表语句和插入语句信息:
[root@xiaoQ ~]# sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `xiaoQ`/!d;q' /database_backup/full.sql > /database_backup/createtable.sql
-- 获取指定表的建表语句信息;
[root@xiaoQ ~]# grep -i 'INSERT INTO `xiaoQ`' /database_backup/full.sql > /database_backup/data_insert.sql
-- 获取指定表的插入语句信息;
[root@xiaoQ ~]# grep -i 'UPDATE `xiaoQ`' /database_backup/full.sql > /database_backup/data_delete.sql
-- 获取指定表的修改语句信息;
[root@xiaoQ ~]# grep -i 'DELETE FROM `xiaoQ`' /database_backup/full.sql > /database_backup/data_delete.sql
-- 获取指定表的删除语句信息;
基于增量日志信息,获取指定数据表的增量变化的日志数据信息:
[root@xiaoQ ~]# python3 binlog2sql.py -h 10.0.0.101 -P3306 -uroot -p123456 -d 数据库 -t 数据表 --start-file='binlog.00000N'
-- binlog2sql 截取指定单表的binlog数据,进行恢复/分析操作
欢迎来撩 : 汇总all