redis专题14持久化配置

36次阅读

共计 1113 个字符,预计需要花费 3 分钟才能阅读完成。

概述

Redis 的持久化有 2 种方式:快照 rdb日志 aof
由于 rdb 是在某个时间点来备份的, 直接备份二进制映像文件, 恢复速度快。但是由于是在时间点备份的,在备份之前进程突然被杀掉就导致上个备份点到这个备份点之间的数据都丢失了;所以要结合 Aof 日志来一起备份, 再加上一个主从配置就比较完美了;

快照配置

save 900 1      #900 秒内, 有 1 条写入, 则产生快照 
save 300 1000   #如果 300 秒内有 1000 次写入, 则产生快照
save 60 10000   #如果 60 秒内有 10000 次写入, 则产生快照  
# 从下往上, 一个梯形结构;
# 这 3 个选项都屏蔽, 则 rdb 禁用;

stop-writes-on-bgsave-error yes #后台备份进程出错时, 主进程停不停止写入? 不停止写入的话, 有可能数据一致性出现偏差 
rdbcompression yes               #导出的 rdb 文件是否压缩
Rdbchecksum   yes                #导入 rbd 恢复时数据时, 要不要检验 rdb 的完整性
dbfilename    dump.rdb           #导出来的 rdb 文件名
dir ./                           #rdb 的放置路径

Aof 的配置

appendonly no  # 是否打开 aof 日志功能
appendfsync everysec # 折中方案, 每秒写 1 次
appendfsync always   # 每 1 个命令, 都立即同步到 aof. 安全, 速度慢
appendfsync no       # 写入工作交给操作系统, 由操作系统判断缓冲区大小, 统一写入到 aof. 同步频率低, 速度快;
no-appendfsync-on-rewrite  yes  # 正在导出 rdb 快照的过程中, 要不要停止同步 aof
auto-aof-rewrite-percentage 100 #aof 文件大小比起上次重写时的大小, 增长率 100% 时, 重写
auto-aof-rewrite-min-size 64mb  #aof 文件, 至少超过 64M 时, 重写

重写: redis 内存里的 key-value 逆化; 比如 set num 1,incr num 1…. 到 100; 把这一百个递增的结果直接逆化成 set num 100; 而不是再搞一百个命令;

问题解答

问: 在 dump rdb 过程中,aof 如果停止同步, 会不会丢失?
答: 不会, 所有的操作缓存在内存的队列里, dump 完成后, 统一操作.

问: aof 重写是指什么?
答: aof 重写是指把内存中的数据, 逆化成命令, 写入到.aof 日志里. 以解决 aof 日志过大的问题.

问: 如果 rdb 文件, 和 aof 文件都存在, 优先用谁来恢复数据?
答: aof

问: 2 种是否可以同时用?
答: 可以, 而且推荐这么做

问: 恢复时 rdb 和 aof 哪个恢复的快
答: rdb 快, 因为其是数据的内存映射, 直接载入到内存, 而 aof 是命令, 需要逐条执行 redis 服务器端命令

正文完
 0