升级指引
1.包管理安装
a.备份
- (自建Redis) Redis 执行备份操作,得到rdb 文件保存
redis-cli bgsave
b.升级
- redis 二进制包替换,启动 redis
redis-server
c.回滚方案
- (自建Redis)关闭redis-server,替换上老版本 redis-server,替换上备份的 rdb 文件,重新启动
2. 包安装管理详细操作
a. redis升级操作
- 说明:
该操作是通过停止老的redis-server服务,再运行新的,所以期间会出现redis服务不可用的情况,业务需要先做好相关流量摘除等操作再更新redis,也可以对文档中的步骤做相关调整在机器上同时启动新旧redis-server实例(新版本绑定6380端口)进行验证,没问题再下线老的redis-server;
b. redis备份
- 备份当前redis的配置文件和数据
cp /etc/redis/redis.conf /etc/redis/redis.conf.pre-update.bak.$(date +'%F')
redis-cli BGSAVE
# 检查备份情况
redis-cli LASTSAVE # 输出最后备份的时间戳
dbdir=$(grep '^dir ' /etc/redis/redis.conf | awk '{print $2}')
ls $dbdir # 检查是否存在dump.rdb文件,以及文件时间跟LASTSAVE输出一致
cp $dbdir/dump.rdb $dbdir/dump.rdb.bak # 备份 dump.rdb 文件
c. 安装新版本
- 下载最新的redis 6.2.14源码包
curl -o redis-6.2.14.tar.gz "https://download.redis.io/releases/redis-6.2.14.tar.gz?_gl=1*18339u1*_gcl_au*MjY1NTQ3NjczLjE3MTMzNDE4NjY.*_ga*MTk2ODQwOTU0My4xNzEzMzQxODY2*_ga_8BKGRQKRPV*MTcxMzM0MTg2Ni4xLjEuMTcxMzM0NDk2OC4xMC4wLjA.&_ga=2.213035412.1603737041.1713341866-1968409543.1713341866"
- 解压并进行编译
tar xf redis-6.2.14.tar.gz
cd redis-6.2.14
make
# 确认以下两个文件是否存在
ls -l src/redis-server
ls -l src/redis-cli
# 确认版本
./src/redis-server -v
Redis server v=6.2.14 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=6d31699ed6fd2592
# 拷贝到PATH路径,这里避免覆盖当前redis-server,最好是放到不同的PATH
# 比如老版本redis-server在/usr/bin下,则新的redis-server可以放到 /usr/local/bin
cp src/redis-server /usr/local/bin/redis-server
cp src/redis-cli /usr/local/bin/redis-cli
d. 停止老版本
# 根据当前启动方式不同,这里的停止方法需要对应关联上
## 假设使用systemctl管理的
systemctl stop redis-server
## 假设使用/etc/init.d/redis-server管理
/etc/init.d/redis-server stop
e. 启动新版本
/usr/local/bin/redis-server /etc/redis/redis.conf
# 这里启动用的跟老版本同一份配置文件,所以工作目录也是一样的,只要工作目录存在dump.rdb文件,redis-server启动时会自动加载备份文件到内存,如果不需要这份数据,则在启动前移除对应的文件
# 如果启动报错,可以根据实际的报错信息进行解决,基本上都是一些新版本废弃的参数需要调整
f. 验收功能
g. 回收老版本
# 假设老版本是使用apt安装的,则执行
dpkg -l | grep redis-server #如果有输出且跟老版本号一致,则是通过apt安装的
apt-get remove redis-server