Redis不停机升级5.0.3->8.0.4
一、安装8.0.4版本
1、环境准备
sudo yum -y install gcc2、安装
#创建安装目录
mkdir -p /tools/redis8#解压redis-8.0.4.tar.gz
tar -zxvf redis-8.0.4.tar.gz#编译redis
cd redis-8.0.4
make#安装到指定目录
make PREFIX=/tools/redis8 install#安装完成之后会在/tools/redis8路径下生成bin文件夹,里面的文件如下
redis-benchmark
redis-check-aof
redis-check-rdb
redis-cli
redis-sentinel
redis-server二、查看当前集群信息
#5.0.3版本的redis安装在/tools/redis下,xxx是密码
/tools/redis/bin/redis-cli -a xxx -p 6379 -h 192.168.0.1 -c192.168.0.1:6379> cluster nodes
d0d61ee0e4009e2b6c365e0893b8a8cf1b747220 192.168.0.1:6381@16381 master - 0 1761128758527 3 connected 10923-16383
2aac9b736323aa77e09b16f86935ddb14b5d136b 192.168.0.1:6384@16384 slave d0d61ee0e4009e2b6c365e0893b8a8cf1b747220 0 1761128758024 6 connected
c656c7161bd3141608d80354b12deec003e2a051 192.168.0.1:6380@16380 slave 9e54dcaa6f02e7d541acf617a9b01011b28336ae 0 1761128759029 7 connected
9e54dcaa6f02e7d541acf617a9b01011b28336ae 192.168.0.1:6383@16383 master - 0 1761128759029 7 connected 5461-10922
50068caa0f09e020e77ba22c1bd08aeabfce73f6 192.168.0.1:6379@16379 myself,master - 0 1761128758000 1 connected 0-5460
815ac9c8dd372ede1482659fce7db45aba6e283a 192.168.0.1:6382@16382 slave 50068caa0f09e020e77ba22c1bd08aeabfce73f6 0 1761128757000 4 connected
192.168.0.1:6379>从节点:6380、6382、6384
主节点:6383、6379、6381
三、升级步骤(不停机)
1、升级从节点
#从库需要一个节点一个节点的操作,首先选择6382节点做升级#关闭现有集群中6382从节点服务 xxx是密码
/tools/redis/bin/redis-cli -a xxx -h 192.168.0.1 -p 6382 -c shutdown#查看进程是否关闭,会发现6382节点已经被关闭了
ps -ef|grep redis#备份数据文件
cp /tools/redis/appendonly.aof /tools/redis/appendonly.aof.bak
cp /tools/redis/dump.rdb /tools/redis/dump.rdb.bak#使用新版本的server进行启动 配置文件还是使用旧版的
/tools/redis8/bin/redis-server /tools/redis/etc/redis6382.conf#查看进程是否启动,会发现6382节点已经启动了
ps -ef|grep redis#使用旧版本的cli将升级后的6382节点加入集群
#这里第一个192.168.0.1是指6379节点所在的IP,第二个192.168.0.1是指6382节点所在的IP
/tools/redis/bin/redis-cli -a xxx -h 192.168.0.1 -p 6379 cluster meet 192.168.0.1 6382#将新版本的6382节点设置为旧版本6379节点的从库
#这里192.168.0.1是指6382节点所在的IP
/tools/redis/bin/redis-cli -a xxx -h 192.168.0.1 -p 6382 cluster replicate 50068caa0f09e020e77ba22c1bd08aeabfce73f6#使用第二步的方法查看集群信息,会发现新版本的6382节点已经升级成功#接下来就是重复下一个从节点,直到所有的从节点都升级完成2、主从节点切换
注:必须所有从节点都升级完成之后,才能执行主从节点切换
#登录每一个从节点6380、6382、6384,此时的从节点已经全部升级完成
#xxx是密码 192.168.0.1是6382节点所在的服务器IP
/tools/redis/bin/redis-cli -a xxx -h 192.168.0.1 -p 6382 -c#执行主从切换
192.168.0.1:6382> cluster failover
OK/tools/redis/bin/redis-cli -a xxx -h 192.168.0.1 -p 6380 -c
192.168.0.1:6380> cluster failover
OK/tools/redis/bin/redis-cli -a xxx -h 192.168.0.1 -p 6384 -c
192.168.0.1:6384> cluster failover
OK#查看集群信息 从节点6380、6382、6384变为了主节点
192.168.0.1:6384> cluster nodes
d0d61ee0e4009e2b6c365e0893b8a8cf1b747220 192.168.0.1:6381@16381 slave 2aac9b736323aa77e09b16f86935ddb14b5d136b 0 1761131579000 10 connected
9e54dcaa6f02e7d541acf617a9b01011b28336ae 192.168.0.1:6383@16383 slave c656c7161bd3141608d80354b12deec003e2a051 0 1761131579527 9 connected
815ac9c8dd372ede1482659fce7db45aba6e283a 192.168.0.1:6382@16382 master - 0 1761131579000 8 connected 0-5460
c656c7161bd3141608d80354b12deec003e2a051 192.168.0.1:6380@16380 master - 0 1761131580033 9 connected 5461-10922
50068caa0f09e020e77ba22c1bd08aeabfce73f6 192.168.0.1:6379@16379 slave 815ac9c8dd372ede1482659fce7db45aba6e283a 0 1761131579022 8 connected
2aac9b736323aa77e09b16f86935ddb14b5d136b 192.168.0.1:6384@16384 myself,master - 0 1761131428171 10 connected 10923-16383切换完成后,将剩下的从节点执行【升级从节点】步骤即可
