9. Redis RDB 持久化配置和数据恢复实验

RDB 持久化配置

自动方式

RDB 持久化在 redis.conf 文件中配置,目前配置文件存放在 /etc/redis/6379.conf
打开配置文件,添加 save 属性配置,定期生成 RDB 快照

# 每隔15分钟,如果有超过1个key发生了变更,那么就生成一个新的dump.rdb文件
save 900 1
# 每隔5分钟,如果有超过300个key发生了变更,那么就生成一个新的dump.rdb文件
save 300 10
# 每隔1分钟,如果有超过10000个key发生了变更,那么就生成一个新的dump.rdb文件
save 60 10000

save 属性可以设置多个,就是设置多个 SNAPSHOTTING 检查点,每到一个检查点,就会去 check 一下,是否有指定的 key 数量发生了变更,如果有,就生成一个新的 dump.rdb 文件。

手动方式

也可以在 redis-cli 命令中输入 save 或者 bgsave 命令,手动同步或异步生成 RDB 快照。

RDB 持久化机制的工作流程

  1. Redis 根据配置自己尝试去生成 RDB 快照文件
  2. fork 一个子进程出来
  3. 子进程尝试将数据 dump 到临时的 RDB 快照文件中
  4. 完成 RDB 快照文件的生成之后,就替换之前的旧的快照文件

基于 RDB 持久化机制的数据恢复实验

通过 redis-cli SHUTDOWN 这种方式去停掉 Redis,其实是一种安全退出的模式,Redis 在退出的时候会将内存中的数据立即生成一份完整的 RDB 快照,存放在 /var/redis/6379/dump.rdb。

需要使用 kill -9 *** 强制杀死进程的方式来模拟 Redis 异常退出。执行步骤如下:

  1. 先往 Redis 中插入几条数据
  2. kill -9 强制杀死 Redis 进程,删除 /var/run/redis_6379.pid 文件,再重新启动 Redis
  3. 通过 redis-cli 客户端查看刚刚插入的数据,发现最新的几条数据已经丢失
  4. 配置 save 检查点,save 5 1(每隔5秒,如果有超过1个key发生了变更,那么就生成一个新的dump.rdb文件)
  5. 往 Redis 中插入几条数据,暂停5秒以上
  6. kill -9 强制杀死 Redis 进程,删除 /var/run/redis_6379.pid 文件,再重新启动 Redis
  7. 通过 redis-cli 客户端查看刚刚插入的数据,发现最新的几条数据还在,查看 dump 文件,发现已经更新为成最新的了

你可能感兴趣的:(9. Redis RDB 持久化配置和数据恢复实验)