redis的备份和还原

本文详细介绍了Redis的备份和还原过程,包括RDB快照和AOF(Append Only File)两种方式。在RDB备份中,通过`SAVE`或`BGSAVE`命令进行快照创建,还原时复制.rdb文件到Redis目录。AOF持久化需手动开启,提供更好的数据安全性,通过`BGREWRITEAOF`重写日志以减小文件大小。在恢复时,同样需要复制.aof文件并检查文件权限。同时开启RDB和AOF,Redis启动时会加载AOF文件。最后,文章还提到了命令行操作数据导入的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于redis 6.2

Redis备份还原

redis支持rdb和aof两种持久化方式. 默认只开启了rdb

RDB快照

半持久化, 默认已开启, 默认配置基本不需要修改.

#rdb默认的触发持久化的条件
save 900 1
save 300 10
save 60 10000

#rdb快照的文件名
dbfilename dump.rdb
#rdb快照文件保存路径
dir /www/server/redis/

直接备份文件 dump.rdb

获取redis目录(rdb文件存放在这): CONFIG GET dir

在redis命令下执行 SAVE , 可立即将内存中的数据写入 dump.rdb :

redis-cli -h 127.0.0.1 -p 6379 -a 密码 save

注意: SAVE 命令会立即执行并等待返回结果, BGSAVE 是异步的(不会返回执行结果)

还原

  • 停止redis服务

  • 复制备份文件 dump.rdb 到redis目录

    复制后, 检查一下文件的owner是否是 redis

  • 启动redis

如果rdb文件损坏, 会启动失败, 使用 redis-check-rdb dump.rdb 进行修复.

AOF(Append Only File)

全持久化, 比较耗IO, 需要手动开启.

修改配置:

#开启AOF
appendonly yes
  • 默认的AOF持久化的文件名是: appendonly.aof

  • 其他配置基本不用修改. 默认的刷新策略是 everysec , 即每秒写入一次, 宕机后最多丢失一秒的数据.

直接备份文件 appendonly.aof

建议备份前在redis命令下执行 bgrewriteaof , 发送 异步 重写指令, 可以减少日志尺寸:

redis-cli -h 127.0.0.1 -p 6379 -a 密码 bgrewriteaof

bgrewriteaof 是异步命令, 需要使用 info persistence 命令检查 aof_rewrite_in_progress 是否为0来确认是否已完整.

还原

  • 停止redis服务

  • 复制备份文件 appendonly.aof 到redis目录

    复制后, 确认一下文件的owner是否是 redis

  • 启动redis

如果aof文件损坏, 会启动失败, 使用 redis-check-aof --fix appendonly.aof 进行修复.

注意: 经过测试, redis 6.2 版本的aof会记录 flushall 命令(早前的4.x可能不会记录)

同时开启rdb和aof

在配置文件中同时开启rdb和aof时, 会加载aof文件

如果要打开aof, 建议先使用命令开启, 以同步数据, 然后再修改配置文件 .

开启aof:

127.0.0.1:6379> config set appendonly yes

开启aof之后, 会自动更新持久化文件.

执行aof日志重写(异步的, 需要监控状态):

127.0.0.1:6379> bgrewriteaof

检查持久化状态:

127.0.0.1:6379> info persistence

查看 aof_rewrite_in_progress 属性的信息, 如果值为0则表示当前没有aof重写进程, aof文件更新完成.

手动修改配置文件, 以确保redis重启时开启aof.

命令行操作

#开启aof(运行时, 不会修改配置文件)
redis-cli -h 127.0.0.1 -p 6379 -a 123456 config set appendonly yes

#关闭rdb(运行时, 不会修改配置文件)
redis-cli -h 127.0.0.1 -p 6379 -a 123456 config set save ""

#在拷贝rdb文件前刷新:
redis-cli -h 127.0.0.1 -p 6379 -a 123456 save

批量导入模拟数据:

cat redis_batch.txt | redis-cli -h 127.0.0.1 -p 6379 -a 123456

redis_batch.txt中是redis命令的行, 比如:

set name aben
incr quantity
hset user:1 name aben age 18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值