redis 集群在线迁移
更新:HHH   时间:2023-1-7


    迁移方案步骤

部署新节点redis 实例。(注意部署以后是单实例,不用创建成集群)
例如:
旧环境:
192.168.3.5:7000 M
192.168.3.5:7001 M
192.168.3.5:7002 M
192.168.3.5:7003 S
192.168.3.5:7004 S
192.168.3.5:7005 S

新环境:
192.168.3.6:7000 M
192.168.3.6:7001 M
192.168.3.6:7002 M
192.168.3.6:7003 S
192.168.3.6:7004 S
192.168.3.6:7005 S

将新节点redis 添加到老集群中。(添加master 节点)
redis-trib.rb add-node 192.168.3.6:7000 192.168.3.5:7000
redis-trib.rb add-node 192.168.3.6:7001 192.168.3.5:7000
redis-trib.rb add-node 192.168.3.6:7002 192.168.3.5:7000
将新节点redis 添加到老集群中。(添加slave 节点)
redis-trib.rb add-node --slave 192.168.3.6:7003 192.168.3.6:7000
redis-trib.rb add-node --slave 192.168.3.6:7004 192.168.3.6:7001
redis-trib.rb add-node --slave 192.168.3.6:7005 192.168.3.6:7002

检查集群主从节点信息
redis-cli -p 7000 -a 'password' cluster nodes
检查集群状态()是否为ok
redis-cli -p 7000 -a 'password' cluster nodes
查看redis 集群master 节点
redis-cli -p 7000 -a 'password' cluster nodes | grep master
查看集群信息
./redis-trib.rb info 192.168.3.5:7000
集群进行迁移
./redis-trib.rb reshard 192.168.3.5:7000
备注:将所有slot迁移至一个新的集群master 节点。
输入:all
输入slot: 16384
迁移至node_id: 614272e21df1cbbcda117f277ff7baa075b3d15e (迁移的新节点id)
将槽位均匀分片给新的剩余master 节点
./redis-trib.rb reshard 192.168.3.5:7000
./redis-trib.rb reshard 192.168.3.5:7001
./redis-trib.rb reshard 192.168.3.5:7002
检查节点迁移是否正常
/redis-trib.rb echek 192.168.3.5:7000

删除老节点信息(先删除从节点,然后再删除主节点)
删除从节点
/redis-trib.rb del-node 192.168.3.5:7000 3c0bb15b23407f7eb6f8c5a6a2a4c9ffb7065098
/redis-trib.rb del-node 192.168.3.5:7001 32afb3fec4ecad4bd33573a45754616324a9311b
/redis-trib.rb del-node 192.168.3.5:7002 5f2018a5a56f3e4cfc76df566e721ca7ace8bd83
删除主节点(同上)
注意:del-node 后 老环境redis 进程shutdown,集群失效!!!

检查集群可用性,以及数据完整性
/redis-trib.rb check 192.168.3.5:7000
/redis-trib.rb info 192.168.3.5:7000
redis-cli -p 7000 -a 'password' cluster nodes
redis-cli -p 7000 -a 'password' cluster info

亲测好用!!!!!

返回数据库教程...