Redis切换为AOF不丢数据的正确步骤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis切换为AOF不丢数据的正确步骤相关的知识,希望对你有一定的参考价值。

参考技术A 因为AOF丢失数据的概率更低,因此如果对Redis中数据的完整性要求高的话,通常会启用AOF。但是由于启用AOF之后,重启Redis,默认就会从aof恢复数据,就会忽略dump.rdb中的数据,就会造成重启之前数据的丢失,因此Redis从RDB向AOF切换的时候要使用如下步骤:

1)把redis配置文件启用AOF,比如appendonly设置为yes;建议把appendfsync设置为everysec,这样一秒同步一次,性能不会像always那样差,而且最多丢一秒钟的数据。其他配置请参考其他资料。

注意:只是修改配置文件,先不要停止或者重启redis服务。

2)Redis CLI中执行save,以便把数据全部写入dump.rdb,这是一步备份操作。以便于万一aof失败,还能到dump.rdb中把数据恢复回来。

3)Redis CLI中执行bgrewriteaof ,从而把数据写入.aof,便于下次以aof启动的时候加载数据。

4)aof写入完成后,重启Redis服务器即可。

5)如果启动后数据正常,rdb就没用了,愿意删就删。

关键的一步就是在配置启用aof并且重启服务器之前,要先执行bgrewriteaof。

redis不重启之rdb数据切换到aof数据

温馨提示:

要实现不重启从rdb切换到aof,redis的版本必须要在2.2以上。

[[email protected] /data 22:23:30]#redis-server -v
Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=64cb6afcf41664c

环境准备

redis.conf服务端配置文件

daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename  dbmp.rdb
save 900 1                    #rdb机制 每900秒 有1个修改记录
save 300 10                    #每300秒        10个修改记录
save 60  10000                #每60秒内        10000修改记录

 启动redis服务端

redis-server redis.conf

登录redis-cli插入数据,手动持久化

 

127.0.0.1:6379> set name chaoge
OK
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> set addr shahe
OK
127.0.0.1:6379> save
OK

检查RDB文件

[[email protected] /data 22:34:16]#ls 6379/
dbmp.rdb  redis.log

备份fdb文件,保证数据的安全

[[email protected] /data/6379 22:35:38]#cp dbmp.rdb /opt/

执行命令,开启aof持久化

127.0.0.1:6379> CONFIG set appendonly yes   #开启AOF功能
OK
127.0.0.1:6379> CONFIG SET save ""  #关闭RDB功能
OK

确保数据库的key数量正确

127.0.0.1:6379> keys *
1) "addr"
2) "age"
3) "name"

确保插入新的key,AOF文件会记录

127.0.0.1:6379> set title golang
OK

 此时RDB已经正确切换AOF,注意还得修改redis.conf添加AOF设置,不然重启后,通过config set的配置将丢失

 

以上是关于Redis切换为AOF不丢数据的正确步骤的主要内容,如果未能解决你的问题,请参考以下文章

redis持久化之AOF持久化

redis不重启之rdb数据切换到aof数据

Redis设计与实现-9.AOF持久化

线上项目腾讯云平滑迁移方案及步骤

百分百教你学会redis

redis---------AOF文件异常导致的redis无法载入