GeminiDB PITR,让游戏回档“进退自如”!
本文分享自华为云社区《GeminiDB PITR,让游戏回档“进退自如”!》,作者:GaussDB 数据库。
在实际业务场景中,客户数据库难免会出现数据损毁、数据丢失、数据误删除等故障场景。为保障业务的正常运行,通常需要将数据库恢复到故障发生前的某一个正常时刻。传统数据库采取周期性备份策略,即在系统故障时对数据进行恢复。因其数据恢复耗时较长,可恢复时间颗粒度较大,导致客户业务受损严重。
什么是 PITR 呢?
PITR(Point-in-Time Recovery),是指数据库的“时间点恢复”功能。它是一种数据库恢复技术,通常用于恢复误删除的数据或者误操作导致损坏的数据,将其恢复到一个指定时间点的数据状态。
以游戏场景为例,在游戏运行期间,有玩家利用游戏漏洞非法复制装备、货币,使游戏公平性遭到破坏。传统数据库备份频率一般是一天全备一次,备份间隔即一整天,不仅恢复时间长、时间粒度大,甚至无法恢复到想要时间点等。而 GeminiDB Redis 接口新增的 PITR 特性能够让游戏数据快速回档,可根据客户自定的备份粒度,最低支持 5 分钟粒度,自行选择需要恢复的时间点,实现数据的快速恢复。
PITR 功能优势
1. 备份任务无感,业务更稳健
GeminiDB Redis 接口的 PITR 功能不涉及数据的拷贝,备份任务业务无感知,不影响数据访问,让客户业务更加稳健。
GeminiDB Redis 接口快照原理是通过记录文件系统的状态来实现的,而不是通过复制文件本身来实现的,是瞬时生成的;快照存储当前时刻的底层数据的元数据信息,比如数据块信息、寻址信息等,形成快照。因此,当打高速数据快照时,业务可以继续运行,而不会受到任何影响。
在实际测试中,基于客户业务 6w 的并发数据量对数据库进行访问,开启 GeminiDB Redis 接口 PITR 功能,以最小粒度 5 分钟执行一次快照。
下面是 4 个时间点每隔 5 分钟执行一次快照结果(以下为 UTC 时间,监控时间+8):
观察可知,QPS,CPU,内存,P99 时延均无波动,对客户业务无影响。
2. 支持分钟级快速恢复,恢复时长与数据大小无关
PITR 数据快照文件可以在本地保存,不用上传到冷存储介质,因此,不涉及数据的拷贝搬迁,还可支持随时数据恢复。
PITR 恢复,数据恢复时长与数据大小无关,能快速恢复数百 GB 数据,通常可在 5 分钟以内恢复数据,保证客户业务可靠性。除此以外,PITR 还可多次前后恢复,恢复到指定时间点后,既可向前,也可向后,让客户使用更省心。
我们分别测试了 8U3 节点实例,数据 100GB 和 200GB 的回档速度。
3. 比开源 Redis 数据备份性能更优
开源 Redis 使用多进程写时复制机制来实现快照的持久化。在持久化过程中,调用 fork()产生一个子进程,fork()会阻塞 Redis 长达数百毫秒,对业务产生抖动;fork()的写时复制技术(COW)会造成内存过度使用。如果 fork()期间产生大量的写操作,会导致内存严重浪费甚至 OOM,通常内存利用率不足 50%。而 GeminiDB Redis 接口的 PITR 特性不涉及数据的拷贝搬迁,因此,对业务基本无影响,且具有快照速度快,数据稳定,安全等特点。
PITR 功能使用方法
1. 如何开启 GeminiDB Redis 接口 PITR 功能?
在控制台,实例详情页->备份恢复->设置恢复到指定时间点策略,即可打开。备份时间间隔最低支持 5 分钟,最高支持 120 分钟,保留天数最大支持 7 天。
2. 如何恢复到执行的时间点?
实例详情页->备份恢复->恢复到指定时间点,便可本实例快速恢复到指定时间点。
总结
GeminiDB PITR 执行数据快照业务无感,通常可在 5 分钟以内恢复到指定时间点,尤其是在业务异常场景可快速回退,降低损失,有效解决传统备份方案时间长、恢复粒度大等痛点问题。因此,GeminiDB 在游戏、金融等行业有着广泛应用。
未来,GeminiDB Redis 接口会进一步支持并完善数据恢复至某个秒级的时间点功能。也将持续致力于开发更多好用的企业级特性,帮助客户轻松运维,高效开发。我们期待与全球的企业和开发者合作,共同探索数据的未来,推动技术和业务的发展。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/ed68ef15728249fe441f37f92】。文章转载请联系作者。
评论