Redis数据库的备份与恢复

来源:互联网 发布:淘宝打假赚钱 编辑:程序博客网 时间:2024/06/08 11:43

Redis备份


当程序有较多的任务在执行时,我们可以redis-cli模式下执行
bgsave,进入后台进行备份.

Snapshot
当然我们可以直接运行save命令.会写入dump.rdb文件。

配置说明:

save 900 1 #当900秒之后有一个key变化进行持久化保存save 300 10 #当300秒之后有10个key变化进行持久化保存save 60 10000 #60十秒之后有10000个key变化进行持久化保存

这个配置得仔细思考一下:最先判断的、最难满足的是 save 60 10000.
当60秒有9999key改变 不满足第三个条件,如果没有再没有key的改变那么只能等到300秒时进行持久化存储. 也就意味着秒数与key的改变数需同时满足.

AOF
当开启AOF时,AOF的优先级要高于Snapshot因此需要注意一些事项.

注意事项

1.使用Snapshot存储数据时,使用bgsave命令执行后台存储,防止阻塞主线程的执行.
2.redis.conf文件当中的save配置要根据实际配置,避免影响性能或数据存储.
3.如需退出redis服务,强烈不建议使用kill -9 pid这样会导致数据的丢失,最好根据Linux信号源机制去结束进程.
4.当redis需要中途开启AOF存储方式时,在充redis服务之前一定要拷贝一份当前的rbd文件,因为重启后会优先读取.aof文件,当第二次重启时,会将aof文件的数据存储到dump.rdb文件当中,这就会造成数据的丢失.
5.针对4的进一步补充,如果说我们将现在的数据存储到aof文件当中,在开启AOF存储方式时,那么当前的数据也会被AOF读取.
那么再开启AOF之前一定要运行bgrewriteaof,这样先会生成一个aof文件.
6.请始终牢记AOF的优先级高于Snapshot的优先级

Redis恢复数据


恢复数据也很简单运行config get dir 获得文件的存储目录,将dump.rdb文件放入该目录下 启动redis会自动加载该文件的内容.

如果是开启了AOF也很简单,只需要将AOF文件放入到相应的redis启动指定的dir目录当中.

主从复制与备份

首先要说明一点
Redis的主从复制是建立在内存快照的持久化基础上的,只要有Slave就一定会有内存快照发生。
中从同步的过程:
第一次Slave向Master同步的实现是:
Slave向Master发出同步请求,Master先dump出rdb文件,然后将rdb文件全量传输给slave,然后Master把缓存的命令转发给Slave,初次同步完成。
第二次以及以后的同步实现是:
Master将变量的快照直接实时依次发送给各个Slave。但不管什么原因导致Slave和Master断开重连都会重复以上两个步骤的过程。

save操作是在主线程中保存快照的,由于redis是用一个主线程来处理所有 client的请求,这种方式会阻塞所有client请求。

摘自:http://www.cnblogs.com/zhoujinyi/archive/2013/05/26/3098508.html

0 0
原创粉丝点击