在当前数字化经济的时代下,数据成为企业的关键资产。但因数据误删、服务器故障、病毒入侵等原因导致数据丢失影响业务,会对公司造成重大损失,所以如何保证数据资产的安全、稳定及可用,是企业必须考虑的事情。
在日常工作中,数据被误删的原因有很多,如:误操作、程序bug、病毒等,也正因这样,时不时会传出某某公司数据被误删的新闻。如果数据被误删,需要将数据库恢复到事故发生前的那一刻,这个操作过程不仅复杂,还要依赖经验丰富的DBA来进行恢复。那如何能快速的进行任意时间点恢复(Point-in-time Recovery)呢?NineData 推出的 恢复方式(按时间点、备份集)很好的解决上面说的问题,在解放了DBA复杂的手动操作外,也不用担心“删库跑路”的事情发生。
1、任意时间点恢复
▋恢复流程
NineData 完成基于时间点恢复(PITR)的过程如下:
新增新的一个数据库实例,为恢复所用,也可以用本地实例(需要修改恢复的库名);
找到误删操作之前的最近一次全量备份,恢复到新实例;
回放全量备份之后的BINLOG,到误删操作之前的时间点为止。
2、如何使用指定时间点的恢复
▋环境说明
使用指定时间点恢复功能前,需要先使用 NineData 的备份功能,先备份出一个类型为「表结构+全量数据+日志数据」的备份集。假如您已经通过NineData 的备份功能完成了一个数据库的备份,那么只需要简单的几步,就可以完成指定时间点的恢复了。
- 已有的备份集的备份类型:表结构+全量数据+日志数据
NineData 备份集的备份类型
- 假如用户数据库「backup_resotre_db」下有3张表「user_info、user_info_x、user_info_y」
NineData 备份恢复测试
▋恢复说明
- 18:22分,用户把表「user_info」给DROP掉了(全量备份中该表只有1条记录,DROP的时候,该表有3条记录,有2条记录需要通过增量恢复),此时业务出现报错,需要紧急进行恢复。即使通过专业的DBA同学来进行恢复,也需要大量的手动操作进行全量+增量恢复,如果在进行增量恢复期间遇到解析binlog异常(如字符集报错),还会浪费更多的时间处理,导致RTO时间不可控。如果使用NineData的指定时间点恢复能力,那么只需要简单的几步,就可以完成指定时间点的恢复了。
a. 创建恢复任务
NineData 创建恢复任务
按照要求,先选择要恢复的源数据实例和备份任务,然后再选择恢复到的时间点(执行DROP操作前的时间)。
b. 选择要恢复的对象,可以恢复整个库,也可以选择恢复被DROP的表。
NineData 恢复的对象
c. 选择要恢复到哪个目标数据库,可以是新数据源,也可以是当前的数据源(需要修改恢复后的数据库名)。
NineData 选择要恢复到哪个目标数据库
d. 预检查步骤中会进行相关的字符集、大小写敏感、时区等关键项目的检查,确保恢复正常。
NineData 预检查
e. 启动任务后,可以看到任务的相关信息,直到任务完成。
NineData 启动数据恢复任务
f. 数据恢复完成。
使用NineData完成数据恢复
通过上面对「任意时间点恢复」的说明,可以看到在 NineData 上简简单单的几步操作,就能轻松的实现数据任意时间点恢复的能力。在减少RTO的同时,也缩短了运维人员处理数据恢复的时间,最终保护了企业的核心数据。
小结
通过这篇介绍,可以了解到如何使用 NineData (www.ninedata.cloud/backup),快速简单的实现任意时间点数据恢复的能力。另外,NineData 推出的备份数据查询(全量、按时间点)和 数据变更轨迹查询 功能,也能很好的解决数据误删恢复的问题,有效保护企业的核心数据,为企业在数据安全上构筑起最后一道防线。