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 实例在恢复过程中处于停止状态,以避免数据不一致。
相关推荐
maqr_110几秒前
HTML怎么生成订单预览_HTML只读订单信息结构【操作】
jvm·数据库·python
2301_8038756125 分钟前
如何通过phpMyAdmin给WordPress所有用户发送全站通知_系统表插入
jvm·数据库·python
2301_777599371 小时前
mysql如何进行数据库容量规划_评估磁盘空间增长趋势
jvm·数据库·python
NineData2 小时前
NineData 亮相香港国际创科展 InnoEX 2026,以 AI 加速布局全球市场
运维·数据库·人工智能·ninedata·新闻资讯·玖章算术
m0_377618232 小时前
Redis怎样应对大规模集群的重启风暴_分批次重启节点并等待集群状态恢复绿灯后再继续操作
jvm·数据库·python
imuliuliang2 小时前
存储过程(SQL)
android·数据库·sql
考虑考虑2 小时前
SQL语句中的order by可能造成时间重复
数据库·后端·mysql
2401_835956812 小时前
Golang怎么写基准测试benchmark_Golang基准测试教程【完整】
jvm·数据库·python
阿杰学AI3 小时前
AI核心知识129—大语言模型之 向量数据库(简洁且通俗易懂版)
数据库·人工智能·ai·语言模型·自然语言处理·向量数据库·vector database
SPC的存折3 小时前
D在 Alpine 容器中手动搭建 Discuz 全攻略(包含镜像一键部署脚本,可直接用)
linux·数据库·mysql·缓存