redis: 3.1.0 持久化、备份及恢复



0. 为何要做redis持久化

redis和memcached等都是内存数据库,掉电之后,内存清空,数据也会丢失,所谓的持久化,就是将内存中的数据转存到硬盘上。

redis persistence参考文档
redis的持久化有两种方法RDB和AOF,下面分别来了解


1. rdb快照模式

RDB优点

RDB缺点

配置

vim /etc/redis/6379.conf
**********************************
# rdb配置
save 900 1
save 300 10
save 60 10000
# 含义是,若在900s内超过1个key修改,则快照保存
# 若在300s内超过10个key被修改,则快照保存
# 若在60s内超过10000个key被修改,则快照保存
# 若三项配置都被注视,则禁用快照

# 默认情况下,后台备份出错时,主进程停止写入
stop-writes-on-bgsave-error yes

# 备份文件是否压缩
rdbcompression yes

# 导入恢复数据时,是否验证rdb的完整性
rdbchecksum yes

# 备份文件名称
dbfilename dump.rdb

# 备份文件路径
dir ./
**********************************

2. AOF日志模式

AOF优点

AOF缺点

AOF配置

vim /etc/redis/6379.conf
**********************************
# 是否开启AOF
appendonly no

# AOF文件名称
appendfilename "appendonly.aof"

# AOF策略
# appendfsync always
appendfsync everysec
# appendfsync no

# 在rdb快照保存时,是否关闭AOF备份
no-appendfsync-on-rewrite no

# rewrite条件
# aof文件增长百分比为100%时
auto-aof-rewrite-percentage 100

# aof文件至少超过64mb时
auto-aof-rewrite-min-size 64mb
**********************************

演示AOF备份恢复

# 备份原有的aof文件
redis-check-aof --fix
# 使用diff -u去检查备份文件和修复后文件的不同
# 重启redis服务器

切换rdb到aof模式

redis-cli config set appendonly yes
redis-cli config set save ""
# 编辑配置文件开启aof,否则会在重启后失效

第一步把aof开启,第二步关闭rdb模式,这种情况避免了编辑配置文件重启redis丢失数据问题


3. 预想备份方案

可结合RDB和AOF备份方式

  1. Redis在同时开启AOF和RDB的情况下重启,会使用AOF文件来重建原始数据集,因为通常AOF文件是保存数据最完整的。
  2. 但为了避免aof出错,故需打开rdb和aof两种方式。
  3. rdb模式可5分钟备份一次,保存6个最新备份,以备不时之需
  4. aof文件可每分钟备份一次,保存10个最新备份,主要用aof文件来恢复,aof文件备份恢复时不需要手动操作,重启redis会自动使用aof文件恢复,对其的备份是避免aof文件损坏这种最坏的情况发生
  5. 同时做好slave,用slave来承担读请求。