如果没有恢复场景,备份就失去了商业价值。毕竟,单纯以商业价值来衡量系统建设是不公平的,但如果数据恢复不成功,备份就会丢失。任何价值。数据库这个圈子其实是比较垂直的,能起名字的人就那么几个,所以数据恢复是一个很差的标签,删数据库跑路是行不通的。我们可以退而求其次,化工作为主动。假设我有1000个数据库实例,其中有500个从库和单实例节点,如何保证这500个数据库实例的数据可以恢复,如何在可以恢复的前提下提高恢复效率,以及那么总体来说,如何全面提升备份效率,备份任务调度,如何通过增量实现“一次全卷,永远增量”的设计模式,这些措施会有所改善,但仍难以保证数据恢复的效率。例如以下场景:1)数据库参数配置不规范,/etc/my.cnf和/data/mysql_xxx/my.cnf配置不匹配,导致实例启动失败。2)数据库版本区分,比如主流支持5.7,突然弹出一个5.6的版本3)binlog解析错误,导致后续恢复失败4)备份集恢复错误,导致整体恢复失败这样的不胜枚举案例,一不小心就很难恢复,像配置这样的问题,虽然可以解决,但是遇到紧急情况,恢复过程失败,很难保证有好的态度去解决很快,所以对恢复质量的检查是我们过去一直犯的一个错误:我们一直在改进备份,但是对于恢复却很少关注,他们认为应该是可以的。正是这一点,应该把我们拖入被动的境地。所以我想出了一个随机恢复的想法,假设有500个实例,那么如果我们把这些实例一个一个恢复,每天的工作量会很大,对系统的负载会非常高,所以如果我们把风险和成本结合起来,这项工作的效率和意义就会显而易见。目前的恢复主要包括基于备份集的恢复、时间点恢复、对象粒度恢复和表结构恢复。我们通常所说的系统层恢复主要是基于备份集恢复和时间点恢复。为此,我设计并实现了如下基本流程:需要补充的是,随机时间是在备份集的时间段内,随机时间戳是基于过去24小时内的一个随机时间点.所以,多次随机化,可以让这个事情的判断更加清晰,回收质量一目了然。在此基础上,还需要一系列的东西:1)随机需要保证一定时间范围内可以覆盖所有实例2)恢复机的线性扩展,比如提供一个恢复服务器组,可以并行化在运行一些恢复任务,提高恢复响应效率3)每天可视化恢复结果,恢复了什么,恢复的效率如何,并总结回顾一定时间内的恢复结果4)根据思路推论统计,取一定的样本数据,通过假设检验,建立相应的数据模型进行检验分析本文转载请联系杨建荣学习笔记公众号。
