Redis 持久化 RDB/AOF

一、持久化之 RDB

1、全称 Reids DataBase:数据持久化方式之一,在指定时间间隔内,将内存中的数据集快照写入硬盘。术语叫Snapshot 快照,恢复时,将快照文件直接读到内存里。

2、相关配置参数 /etc/redis/6379.conf

文件名
– dbfilename “dump.rdb” // 文件名
– save “” // 禁用 RDB

• 数据从内存保存到硬盘的频率
– save 900 1 // 900 秒内且有 1 次修改存盘
– save 300 10 //300 秒内且有 10 次修改存盘
– save 60 10000 //60 秒内且有 10000 修改存盘

手动立刻存盘
– > save // 阻塞写存盘
– > bgsave // 不阻塞写存盘

压缩
– rdbcompression yes | no

在存储快照后,使用 crc16 算法做数据校验
– rdbchecksum yes|no

bgsave 出错停止写操作 , 对数据一致性要求不高设置为 no
– stop-writes-on-bgsave-error yes|no

3、使用 RDB 文件恢复数据

备份数据
备份 dump.rdb 文件到其他位置
~]# cp 数据库目录 /dump.rdb 备份目录

恢复数据
把备份的 dump.rdb 文件拷贝回数据库目录 , 重启 redis 服务
~]# cp 备份目录/dump.rdb 数据库目录 /
~]# redis-server /etc/redis/6379.conf

4、RDB 优点 / 缺点
RDB 优点:持久化时, Redis 服务会创建一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件;整个过程中主进程不做任何 IO 操作,这就确保了极高的性能。如果要进程大规模数据恢复,且对数据完整行要求不是非常高,使用 RDB 比 AOF 更高效。

RDB 的缺点:意外宕机,最后一次持久化的数据会丢失。

二、持久化之 AOF

1、AOF 介绍:只追加操作的文件,Append Only File。 记录 redis 服务所有写操作。不断的将新的写操作,追加到文件的末尾。使用 cat 命令可以查看文件内容。

2、相关配置参数:
文件名
– appendfilename “appendonly.aof” // 文件名
– appendonly yes // 启用 aof ,默认 no
AOF 文件记录,写操作的三种方式
– appendfsync always // 有新的写操作立即记录,性能差,完整性好。
– appendfsync everysec // 每秒记录一次,宕机时会丢失 1 秒的数据
– appendfsync no // 从不记录

日志重写 ( 日志文件会不断增大 ) ,何时会触发日志重写?
redis 会记录上次重写时 AOF 文件的大小,默认配置是当 aof 文件是上次 rewrite 后大小的 1 倍且文件大于
64M 时触发。
– auto-aof-rewrite-percentage 100
– auto-aof-rewrite-min-size 64mb

修复 AOF 文件:把文件恢复到最后一次的正确操作
[root@redis1 631]# redis-check-aof –fix appendonly.aof

3、使用 AOF 文件恢复数据
备份数据:备份 dump.rdb 文件到其他位置
~]# cp 数据库目录 /appendonly.aof 备份目录

恢复数据:把备份的 dump.rdb 文件拷贝回数据库目录 , 重启 redis 服务
~]# cp 备份目录 /appendonly.aof 数据库目录 /
~]# redis-server /etc/redid/6379.conf

4、AOF 优点 / 缺点
AOF优点:可以灵活的设置同步持久化 appendfsync alwayls 或异步持久化 appendfsync everysec
AOF缺点:AOF 文件的体积通常会大于 RDB 文件的体积。执行 fsync 策略时的速度可能会比 RDB 慢。

猜你喜欢

转载自blog.csdn.net/weixin_42972553/article/details/82657561