redis++:Redis持久化中 aof 备份策略中的配置参数

 在使用redis时,都会配置相应的存储策略,以保证redis并不会由于意外挂掉,在短时间内重启时数据不会消失。

在当前的版本中,redis提供了bgsave和aof两种策略,本文主要描述了aof中的相关参数以及为什么这样是可以足够安全的。

appendonly:

  开启aof特性,这个控制是否启用aof.

appendfilename:

  写入文件的文件名。开启aof之后,每条命令(除读之外的命令),均会写入到文件中,这里即实际写入的文件.

appendfsync:

  写入策略,默认值everysec,每秒写一次(调用flush)。

  另外两个值,always | no,分别表示每次redis写命令之外就写文件,和由操作系统保证。

  always对硬盘压力大,everysec是一个平衡值,no对硬盘压力最小,但调度由系统控制,丢失数据风险最大.

no-appendfsync-on-rewrite:

  是否在后台写时同步单写,默认值no(表示需要同步).这里的后台写,表示后台正在重写文件(包括bgsave和bgrewriteaof.bgrewriteaof网上很多资料都没有涉及到。其实关掉bgsave之后,主要的即是aof重写文件了).

  no表示新的主进程的set操作会被阻塞掉,而yes表示新的主进程的set不会被阻塞,待整个后台写完成之后再将这部分set操作同步到aof文件中。但这可能会存在数据丢失的风险(机率很小),

  如果对性能有要求,可以设置为yes,仅在后台写时会异步处理命令.

auto-aof-rewrite-percentage:

  aof文件增长比例,指当前aof文件比上次重写的增长比例大小。

  aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,以反映最新的状态(相当于bgsave)。

  这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题).

auto-aof-rewrite-min-size:

  aof文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).

  此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.

aof-load-truncated:

  指redis在恢复时,会忽略最后一条可能存在问题的指令。

  默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,yes会log并继续,而no会直接恢复失败.

Linux内核参数:

  另外,与aof重写相关的一个linux内核参数即是 overcommit_memory。

  即在进行重写时,如何分配子进程内存的问题。

  (重写是后台重写,会分配子进程).默认值为0,建立设置为1,以保证 子进程内存能够分配成功(即使用copyOnWrite内存分配策略,在没有set命令时会和主进程使用同一份内存),并且不会判断当前内存是否够用.

原文地址:https://www.cnblogs.com/codingmode/p/12632717.html