云数据库Tair(兼容 Redis)实例默认开启AOF落盘,即基于AOF(append-only file)的数据持久化。您可以通过设置appendonly参数来关闭或重新开启AOF落盘。
AOF落盘
AOF持久化是实例除了RDB备份外的另一种持久化方式。开启AOF持久化后,实例以日志的形式记录所有的写入类操作,例如SET。服务重启时,实例可以重新执行AOF文件中的操作来恢复数据。当AOF文件过大时,实例会自动执行AOF Rewrite,重组AOF文件,降低其占用的存储空间。完全兼容Redis。
云数据库Tair(兼容 Redis)的AOF持久化策略为AOF_FSYNC_EVERYSEC,系统每秒将接收到的写入类命令记录到AOF,保存在磁盘中,因此又称为AOF落盘。这种策略对实例服务性能的影响较小,同时也能极大地降低意外情况下的数据损失风险。同时实例还支持AOF增量归档,避免了AOF Rewrite对服务性能的影响。
AOF落盘会带来一定写性能损耗,如果将实例应用于纯缓存场景中,对数据持久化没有需求,您可以按照本章节的说明,修改appendonly参数的值,关闭AOF落盘。
AOF Rewrite触发规则:AOF文件大小超过实例内存的25%且相比上次Rewrite后(Base Rewrite)增长超过200%则触发Rewrite(空实例的Base Rewrite值为1 Byte)。
AOF落盘状态及其影响
除Tair持久内存型以外,创建Tair(以及Redis开源版)实例时,AOF落盘默认开启。
将appendonly的值从yes修改为no:
AOF落盘立即关闭,无需重启实例。
后续无法通过AOF文件恢复数据。
已有的AOF日志不受影响。
标准版实例中仅主节点的AOF落盘关闭,replica不受影响。
集群版实例中所有数据分片的主节点均关闭AOF落盘,所有从节点不受影响。
读写分离版实例中主节点与所有只读副本的AOF落盘关闭,从节点不受影响。
双副本实例,关闭AOF(实际上是关闭了主库上的AOF)能够减少Rewrite对时延的影响,但是会少一份数据的保障。
将appendonly的值从no修改为yes:
AOF落盘立即开启,无需重启实例。
开启AOF后会定期将AOF生成的文件压缩(Rewrite),而在fork压缩进程工作时会有几十毫秒甚至一百多毫秒的抖动,这个时间与实例的内存使用量有关(Linux或Unix在fork时拷贝页表的时延)。
适用场景
若您的实例开启了AOF持久化功能,出现由fork、aof_write耗时长,影响到业务的情况,建议您关闭AOF功能。
若您的实例作为Cache类应用,建议您关闭AOF功能。
如果使用的是Tair(企业版),且开通了DTS跨域多活服务或者数据闪回(任意时间点进行数据恢复),则不能关闭AOF。
操作步骤
访问实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,单击参数设置。
在参数列表中,单击appendonly右侧操作列的修改。
在弹出的对话框中完成以下步骤。
选择appendonly的值。
可选值:
yes(开启AOF落盘)
no(关闭AOF落盘)
单击确定。
相关API
API接口 | 说明 |
查询实例的配置参数和运行参数。 | |
修改实例的参数配置。 |