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

备份机制

自动触发

  1. 当符合save备份条件时,会在指定的目录生成dump文件
  2. 重启redis时,会从备份目录的dump文件中读取数据到内存
  3. 执行shutdown命令关闭服务时会生成新的dump文件
  4. 执行flushdb和flushall会生成一个空的dump文件,并覆盖原有dump文件以达到清空数据的机制
    手动触发
  • save命令:立马生成备份文件,阻塞主进程
  • bgsave命令:fork一个子进程,单独生成备份文件,不阻塞主进程(推荐)

灾备处理

定时将dump文件备份到不同的服务器中,确保备份文件不会被重写或者丢失

优点

  • 适合大规模的数据恢复
  • 按照业务定时备份,处理灵活
  • 对数据的完整性和一致性要求不高
  • RDB文件的加载速度要比AOF快

缺点

  • 无法实时备份,容易丢失最新数据
  • 备份数据时,fork备份会临时生成两倍的数据,占用较大内存
  • 内存全量同步,大的I/O处理影响服务器性能

dump文件的检查与修复

dump文件的迁移或写入过程服务器宕机可能会导致dump文件损坏,可使用redis-check-rdb工具进行修复,redis-check-rdb工具默认目录为/bin,示例:
image

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文件进行检查并修复
image

优点

  • 更好的保护数据,不易丢失

缺点

  • 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做增量备份

参考文献

Redis官方文档

posted @ 2024-02-03 21:50  周仙僧  阅读(487)  评论(0编辑  收藏  举报