redis持久化

rdb全量二进制备份

在指定时间间隔内将内存的数据集快照写入磁盘,生成的默认文件是dump,rdb

优点:
1、rdb最大限度提高reds性能,父进程不需要参与磁盘io

2、rdb文件紧凑,全量备份,使用与备份和灾难恢复

3、恢复大数据集时比aof快

缺点:rdb在数据集很大时,fork操作会非常耗时

备份指令和场景

save指令:会阻塞当前的redis服务器,在命令执行期间,redis不处理其他命令。直至备份完成

bgsave指令:fork创建子进程,备份过程由子进程执行,并且在备份同时可以响应客户端请求

自动化触发:通过save 命令设置触发条件,例子 save m n 表示在m秒内有n次数据修改,自动触发bgsave

主从架构:从服务器同步数据时,会发送sync执行同步操作,主服务器会执行bgsave操作

配置信息

#持久化文件名称
dbfilename dump.rdb
#持久化文件存储路径
dir /usr/local/redis/data
#持久化策略, M秒内有个n个key改动,执行快照
save 3600 1
save 300 100
save 60 10000
#导出rdb数据库文件压缩字符串和对象,默认是yes,会浪费CPU但是节省空间
rdbcompression yes
# 导入时是否检查
rdbchecksum yes

 aof增量备份

追加的方式存入文件中,重启时会重新执行aof文件以恢复数据,宕机时,可以通过reedis-check-aof 方式检查修复,不影响之前的数据

优点

1、数据更加安全

2、当aof文件太大时,能后台自动重写aof

3、aof易于理解和解析

缺点

1、aof文件比同级别的rdb文件的等效大

2、恢复时,aof可能比rdb慢

核心原理

1、每次写入命令会追加到aof_buf缓冲区

2、aof缓冲区根据对应的策略向硬盘做同步操作

3、高频aof会影响性能,特别是每次刷盘操作时

同步方式

1、appendfsync always,每次有数据修改时就写入到aof文件中

2、appendfsync everysec 每秒执行一次

3、appendfsync 不主动同步,由操作系统自动调度刷磁盘,性能最好但不安全

重写机制

手动触发:bgrewriteaof

自动触发:auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 50mb 设置触发rewrite的最小尺寸

配置信息

# 是否开启aof
appendonly yes
# 文件名称
appendfilename "appendonly.aof"
# 同步方式,每秒同步
appendfsync everysec
# aof重写期间是否同步
no-appendfsync-on-rewrite no
# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 50mb
# 加载aof时如果有错如何处理
# yes表示如果aof尾部文件出问题,写log记录并继续执行。no表示提示写入等待修复后写
入
aof-load-truncated yes

 

posted @ 2024-04-13 01:57  程序菜小子  阅读(16)  评论(0)    收藏  举报