一 针对目标:非工单系统的数据恢复
二 分析功能设计,根据SQL语句确定具体的时间带你
1 在每个mysql上建立一个守护进程,记录 主机 binlog开启时间 binlog结束时间 binlog文件名
2 填写两个元素
1 主机名 2 时间范围 3 库 4 表 5 具体的SQL语句
3 利用binlog_rollback 生成SQL文件,SQL语句进行检索 得到具体的值,
4 如果可以利用binlog恢复就生成回滚语句,否则直接执行下一步
三 恢复功能设计
1 填写两个元素
1 需要恢复的实例 2 需要恢复的时间点 3 需要恢复前一个GTID事务
2 后台需要存储的
1 对应数据库的备份记录 实例ID-全量备份名称-全量备份时间点-全量备份存储位置
逻辑 1 根据实例和恢复的实际点 定位全量备份的信息 对 全量备份进行解压和恢复,
2 当恢复完成后反馈前端一个建立恢复实例完成
3 恢复完成的实例自动进行change master to start util 需要恢复的实例 作为从,能并行应用binlog,
4 当同步到指定位置后返回前端信息 同步数据完成
5 然后DBA进行查看 进行数据的具体恢复操作
建议:
1 准备一台大容量的存储,将每天的全备都存这里一份,然后第二天清理掉,并预先解压好,这样做的好处是减少解压时间,如果实例太多 这样就不太好做,因为每天备份的生成量是一个非常恐怖的数字,
2 采用celery进行异步处理,处理完成后反馈前端改变工单状态,使DBA能第一时间获知