1 迁移准备
1.1 旧集群
1.2 新集群
2 迁移步骤
3 迁移过程
3.1 新集群建立三主三从
echo "yes" | redis-cli -a "null" --cluster create
xx.xxx.101.20:7001 xx.xxx.101.21:7001 xx.xxx.101.22:7001
xx.xxx.101.23:7001 xx.xxx.101.24:7001 xx.xxx.101.58:7001 --cluster-replicas 1
检查集群信息:
redis-cli -a "null" --cluster check xx.xxx.101.20:7001
redis-cli -a "null" -c -h xx.xxx.101.20 -p 7001 cluster nodes
redis-cli -a "null" -c -h xx.xxx.101.20 -p 7001 cluster info
3.2 停止新集群初始化的三主三从节点
停止 redis6 集群初始化的 6 个节点服务。
3.3 迁移旧集群数据到新三主
注:foot 管理员协助操作。
1)拷贝旧集群 xx.xxx.101.50(Master1)主机上/data/foot/paas-xj/data/redis/data 目录下 RDB 和 AOF 数据文件到 新集群 xx.xxx.101.20(Master1)主机上/data/foot/paas-xj/data/redis/data 目录下。
2)拷贝旧集群 xx.xxx.101.51(Master2)主机上/data/foot/paas-xj/data/redis/data 目录下 RDB 和 AOF 数据文件到 新集群 xx.xxx.101.21(Master2)主机上/data/foot/paas-xj/data/redis/data 目录下。
3)拷贝旧集群 xx.xxx.101.49(Master3)主机上/data/foot/paas-xj/data/redis/data 目录下 RDB 和 AOF 数据文件到 新集群 xx.xxx.101.22(Master3)主机上/data/foot/paas-xj/data/redis/data 目录下。
3.4 启动新集群 6 节点并检查集群状态
依次启动 redis 新集群三主三从节点服务。
并检查集群状态:
redis-cli -a "null" --cluster check xx.xxx.101.20:7001
redis-cli -a "null" -c -h xx.xxx.101.20 -p 7001 cluster nodes
redis-cli -a "null" -c -h xx.xxx.101.20 -p 7001 cluster info
3.5 添加 Master4 主节点到集群
redis-cli --cluster add-node xx.xxx.101.59:7001 xx.xxx.101.20:7001
加入集群后查看 Master4 主节点 id 信息并记录下来(master4xxx):
redis-cli -h xx.xxx.101.59 -p 7001 cluster nodes | grep myself
3.6 为 Master4 主节点添加 Slave4 从节点
redis-cli --cluster add-node xx.xxx.101.64:7001 xx.xxx.101.20:7001 --cluster-slave --cluster-master-id master4xxx
3.7 添加 Master5 主节点到集群
redis-cli --cluster add-node xx.xxx.101.62:7001 xx.xxx.101.20:7001
加入集群后查看 Master4 主节点 id 信息并记录下来(master5xxx):
redis-cli -h xx.xxx.101.62 -p 7001 cluster nodes | grep myself
3.8 为 Master5 主节点添加 Slave5 从节点
redis-cli --cluster add-node xx.xxx.101.67:7001 xx.xxx.101.20:7001 --cluster-slave --cluster-master-id master5xxx
3.9 添加 Master6 主节点到集群
redis-cli --cluster add-node xx.xxx.101.63:7001 xx.xxx.101.20:7001
加入集群后查看 Master4 主节点 id 信息并记录下来(master6xxx):
redis-cli -h xx.xxx.101.63 -p 7001 cluster nodes | grep myself
3.10 为 Master6 主节点添加 Slave6 从节点
redis-cli --cluster add-node xx.xxx.101.69:7001 xx.xxx.101.20:7001 --cluster-slave --cluster-master-id master6xxx
3.11 从 Master1 分配一半数据槽 solt 至 Master4
redis-cli --cluster reshard xx.xxx.101.20:7001
--cluster-from 5ac8a06ba4bd60958f82464f50965fc99cec773e
--cluster-to master4xxx --cluster-slots 2730 --cluster-yes
3.12 从 Master2 分配一半数据槽 solt 至 Master5
redis-cli --cluster reshard xx.xxx.101.20:7001
--cluster-from 9588b47df1100c571cb3df1049f63ba770a51063
--cluster-to master5xxx --cluster-slots 2730 --cluster-yes
3.13 从 Master3 分配一半数据槽 solt 至 Master6
redis-cli --cluster reshard xx.xxx.101.20:7001 --cluster-from bbc3d92f0358772fb4957ffa29571d215597ad7a --cluster-to master6xxx --cluster-slots 2730 --cluster-yes
执行完如上步骤完成数据库迁移。
3.14 迁移后检查集群状态
redis-cli -a "null" --cluster check xx.xxx.101.20:7001
redis-cli -a "null" -c -h xx.xxx.101.20 -p 7001 cluster nodes
redis-cli -a "null" -c -h xx.xxx.101.20 -p 7001 cluster info
3.15 业务测试,模拟秒杀活动压测
1)业务系统验证
2)业务系统压测(分两种情况进行业务压测,业务压测并发数据)
测试一:rdb 和 ao 开启状态。
测试二:关闭 rdb 快照备份,只开启 aof。
3.16 通过压测结果设置 redis 持久化机制
根据两种压测情况观察 redis 读写性能:
观察 redis 集群节点日志(持久化数据大小,是否报错信息)。
观察 redis 节点 tps 指标。
维护侧与业务侧沟通好压测结果,确定好 redis 持久化后策略, 确定好后配置好 redis 持久还机制。
3.17 迁移及测试结果
根据迁移及测试情况做好记录,业务验证通过,则表示迁移 ok,反馈结果。