redis持久化
redis的持久化是指通过设置策略,将redis的数据定期保存到本地磁盘中,以防止数据丢失,方式分为AOF及RDB两种
AOF
概念:将redis的所有写指令保存到本地磁盘上的AOF文件中,数据恢复时,只需将之前所有的写指令重新运行一遍
参数配置:
vim /opt/redis/16379.conf
#开启AOF appendonly yes #AOF备份文件名称,默认为appendonly.aof appendfilename "appendonly.aof" #设置同步频率,有everysec、always、no三个选项 appendfsync everysec #配置在执行BGSAVE命令或者BGREWRITEAOF命令时,服务器也不会停止对AOF文件的同步,防止在备份时 #因服务器异常而导致部分数据无法及时备份,默认为no,关闭 no-appendfsync-on-rewrite no #设置BGREWRITEAOF执行方式的参数 #表示aof文件大于64MB,大于上一次重写文件大小的100%时,重新执行BGREWRITEAOF,同时满足这两点才会执行 #默认为auto-aof-rewrite-percentage 100;auto-aof-rewrite-min-size 64mb auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
参数解释:
appendfsync表示设置同步频率,有everysec、always、no三个选项
always:每个redis的写命令都同步写入到本地磁盘中,这样会降低redis同步的速度
everysync:每秒对redis中的写命令执行一次同步,如果redis发生崩溃,那么最多也只是丧丢失一秒钟内的数据,可以做到数据损失最小。
no:不开启自动同步,由用户决定何时进行同步
为保证redis同步的性能,建议设置为everysync
no-appendfsync-on-rewrite设置为no,表示在执行BGSAVE或BGREWRITEAOF命令时,服务器也不会停止对AOF文件的同步,防止在备份时因服务器异常而导致部分数据无法及时备份
BGSAVE表示在后台操作将数据通过异步的形式保存到本地磁盘
BGREWRITEAOF表示通过异步的方式执行AOF的重写操作,重写会创建一个当前AOF文件的体积优化版本,旧的AOF文件在BGREWRITEAOF执行成功前不会被修改,因此即使BGREWRITEAOF执行失败也不是导致本地备份的数据丢失
auto-aof-rewrite-percentage和auto-aof-rewrite-min-size分别设置为100和64mb,表示生成的aof文件达到64MB,且大于上一次重写后AOF文件大小的100%时,会重新执行BGREWRITEAOF,同时满足这两点才会执行AOF重写操作
RDB
概念:将redis的所有库生成一个快照文件,定期的保存到本地磁盘中,恢复时只需恢复这个快照文件即可;也可以将快照文件移植到其他部署redis的服务器上进行redis数据的恢复,相当于进行迁移
参数配置:
vim /opt/redis/16379.conf
#表示900秒内有1次写入,那么触发RDB save 900 1 #当BGSAVE出错时,是否停止redis是否停止接收数据,以便发现RDB出现错误,默认为yes,开启这项功能 stop-writes-on-bgsave-error yes #设置为yes,启用压缩配置 rdbcompression yes #生成的RDB文件名称 dbfilename dump.rdb #RDB文件保存目录,开启AOF也是保存在该目录下,要提前建立 dir /opt/redis/backup
两种持久化方式可以都打开,也可以根据实际情况只开启一种,但需要注意,如果在进行数据恢复时,只能是一种持久化方式生效,如在恢复RDB文件时,需要将AOF持久化方式关闭,否则恢复会失败