王大锤:看到金仓的数据恢复方案,我彻底服了
有一种惨,叫做人还在,数据没了
没有困难的工作,只有勇敢的打工人
与福尔摩斯·K联合确定解决方案
对于事务型数据库,通常都会有逻辑日志,用于记录数据库的各种操作。数据库系统在执行DDL操作时,都会操作系统表。数据库系统的逻辑日志中会记录全部的DML操作,可以通过分析对系统表的DELETE操作,来分析用户执行的实际的DDL操作。
通过与福尔摩斯·K近50分钟的电话沟通,我们初步确定如下方案:
福尔摩斯·K的方案验证
模拟现场环境
在下面的操作中,将演示如何分析这个逻辑日志文件中的内容,查询到删除表的精确时间。
使用逻辑日志,分析表的精确删除时间
1) 转换逻辑日志为文本格式
使用onlog命令将逻辑日志文件转换为文本格式,并输出到文件中。
2) 通过关键字搜索,确定要分析的表ID
通过过滤HDELETE关键字,查询出要分析的表ID。
得到的表ID会有重复,可以在去重后,用于后续的表名称分析。
3) 使用oncheck解析出表名称,确定系统表对应的表ID
说明:上面数据为十六进制,在用oncheck分析时,需要加上0x。
根据上面的结果,使用oncheck确定4个表的名称。
命令会输出表名称,内容如下:
我们需要关注的是指定数据库mydb下的systables表。对于上面的结果,我们需要的表ID为0x80004b。详细信息见下面:
4) 根据系统表ID分析删除表的事务数据
本例中,用户删除了t_user表。需要查找80004b和HDELETE两个关键字附近中包含t_user的信息。下面的命令演示查询同时包含80004b和HDELETE两个关键字行,并输出该行的前后各10行信息(可根据实际情况适当增加)。
在本示例中,我们只查询到一行数据,并输出了该记录的前后各10行记录。通过分析输入的文本信息,可以看到该行信息的后面包含了t_user表的名称,说明该行即为删除t_user表的信息。在该行的前面,对应BEGIN关键字的行,为该事务的开始信息,其中包含了该事务的开始时间(05/09/2022 16:49:18)。
烦恼随风而逝,数据成功找回
看到KingbaseES的数据恢复能力,我彻底服了
福尔摩斯·K的分析问题能力令我为之钦服。作为一名好学上进的青年,在问题复盘之时,亦不免对金仓数据库心驰神往。对于此类的表删除问题,在金仓数据库中应该如何去精确定位表的删除时间呢?
福尔摩斯·K告诉我,在金仓数据库中,虽然也可以通过分析日志来确定表的删除时间,并恢复数据。但此类方案的处理时间通常较长(整库的不完全恢复所涉及的数据量太大,在恢复数据并导出后,还需再进行一次数据库的完全恢复,并合并被删除的数据,因此耗时较长)。对于线上业务,过长的停机时间不仅会给企业带来严重的经济损失,而且会产生负面的社会影响,降低企业信誉。金仓数据库KingbaseES为解决这一难题,实现了数据库闪回功能,可将表删除的恢复时间由数小时缩短至分钟级。
在金仓数据库KingbaseES中使用闪回功能,只需要在kingbase.conf配置一个参数即可。
福尔摩斯·K给我做了一个演示。
他先创建两个表,并插入测试数据。
然后删除t_user表,并在t_goods表中继续插入数据。
金仓数据库KingbaseES提供了一个视图,可以查询出表的删除信息。
如果我们需要了解表的精确删除时间,可以直接查询recyclebin视图,快速得到表的精确删除时间。
相比Informix数据库的日志分析确定表删除时间方法,这简直太便捷了。然而更方便的还在后面。
通过闪回(flashback)这一特性,恢复被删除的表,根本无需了解表的精确删除时间,只需要在命令中指定before drop关键字即可。而且,不同于使用基于时间点的不完全恢复,使用flashback只恢复了这个被删除的表及其数据,对于在删除表之后进行的业务操作,则完全不受闪回操作的影响。
看了福尔摩斯·K的介绍,我深感自身能力不足,目前无法胜任公司的DBA一职,希望继续深造提升自我,于是决定向公司的CTO辞职。
我的生涯一片无悔, 我想起那天夕阳下的奔跑,那是我逝去的青春......
后记
大家好,我叫王大锤。
万万没想到,公司CTO对我的工作表示高度地认可,并极力地挽留我。他诚恳地表示是他自己的工作不到位,才会导致此类问题发生。
在CTO极力地挽留和高度地认可下,我还是留在了公司。
虽然现在电子商务平台已经成功上线,但后面随着业务增长,还会面临更多的困难。CTO希望我尽快调研,后续将电子商务平台迁移到我们有能力运维的数据库平台上。出于对福尔摩斯·K的信任和感激,我率先调研了人大金仓KingbaseES这款数据库:
1. KingbaseES在数据保护上,做了很多工作。不但有常规的备份与恢复,更提供了类似坏块自动修复功能,时刻保护数据安全。对于用户表被误删除此类问题,可通过闪回特性直接快速恢复,减少对业务的影响和用户损失。
2. 支持集群部署,当电子商务平台业务增长时,可以通过扩展集群节点,满足不断增长的业务要求。
3. 集群实现高可用,当服务器或操作系统出现故障时,可以自动进行节点切换,更好的支持电子商务平台的可用性需求。可以滚动升级,在不停止业务的情况下,更换服务器硬件,升级操作系统或升级集群组件。通过用户实际的验证,KingbaseES集群的高可用达99.999%。
4. 完善的技术支持体系,不但可以及时、高效解决客户问题,更可为客户规划方案,支撑客户不断发展的业务需求。
5. 免费的KCA/KCP培训,方便我们构建自己的技术支持团队。
6. 有KDMS、KDTS工具,方便将其它数据库业务迁移到KingbaseES中。借助KFS,更可实现业务的无停机平滑迁移。
在金仓数据库KingbaseES这款利器的帮助之下,相信用不了多久我就会升职加薪,当上总经理,出任CEO,迎娶白富美,走向人生巅峰。想想,还有点小激动呢!
END