Redis部署-单机部署
使用系统:OpenKylin1.0.1
Redis版本:7.2.3
安装Redis
本文采用离线安装
1. 安装c++环境
sudo apt-get install gcc
//检查c++是否安装成功
gcc -v
2. 下载离线包
官网地址:https://redis.io/download/
3. 编译Redis源码
本文Redis下载压缩包存放路径为:/usr/local/redis-7.2.3.tar.gz
//解压Redis压缩包
tar -zxvf redis-7.2.3.tar.gz
//进入Redis目录
cd redis-7.2.3
//生成编译文件
make
//打包
make install
4. Redis配置文件修改
配置文件目录 /usr/local/redis-7.2.3/redis.conf
//设置端口
port 6379
//设置密码
requirepass redis
//注释仅限本机访问限制
bind 127.0.0.1 -::1修改为bind 0.0.0.0 -::1
//开启后台启动
daemonize yes
// 设置日志文件目录
logfile "/usr/local/redis-7.2.4/log/redis_6379.log"
5. 启动Redis
//单节点启动
redis-server /usr/local/redis-7.2.3/redis.conf
持久化配置
RDB模式
基础配置
修改配置文件/usr/local/redis-7.2.3/redis.conf
# save <seconds> <changes> [<seconds> <changes> ...]
# seconds与changes是and关系
save 3600 1 300 100 60 10000
# 相对路径的根目录为redis的安装目录,本文为/usr/local/redis-7.2.4
dbfilename dump6379.rdb
# 设置持久化文件的绝对路劲
dir /usr/local/redis-7.2.4
备份机制
自动触发
- 当符合save备份条件时,会在指定的目录生成dump文件
- 重启redis时,会从备份目录的dump文件中读取数据到内存
- 执行shutdown命令关闭服务时会生成新的dump文件
- 执行flushdb和flushall会生成一个空的dump文件,并覆盖原有dump文件以达到清空数据的机制
手动触发
- save命令:立马生成备份文件,阻塞主进程
- bgsave命令:fork一个子进程,单独生成备份文件,不阻塞主进程(推荐)
灾备处理
定时将dump文件备份到不同的服务器中,确保备份文件不会被重写或者丢失
优点
- 适合大规模的数据恢复
- 按照业务定时备份,处理灵活
- 对数据的完整性和一致性要求不高
- RDB文件的加载速度要比AOF快
缺点
- 无法实时备份,容易丢失最新数据
- 备份数据时,fork备份会临时生成两倍的数据,占用较大内存
- 内存全量同步,大的I/O处理影响服务器性能
dump文件的检查与修复
dump文件的迁移或写入过程服务器宕机可能会导致dump文件损坏,可使用redis-check-rdb工具进行修复,redis-check-rdb工具默认目录为/bin,示例:
rdb备份禁用
当生产环境数据文件较大,rdb全量快照生成影响服务器性能时,可禁用rdb,禁用方式如下:
- 命令设置(不推荐,redis重启失效):客户端执行config set save ""
- 配置文件修改(推荐): redis.conf文件中设置save ""
AOF模式
以日志的形式来记录每个写操作
基础配置
修改配置文件/usr/local/redis-7.2.3/redis.conf
# 开始aof备份
appendonly yes
# aof文件目录,Redis.7.x新增,会在dir目录下生成新的appenddirname目录,Redis.7.x之前两种备份模式公用dir
appenddirname "appendonlydir"
# aof文件名配置,Redis.7.x前仅有一个aof文件,Redis.7.x中将aof文件分成了base、incr和manifest三份
# - appendonly.aof.1.base.rdb as a base file. 存放重写后的最小全量恢复命令集
# - appendonly.aof.1.incr.aof, appendonly.aof.2.incr.aof as incremental files. 当重写aof文件时被创建,重写后新产生的写命令会临时存储到incr文件
# - appendonly.aof.manifest as a manifest file. aof文件变更清单,对aof文件进行版本控制
appendfilename "appendonly6379.aof"
#三种写回策略
# appendfsync always 每一个写命令都同步到磁盘aof文件,增加磁盘读写的负担,确保了数据的完整性
# 默认everysec,每秒写回,每间隔一秒将aof缓冲区的写命令同步到磁盘aof文件,性能适中,宕机时丢失近1秒的写数据
appendfsync everysec
# no 由操作系统决定写回时机,性能搞,丢失数据较多
# appendfsync no
工作流程
- redis写命令会先进入AOF缓冲区
- 通过回写策略将缓冲区的AOF命令写入到磁盘AOF文件中
- 随着AOF文件的增大会根据规则重写AOF文件,达到压缩效果
- 重启redis时将AOF的写命令重新执行(注意,同时存在rdb快照文件和aof文件时,只会读取aof文件)
aof异常恢复
使用redis-check-aof工具对aof文件进行检查并修复
优点
- 更好的保护数据,不易丢失
缺点
- AOF文件比RDB文件要大
- AOF文件恢复过程更慢
aof重写机制
当aof文件的大小超过设置的内存大小时开启重写压缩文件,保留尽可恢复全部文件的最小写命令集
- 自动触发
修改配置文件redis.conf
## 两个配置时and关系
# 当前 AOF 文件的大小超过上次重写后 AOF 文件大小的百分比
auto-aof-rewrite-percentage 100
# 当前 AOF 文件的大小超过 auto-aof-rewrite-min-size 配置
auto-aof-rewrite-min-size 1kb
- 手动触发
执行BGREWRITEAOF命令
RDB && AOF混合模式
共存模式下,重启Redis时优先加载AOF。
配置文件redis.conf
aof-use-rdb-preamble yes
rdb作为全量备份,aof做增量备份