Redis 服务RDB和AOF持久化配置介绍

2017-04-12 0 By admin

Redis 服务的RDB(数据快照)和AOF(日志重写)两种持久化方式配置介绍。

一、RDB 数据快照持久化配置

1.1、save 自动保存设置

save
save 900 1
save 300 10
save 60 10000

以上配置设置了3个快照保存的条件,只要满足其中一个,就进行数据快照保存。
在900秒之内,对数据库进行了至少1次修改。
在300秒之内,对数据库进行了至少10次修改。
在60秒之内,对数据库进行了至少10000次修改。
全部注释掉,则表示禁用RDB快照持久化。

1.2、stop-writes-on-bgsave-error yes

当开启rdb快照功能时,如果后台快照写入操作失败;则redis停止接受写入操作
当后台保存进程恢复写入快照后,redis自动恢复接受写入。
此参数防止Redis快照功能异常,而用户不知道;当Redis服务停止后,无法使用RDB文件进行恢复,造成丢失数据。

1.3、rdbcompression yes|no

RDB文件是否使用压缩。

1.4、rdbchecksum yes|no

校验rdb文件。

1.5、dbfilename dump.db

指定RDB数据快照文件的文件名。

1.6、dir ./

指定RDB快照文件存储的目录;默认当前目录。

补充:当前目录是哪个目录那?

如果使用命令直接启动Redis,则当前目录就是当前用户执行启动时所在的目录。
如果下次使用命令启动Redis和这次启动的用户执行命令的目录不同的话;就会出现下次启动找不到dump.rdb文件,而使得数据无法恢复的情况。
建议:设置dump.rdb文件保存的目录

二、AOF(append-only File)日志重写持久化配置

2.1、appendonly yes

默认禁用AOF;yes为开启

2.2、appendfilename “appendonly.aof”

指定AOF文件名称,存储目录通dir命令。

2.3、appendfsync 日志存储到磁盘的方式

always 每个更新操作都写入到磁盘,很影响Redis的性能
everysec 操作日志每秒同步至磁盘一次。足够快;如果有灾难,最多丢失1秒的数据
no fsync把你的数据交给操作系统。速度更快

The suggested (and default) policy is to fsync every second. It is both very fast and pretty safe.
The always policy is very slow in practice.

2.4、no-appendfsync-on-rewrite no

在日志重写时,是否进行命令追加操作

2.5、auto-aof-rewrite-percentage 100

当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。

2.6、auto-aof-rewrite-min-size 64mb

当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Redis时由于文件尺寸较小导致频繁的重写。

2.7、aof-load-truncated yes

Redis启动过程中,当AOF文件中的数据被装载到内存时,发生AOF文件被截断的情况。

补充:AOF文件损坏的修复方法

写入AOF文件时,服务器可能会崩溃(这种情况不会导致不一致),从而导致Redis无法加载文件。
发生这种情况时,您可以使用以下过程来解决此问题:
1、制作AOF文件的备份副本。
2、使用redis-check-aof。Redis附带的工具修复原始文件:$ redis-check-aof --fix
3、可以选择diff -u用来检查两个文件之间的区别。
4、用修复的文件重新启动服务器。