持久化是指为了避免数据丢失,定期将数据存储到磁盘中。如遇云数据库 Tair(兼容 Redis)实例宕机或重启,能够利用磁盘中的持久化文件恢复数据。为满足各类场景下对备份与恢复的需求,云数据库 Tair(兼容 Redis)实例提供RDB持久化、AOF持久化和Tair-Binlog持久化策略。
持久化策略
云数据库 Tair(兼容 Redis)支持以下持久化策略。
RDB持久化
RDB持久化是指周期性地为引擎中保存的数据创建快照,生成RDB文件,保存到磁盘中,实现数据的持久化。RDB文件占用空间小,便于移动,非常适合用于备份或迁移指定时间点的数据。
开源Redis在生成RDB文件时会可能会带来操作阻塞,阻塞时间取决于实例的数据总量。而云数据库 Tair(兼容 Redis)实例对此优化并实现了“无阻塞备份”,使实例的备份不影响客户端请求。
云数据库 Tair(兼容 Redis)的RDB持久化策略默认每天备份一次,您可以根据业务需求修改自动备份策略,也可以手动发起临时的备份。
AOF持久化
AOF持久化是指以日志的形式记录所有的写入类操作(例如SET)。当服务重启时,通过重新执行AOF文件中的操作来恢复数据。
由于AOF文件记录了所有写入类操作,随着AOF文件中的记录越来越多,当AOF文件过大时,Redis会自动执行AOF Rewrite,重组AOF文件,降低其占用的存储空间,提高数据恢复效率,但AOF Rewrite对写入性能会有一定损耗。
云数据库 Tair(兼容 Redis)实例(除持久内存型以外)默认启用AOF持久化,策略为AOF_FSYNC_EVERYSEC且不支持修改,即Redis每秒执行一次fsync,将AOF缓冲区中的写入类命令刷新到磁盘,这个过程又称为AOF落盘。AOF_FSYNC_EVERYSEC策略对Redis服务性能的影响较小,同时也能极大地降低意外情况下的数据损失风险。
Tair-Binlog
Tair(企业版)内存型不仅支持上述两种持久化策略,还优化了基于AOF(Append-only-file)的持久化机制,实现AOF增量归档,避免了AOF Rewrite对服务性能的影响,同时完整保留了每一次写操作与其时间戳,可以将实例整体或指定Key的数据恢复至某个秒级的时间点(PITR,point-in-time recovery)。更多信息,请参见通过数据闪回按时间点恢复数据。
备份恢复方案
云数据库 Tair(兼容 Redis)实例基于RDB持久化、AOF持久化和AOF增量归档,实现数据的备份与恢复。
类别 | 实施方案 | 说明 |
数据备份 | 支持数据持久化,会按照默认的策略自动备份数据(基于RDB),您可以根据业务需求修改自动备份策略,也可以手动发起临时的备份。 | |
备份文件支持保留7~730天,如果需要更长时间的备份存档(例如监管或信息安全需要),您可以将备份文件下载到本地进行存储。 | ||
数据恢复 | 支持从指定的备份集创建新实例,新实例中的数据将和该备份集中的数据一致,可用于数据恢复、快速部署业务或数据验证等场景。 | |
开启数据闪回功能(基于AOF)后,在备份文件的保存期内,您可以恢复指定时间点(精确到秒级)的数据,可最大限度地避免误操作带来的数据损失,或者在频繁回档的业务场景快速完成数据切换。 说明 该功能仅Tair(企业版)内存型支持。 |