Redis的持久化机制分为RDB和AOF
RDB: Redis DataBase
AOF: Append Only File
一、RDB方式
1、什么是RDB
RDB: 每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。
如果宏机重启,那么内存里的数据肯定会没有的,那么再次重启redis后,则会恢复。
2、备份与恢复
内存备份 --> 磁盘临时文件
临时文件 --> 恢复到内存
3、RDB优劣势
优势:
1) 每隔一段时间备份,全量备份
2) 灾备简单,可以远程传输
3) 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的完整性
4) 相对AOF来说,当有更大文件的时候可以快速重启恢复。
劣势:
1) 发生故障时,有可能会丢失最后一次的备份数据
2) 子进程所占用的内存会比父进程一模一样,如会造成CPU负担。
3) 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了。
4、查看redis的配置文件
cd /usr/local/redis
vi redis.conf
1) 备份的快照文件 /usr/local/redis/working 下的dump.rdb
2) 备份的时机
默认备份机制
save 900 1 900秒(15分钟)至少有一次key的修改,则保存一次快照
save 300 10 300秒(5分钟)至少有10次key的修改,则保存一次快照
save 60 10000 60秒(1分钟)至少有10000次key的修改,则保存一次快照
3)保存的时候发生错误则停止写入
stop-writes-on-bgsave-error yes
4) 压缩模式默认打开
rdbcompression yes
压缩的过程会占用CPU的性能(可忽略),设置为no的话将导致备份的文件较大。
5)设置备份rdb文件名称
dbfilename dump.rdb
6) 设置工作路径
dir /usr/local/redis/working
二、AOF
1、查看配置文件
cd /usr/local/redis
vi redis.conf
1) 默认AOF是关闭的,将no改为yes开启AOF
appendonly yes
2) AOF 文件名称
appendfilename "appendonly.aof"
3) AOF同步策略
# appendfsync always 只要有写操作,就同步一次。always策略会比较慢,并且安全的。几乎保证所有的数据是完整的,不会丢失。
appendfsync everysec 每秒钟同步一次
# appendfsync no
配置好之后,重启redis
/etc/init.d/redis_init_script stop
/etc/init.d/redis_init_script start
此时查看working文件多了一个AOF文件appendonly.aof,大小为0
4) 验证AOF文件
先清空redis,写入三个key
查看appendonly.aof
*2 $6 SELECT $1 0 *3 $3 set $4 name $8 zhangsan *3 $3 set $3 age $2 20 *3 $3 set $3 sex $3 boy ~
可以发现刚才的操作,用指令的形式记录了下来。(这里记录了所有写操作,读操作是没有的)
5) 当子进程正在备份的时候,不要进行同步。(不要把操作放入日志文件里)
no-appendfsync-on-rewrite no
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!