Redis的AOF的配置

Redis的AOF持久化

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),Aof保存的是appendonly.aof文件,只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

Redis的AOF的配置

1. 找到redis.conf 开启AOF

# Please check http://redis.io/topics/persistence for more information.

appendonly no

默认是no 改为yes 就是开启AOF持久化

2. 生成AOF备份文件的文件名称

# The name of the append only file (default: "appendonly.aof")

appendfilename "appendonly.aof" 

3. 生成AOF备份文件的文件路径

# Note that you must specify a directory here, not a file name.
dir  /usr/local/redis/bin/

4. AOF备份文件的写入策略

# appendfsync always
appendfsync everyse

默认值everysec,每秒写一次(调用flush)。另外两个值,always | no,分别表示每次redis写命令之外就写文件,和由操作系统保证。always对硬盘压力大,everysec是一个平衡值,no对硬盘压力最小,但调度由系统控制,丢失数据风险最大.

5. 重写文件是否需要同步

# If you have latency problems turn this to "yes". Otherwise leave it as
# "no" that is the safest pick from the point of view of durability.

no-appendfsync-on-rewrite no

是否在后台写时执行同步,默认值no(表示需要同步).这里的后台写,表示后台正在重写文件(包括bgsave和bgrewriteaof。其实关掉bgsave之后,主要的即是aof重写文件了).no表示新的主进程的set操作会被阻塞掉,而yes表示新的主进程的set不会被阻塞,待整个后台写完成之后再将这部分set操作同步到aof文件中。但这可能会存在数据丢失的风险(机率很小),如果对性能有要求,可以设置为yes,仅在后台写时会异步处理命令.

6.AOF文件重写增长比例

auto-aof-rewrite-percentage 100

aof文件增长比例,指当前aof文件比上次重写的增长比例大小。aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,以反映最新的状态(相当于bgsave)。这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题).

7.AOF文件重写最小的文件大小

auto-aof-rewrite-min-size 64mb

AOF文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.

AOF文件的重写

AOF为何有重写的机制

redis中的数据是有限的,很多数据可能会自动过期,也有可能会被用户删除,但是这些操作都会被AOF文件记录下来,所有有可能存在AOF文件越来越大的情况,意思就是说,重建数据集根本不需要执行所有AOF记录的命令,为了处理这种情况,会有一种rewrite策略,在redis 2.4之前是需要手动执行BGREWRITEAOF命令来进行重写AOF文件,redis 2.4版本之后提供了自动rewrite的操作。我们可以配置rewrite的策略

就是上面提到的参数

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

最少AOF文件需要达到64mb就会进行重写,重写了之后,当检测到当前的AOP文件增长幅度大于100%,也就是64mb,即当前的AOF文件大小为128mb的时候,就会自动触发对AOF进行重写操作。

快照备份易恢复,文件也小,但是如果遇到宕机等情况的时候快照的数据可能会不完整。AOF备份,数据完整度高,但是随着系统的运行,AOF文件的体积会越来越大,极其占用硬盘的空间,AOF文件的重写在一定程度可以缓解这个问题。

当AOF的备份文件过大时,手动输入bgrewriteaof命令,进行文件重写

1.将redis.conf中的RDB持久化参数注释

#save 900 1
#save 300 10
#save 60 10000

2.删除目录下的dump.rdb

[erayt@ERAYT-01 bin]$ rm -rf dump.rdb

3.将appendonly no改为 yes

# Please check http://redis.io/topics/persistence for more information.

appendonly yes

开启AOF持久化


4.执行bgrewriteaof命令

127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started
127.0.0.1:6379> 

5.查看备份目录,生成aof文件

[erayt@ERAYT-01 bin]$ ls
appendonly.aof  log-redis.log  redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis.conf  redis-sentinel  redis-server
[erayt@ERAYT-01 bin]$
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值