Redis篇之持久化数据恢复

Redis 提供了两种主要的持久化机制:RDB(Redis 数据库快照)和 AOF(附加文件)。

这两种机制各有特点和用途。

下面是如何使用 RDB 和 AOF 恢复 Redis 数据的步骤。

1、RDB(Redis 数据库快照)

RDB 是 Redis 的一种持久化机制,通过周期性地将数据库的状态快照保存在磁盘上的 RDB 文件中进行备份。RDB 文件通常是以 .rdb 结尾的文件。

恢复数据

找到 RDB 文件

确保你有一个有效的 RDB 文件。

如果你没有 RDB 文件,可以从 Redis 数据目录(通常是 /var/lib/redis 或其他配置目录)中找到 dump.rdb 文件。

step1:准备 Redis 服务器

停止当前运行的 Redis 实例(如果有):

sudo systemctl stop redis
或者:
redis-cli shutdown

step2:复制 RDB 文件

将 dump.rdb 文件复制到 Redis 数据目录:

cp /path/to/your/dump.rdb /var/lib/redis/dump.rdb

确保文件权限和所有者正确,以便 Redis 进程可以读取它。

step3:启动 Redis 服务器

启动 Redis 实例:

sudo systemctl start redis
或者:
redis-server /path/to/redis.conf

Redis 会自动加载 dump.rdb 文件中的数据,并恢复到数据库中。

2、AOF(附加文件)

AOF 是 Redis 的另一种持久化机制,它通过将每次写操作追加到 AOF 文件中来实现持久化。AOF 文件通常是以 .aof 结尾的文件。

恢复数据

找到 AOF 文件

确保你有一个有效的 AOF 文件。

如果你没有 AOF 文件,可以从 Redis 数据目录中找到 appendonly.aof 文件。

step1:准备 Redis 服务器

停止当前运行的 Redis 实例(如果有):

sudo systemctl stop redis
或者:
redis-cli shutdown

step2:复制 AOF 文件

将 appendonly.aof 文件复制到 Redis 数据目录:

cp /path/to/your/appendonly.aof /var/lib/redis/appendonly.aof

确保文件权限和所有者正确,以便 Redis 进程可以读取它。

step3:启动 Redis 服务器

启动 Redis 实例:

sudo systemctl start redis
或者:
redis-server /path/to/redis.conf

Redis 会自动加载 appendonly.aof 文件中的数据,并恢复到数据库中。

3. 混合使用 RDB 和 AOF

如果 Redis 配置同时启用了 RDB 和 AOF,Redis 会优先使用 AOF 文件来恢复数据,因为 AOF 文件包含了更详细的写操作日志,更能确保数据的完整性和一致性。如果 AOF 文件不可用,Redis 会回退到使用 RDB 文件进行恢复。

确保配置正确

检查 Redis 配置文件(redis.conf)中的持久化设置,确认你是否同时启用了 RDB 和 AOF:
RDB配置

save 900 1
save 300 10
save 60 10000

AOF 配置

appendonly yes
appendfsync everysec

参数说明:

save:用于配置 RDB 快照的生成规则。

appendonly yes:启用 AOF 持久化。

appendfsync everysec:配置 AOF 文件的同步策略。

总结

  • RDB:通过将数据库快照保存为 dump.rdb 文件来进行恢复。停止 Redis,替换 RDB 文件,然后重新启动 Redis。
  • AOF:通过将每次写操作追加到 appendonly.aof 文件来进行恢复。停止 Redis,替换 AOF 文件,然后重新启动 Redis。
    无论是使用 RDB 还是 AOF,都需要确保 Redis 实例在恢复过程中处于停止状态,以避免数据不一致。
相关推荐
Channing Lewis1 小时前
salesforce case可以新建一个roll up 字段,统计出这个case下的email数量吗
数据库·salesforce
毕业设计制作和分享2 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
ketil272 小时前
Redis - String 字符串
数据库·redis·缓存
Hsu_kk3 小时前
MySQL 批量删除海量数据的几种方法
数据库·mysql
编程学无止境3 小时前
第02章 MySQL环境搭建
数据库·mysql
knight-n3 小时前
MYSQL库的操作
数据库·mysql
包饭厅咸鱼4 小时前
QML----复制指定下标的ListModel数据
开发语言·数据库
王佑辉4 小时前
【redis】延迟双删策略
redis
生命几十年3万天5 小时前
redis时间优化
数据库·redis·缓存
Elastic 中国社区官方博客5 小时前
释放专利力量:Patently 如何利用向量搜索和 NLP 简化协作
大数据·数据库·人工智能·elasticsearch·搜索引擎·自然语言处理