本文涉及:Redis的全量备份方式RDB和增量备份方式AOF的相关内容
◆
全量备份RDB
◆
RDB持久化触发方式
触发RDB持久化的过程分为手动触发和自动触发两种方式
手动触发:
·save命令:阻塞当前Redis服务器,直到RDB过程完成为止,除非是没有任何服务在使用此redis,否则千万不要使用此命令进行备份
bgsave命令:Redis进程执行fork操作创建子进程,由子进程负责持久化,这个生产环境是可以使用的。
自动触发:
从节点执行全量复制操作时,主节点自动执行bgsave生成RDB文件并发送给从节点
执行debug reload命令重新加载Redis时,也会自动触发bgsave操
默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave。
RDB持久化文件
RDB文件默认保存在配置文件中dir属性(./)指定的目录下,以dbfilename(dump.rdb)属性指定的文件名命名
Redis默认采用LZF算法对生成的RDB文件做压缩处理。取消压缩处理可以按照如下方式修改配置
rdbcompression no
◆
增量备份AOF
◆
AOF持久化文件
AOF持久化默认不开启,按照如下方式修改配置可开启AOF持久化
appendonly yes
RDB文件默认保存在配置文件中dir属性(./)指定的目录下,以appendfilename(appendonly.aof)属性指定的文件名命名
AOF文件同步策略
Redis提供了多种AOF缓冲区同步文件策略,由参数appendfsync控制:
always,每次写入都要同步AOF文件。Redis本身是纯内存操作,你要是每次写入都要写磁盘那就没有任何意义了
no,将同步操作交由操作系统负责,操作系统保证30秒内进行。同步时间不确定,则数据安全也无法让人放心
everysec,默认配置,每秒进行一次,生产环境通常都是使用此配置
AOF重写机制
AOF文件记录的是Redis中所有的写操作,例如:
set key1 1 \n set key2 2 \n set key3 3 \n
随着命令不断写入AOF,文件会越来越大。而此时AOF文件中存在很多待优化及无效的数据就需要使用重写机制进行处理。例如:
set key1 1 setkey1 2 setkey1 3 就可以优化成setkey1 3
set key2 2 set key2 3 del key2 就可以把所有关于key2的删除掉
lpush key 1 lpush key 2 lpush key 2 就可以优化为 lpush key 1 2 3
AOF重写机制触发方式
·手动触发:直接调用bgrewriteaof命令
自动触发:根据auto-aof-rewrite-min-size(运行AOF重写时文件最小体积,默认64MB)和auto-aof-rewrite-percentage(当前AOF文件空间和上一次重写后AOF文件空间的比值)参数确定自动触发时机
◆
Redis数据恢复
◆
Redis启动时是按照如下流程来恢复数据的
不得不看
万水千山总是情,点个 “在看” 行不行!!!