7.1 分类
快照备份
- 快照备份:备份瞬时redis在内存中的数据
- 如果文件比较大,备份的时候可能造成卡顿,但是恢复重启的速度快
追加文件备份:
- 追加文件(AOF)备份:当redis执行写命令后,在一定的条件下将执行过的写命令依次保存的文件中.
- 只是追加写入文件,所以备份一般不会造成卡段,但是恢复重启需要执行的命令需要很多,备份的文件也可能很大.
7.2 Redis的配置
1. save <seconds> <changes>
指定在多长时间内,有多少次更新(写入)操作,就将数据同步到数据文件,可以多个条件配合
save 900 1 //当900秒执行了1个变更,将数据同步到文件
save 300 10 //当300秒执行了10个变更,将数据同步到文件
save 60 10000 //当60秒执行了1000个变更将数据同步到文件
2.stop-writes-on-bgsave-error yes
Bgsave:是异步存储.系统将启用另外一个线程把redis的数据保存到对应的文件中.
它和save命令最大的不同是,它不阻塞读写,也就是在执行bgsave的时候,客户端允许读写.
stop-writes-on-bgsave-error yes //当bgsave出错,redis将停止接受写操作,这样以一种强硬的方式让客户端用户知道数据不能正确持久化到磁盘,否则没人注意这灾难性的发生.如果后台保存进程重新启动了,redis将自动允许写操作.
3.rdb
rdbchecksum yes //对rdb文件进行校验
dbfilename dump.rdb //采用快照存储的时候,redis使用它来保存数据,恢复也使用它
dir . //数据库镜像备份的文件放置的路径
4.aof
appendonly no //配置为no.则不采用aof进行备份
appendfilename "appendonly.aof"//aof追加命令备份的时候,写入命令都会写到这里面
5.appendfsync
# appendfsync always //每当redis有写入的时候,同步到aof文件中,可能造成缓慢
appendfsync everysec // 每秒同步一次到aof文件
# appendfsync no // 客户端调用命令进行备份,redis本身不备份文件
6.no-appendfsync-on-rewrite
no-appendfsync-on-rewrite // 后台aof重写期间是否调用appendfsync,默认为no,即调用
7. auto-aof-rewrite
重写必须满足以下两个条件
auto-aof-rewrite-percentage 100 //aof重写的条件,默认为100,当前aof的增长量大于上次aof的100%时候,会启动后台重写.配置为0,禁用自动重写
auto-aof-rewrite-min-size 64mb //重写文件最小的大小.若aof文件大小小于该值,即使满足auto-aof-rewrite-percentage条件,也不重写.
8. aof-load-truncated yes
在aof写入的时候可能存在指令错误(突然断电,写了一半)
aof-load-truncated yes //恢复的时候忽略最后一条可能有问题的指令.Yes,恢复的时候,会log并继续.no则恢复失败.
18.1.1 手动执行备份方式
Save :
redis-cli
redis 127.0.0.1:6379> SAVE
OK
该命令将在 redis 安装目录中创建dump.rdb文件。查看配置文件位置可以去rediredis.conf中查看,也可以命令查看
redis-cli
127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis"
Bgsave:
redis-cli
127.0.0.1:6379> bgsave
Background saving started
127.0.0.1:6379>