升级指引

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

results matching ""

    No results matching ""