安装
- 下载
- 解压
- 打包
- 运行
- Redis 配置
- 安装脚本自动化,或者redis.conf 生产配置实践
- linux 安装路径推荐、
/usr/local/src里面
日志
- 在服务器中创建文件目录,我是放在
/usr/local/logs/redis/redis.log - 在redis.conf 中配置对应的路径
logfile "/usr/local/logs/redis/redis.log"
- 启动redis 服务这样就可以看到redis 操作日志
持久化
- 查找dump.rdb 文件
find / -name dump.rdb
RDB(Redis Datebase)
默认持久化机制
- RDB按照一定时间生成快照,保存为rdb.dump 文件,也可以通过手动触发
- 手工触发,使用BGSAVE 或者SAVE 操作
- BGSAVE,在后台创建一个子线程进行保存
- SAVE,在保存快照这个动作执行完成之前,不执行其他指令
- 自动触发,服务器配置自动触发 或者在系统shutdown 的时候触发一次SAVE 命令
- 关闭RDB 持久化,使用
SAVE ""- 优点- 只有一个快照文件,回复速度快
- 使用多线程机制进行保存,IO吞吐率更高 - 缺点
- 数据安全性低,至今RDB 快照保存是相隔时间比较长,如果在这个中间阶段发生了故障,数据会丢失
- rdb.dump 可能存在版本问题,如果对Redis进行升级会很麻烦
RDB 自动触发配置:每一行的格式为 save seconds changes,其中:seconds 表示 Redis 在经过多少秒没有进行写操作时触发保存快照。 changes 表示 Redis 在经过多少次写操作(数据发生变化)时触发保存快照。
具体解释:
save 900 1:如果在900秒(15分钟)内,至少发生了1次写操作,就触发保存快照。save 300 10:如果在300秒(5分钟)内,至少发生了10次写操作,就触发保存快照。save 60 10000:如果在60秒(1分钟)内,至少发生了10000次写操作,就触发保存快照。
AOF(Append Only File)
- AOF 机制会将redis 的所有操作追加保存在文件的末尾,当恢复数据的时候,从头到尾执行一遍文件中的命令,速度较慢
- AOF 机制是默认不开启的,所以使用时需要去配置
appendonly yes: 开启配置appendfilename 'redis.aof': 指定aof 文件- AOF同步频率
appendolnysync always|everysec|no- always: 每次操作都进行追加,IO 操作过多会影响redis 性能 everysec : 每秒进行追加一次,理想状态,能提高数据的完整性 no: 不进行自动追加,由系统决定何时进行追加,不推荐使用这种方式 -
AOF 重写
- AOF 重写的作用是对旧的AOF文件进行压缩,使得文件占用磁盘更小,精简执行语句
- 可以通过
BGREWRITEAOF指令进行AOF 重写,也可以通过系统配置设置aof 文件大小设置重写机制- 配置 redis.conf 中的 auto-aof-rewrite-percentage 和 auto-aof-rewrite-min-size 选项
- auto-aof-rewrite-min-size 64mb 表示AOF写入文件大小大于64m才能触发重写操作
- auto-aof-rewrite-percentage 100 中的100表示百分比,表示AOF文件的体积比上一次重写之后体积至少大了 “100%” 时会自动触发。
- 在进行AOF重写的过程中,读写不会被阻塞,Redis server 在接收到命令之后开启一个子线程,子线程用于读取旧的AOF文件,并将文件压缩到一个新的AOF文件(临时AOF) - 主线程创建一个缓存区,一遍进行读写操作一边将指令写到旧的AOF
- 子进程写完之后,向主线程发送一个信号量,主线程就将缓冲区的指令追加到新的AOF中 - 用新的AOF替换旧的AOF,之后的所有指令就追加到新的AOF
混合持久化
-
rdb-aof-use-rdb-preamble -
使用rdb 和aof 同时持久化,两种数据都会进行常规的持久化,与单个rdb 和aof 没有区别,当触发aof 重写的时候,新的aof 文件会读取当前的rdb 文件,后面再继续进行正常aof 的追加写
-
这样做,就可以在恢复数据的时候,读取aof文件,文件中rdb的部分使用rdb 快照读快速恢复,aof 的部分进行一条条执行,这样同时保证了redis 宕机数据恢复的速度,也使用aof 保证了数据完整性,不易丢失数据
-
结合了RDB 和aof 的优点
-
lab: 模拟服务器宕机 - - 数据恢复方案。 - 模拟内存不够告警, - 模拟磁盘不够告警
数据恢复
- 使用文件格式校验工具校验文件是否正常
- redis-check-rdb
- redis-checl-aof
如果格式不正确需要先修复格式
修复格式之后,将aof文件和rdb文件放在redis.conf 指定的位置,然后重启redis 服务