Redis所有数据都是保存在内存中。下面讲述三种备份方式:
1.定期地通过异步方式保存到磁盘上,该方式称为半持久化模式。
1)半持久化RDB模式也是Redis备份默认方式,是通过快照完成的,当满足redis.conf配置文件中设置的相关条件时,Redis会自动将内存中的所有数据进行快照并存储在硬盘上,完成数据备份。
2)RDB快照的条件由用户在redis.conf配置文件中自定义,由时间和改动的关键字数来确定,当在指定的时间内被更改的键的个数大于指定的数值时就会时进行快照。以下是预置的3个条件,只要满足其中一个条件,就会进行快照。
save 900 1 #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。
save 300 10 #必须是300秒之后至少10个关键字发生变化。
save 60 10000 #必须是60秒之后至少10000个关键字发生变化。
3)如果禁用自动快照,将所有save参数删除或注释即可。
4)获取redis数据保存的路径:
127.0.0.1:6379> config get dir
"dir"
"/usr/local/redis/bin"
5)建议修改数据保存路径: # vim redis.conf
dir ./ #默认所在安装的目录
dir /data/redis #修改成新的路径
操作技能:要先创建好保存路径,配置文件才会生效,否则会宕掉redis服务
[root@redis_master /]# mkdir -p /data/redis
6)测试修改数据存放效果
127.0.0.1:6379> config get dir
"dir"
"/data/redis"
7)RDB方式实现持久化,一旦Redis异常退出,就会丢失最后次快照以后更改的所有数据。
2.全持久化AOF模式
1)如果数据很重要,不能损失任数据,可以考虑使用AOF方式进行持久化,默认Redis没有开启AOF方式的全持久化模式。
2)允许同时开启AOF和RDB,即保证了数据安全又使得进行备份等操作十分容易。
3)参数配置详解:
appendonly yes #开启AOF持久化功能
appendifilename appendonly.aof #保存文件名
appendfsync always #每次执行写入都会执行同步,最安全也最慢
auto-aof-rewirte-percentage 100 #参数的意义时当目前的AOF文件大小超过上一次AOF重写时的文件大小的百分之多少时会再次进行重写,如果之前没有重写过,则以启动时的AOF文件大小为依据。
auto-aof-rewrite-min-size 64MB #限制允许重写的AOF文件最小的大小。
appendsync everysec #每秒执行一次同步操作。
appendsync no #不主动进行同步操作,每30s一次,最快也不最安全。
3.Redis主从复制备份
1)通过持久化功能,保证了即使服务器重启的情况下也不会损失或少量损失数据。但是由于数据是存储在一台服务器上的,如果这台服务器的硬盘出现故障,也会导致数据丢失。
2)为了避免单点故障,将数据库复制多个副本以部署在不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务,这就要求当一台服务器上的数据库更新后,可以自动将更新的数据同步到其他服务器上。
3)可以基于主从同步实现读写分离以提高服务器的负载能力。
4)主数据库只进行操作,而从数据库负责读操作。
5)可以基于LVS+keepalived对Redis实现均衡和高可用。
6)主库崩溃时可以降为从库,从库也可以升级成为主库。