RDB、AOF
RDB
1、redis.conf中的配置
dbfilename dump.rdb
dir “/usr/local/redis/data/”
2、save
save 900 1 # 在900s内如果有1条数据被写入,则产生一次快照。
save 300 10 # 在300s内如果有10条数据被写入,则产生一次快照
save 60 10000 # 在60s内如果有10000条数据被写入,则产生一次快照
stop-writes-on-bgsave-error yes # 如果为yes则表示,当备份进程出错的时候,主进程就停止进行接受新的写入操作,这样是为了保护持久化的数据一致性的问题。
3、修改好的保存并重启 redis 服务,然后打开客户端,执行如下命令:
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
4、然后查看 dump.rdb 文件的大小,就可以发现文件快照已经产生了。
5、备份
清空数据
127.0.0.1:6379> flushdb
添加数据
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 v4
OK
127.0.0.1:6379> set k5 v5
OK
127.0.0.1:6379> set k6 v6
OK
备份 dump.rdb
cp dump.rdb dump.rdb.back
把 Redis 服务关闭
redis-cli shutdown
把 dump.rdb 文件删除
rm -f dump.rdb
6、恢复
首先执行如下命令来把 dump.rdb.back 文件修改为 dump.rdb
mv dump.rdb.back dump.rdb
重启 Redis 服务
redis-server /etc/redis.conf
连接客户端后再执行如下命令
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"
AOF
1、修改 redis.conf 配置
通过修改redis.conf配置中appendonly yes来开启AOF持久化
通过appendfilename指定日志文件名字(默认为appendonly.aof)
通过appendfsync指定日志记录频率
2、配置好后,停止 Redis 服务,然后再重新开启 Redis 服务后,就可以在 RDB 生成的同目录下(/usr/local/redis/data)会生成一个 appendonly.aof 文件
3、使用客户端连接 Redis 服务
127.0.0.1:6379> keys *
(empty array)
4、备份
首先添加数据
127.0.0.1:6379> set k11 v11
OK
127.0.0.1:6379> set k12 v12
OK
127.0.0.1:6379> set k13 v13
OK
然后停止 Redis 服务,并重命名文件
redis-cli shutdown
mv appendonly.aof appendonly.aof.back
5、恢复
重新把 aof 文件改名回来,再重启 Redis 服务,连接客户端
127.0.0.1:6379> keys *
1) "k11"
2) "k12"
3) "k13"
6、异常恢复
我们人为的在 appendonly.aof 中添加一点内容
vim appendonly.aof
# 在文件最后添加
redis-aof
保存退出后关闭 Redis 服务后再重启 Redis 服务,并用客户端进行连接。这时会发现连接出错
redis-cli
Could not connect to Redis at 127.0.0.1:6379:Connection refused.
这时我们需要对 appendonly.aof 文件进行修复
redis-check-aof --fix appendonly.aof
在提示中输入 y 即可。修复后再次重启 Redis 服务,并连接客户端就可以了。