
# 通过PITR实现游戏回档
#### 应用场景
在实际业务场景中，客户数据库难免会出现数据损毁、数据丢失、数据误删除等故障场景。为保障业务的正常运行，通常需要将数据库恢复到故障发生前的某一个正常时刻。传统数据库采取周期性备份策略，即在系统故障时对数据进行恢复。因其数据恢复耗时较长，可恢复时间颗粒度较大，导致客户业务受损严重。
#### 方案总览
PITR（Point-in-Time Recovery），是指数据库的"时间点恢复"功能。它是一种数据库恢复技术，通常用于恢复误删除的数据或者误操作导致损坏的数据，将其恢复到一个指定时间点的数据状态。
以游戏场景为例，在游戏运行期间，有玩家利用游戏漏洞复制装备、货币，使游戏公平性遭到破坏。传统数据库备份频率一般是一天全备一次，备份间隔即一整天，不仅恢复时间长、时间粒度大，甚至无法恢复到想要时间点等。而GeminiDB Redis接口新增的PITR特性能够让游戏数据快速回档，可根据客户自定的备份粒度，最低支持5分钟粒度，自行选择需要恢复的时间点，实现数据的快速恢复。
#### 方案优势
GeminiDB Redis接口的PITR技术执行数据快照业务无感，通常可在5分钟以内恢复到指定时间点，尤其是在业务异常时可以快速回退，降低损失，有效解决传统备份方案时间长、可恢复时间粒度大等痛点问题。因此，GeminiDB Redis接口在游戏、金融等行业有着广泛应用。
- **备份任务无感，业务更平稳**
  GeminiDB Redis接口的PITR功能不涉及数据的复制，备份任务业务无感知，不影响数据访问，让客户业务更加平稳。
  GeminiDB Redis接口快照原理是通过记录文件系统的状态来实现的，是瞬时生成，而不是通过复制文件本身来实现的。快照存储当前时刻的底层数据的元数据信息，比如数据块信息、寻址信息等，形成快照。因此，当打数据快照时，业务可以继续运行，而不会受到任何影响。
  

- **支持分钟级快速恢复，恢复时长与数据大小无关**
  PITR数据快照文件可以在本地保存，不用上传到冷存储介质，因此，不涉及数据的复制搬迁，还可支持随时数据恢复。
  PITR恢复，数据恢复时长与数据大小无关，能快速恢复数百GB数据，通常可在5分钟以内恢复数据，保证客户业务可靠性。除此以外，PITR还可多次前后恢复，恢复到指定时间点后，既可向前，也可向后，让客户使用更省心。
  

- **比开源Redis数据备份性能更优**
  开源Redis使用多进程写时复制机制来实现快照的持久化。在持久化过程中，调用fork()产生一个子进程，fork()会阻塞Redis长达数百毫秒，对业务产生抖动。fork()的写时复制技术（COW）会造成内存过度使用，如果fork()期间产生大量的写操作，会导致内存严重浪费甚至OOM，通常内存利用率不足50%。而GeminiDB Redis接口的PITR特性不涉及数据的复制搬迁，因此对业务基本无影响，且具有快照速度快、数据稳定、安全等特点。
  
 
#### 方案详情
如何开启GeminiDB Redis接口PITR功能并执行恢复到指定时间点，请参考[通过PITR回档恢复到当前实例](https://support.huaweicloud.com/redisug-nosql/nosql_10_0124.html)。
