redis集群由伪6节点组成(3台服务器,3主3从)迁移到单节点3主redis
正常情况下我们可以使用redis热迁移工具像RedisShake ,但这边集群环境配置有点问题工具无法完成迁移,所以才有了本次迁移记录
服务器列表如下:
主机 | IP | 下线/保留 |
---|---|---|
5gxx-2-29 | 192.168.64.29 | 保留,部署3主单机redis |
5gxx-2-30 | 192.168.64.30 | 下线 |
5gxx-2-31 | 192.168.64.31 | 下线 |
部署新Redis集群
创建3 单主redis配置文件
这里appendonly no暂时关闭aof,因为3节点的集群配置有问题导致主从、主主节点共用同一个aof文件,直接同步aof数据会有问题(3个槽的数据中有2个槽的数据是一样的)
1 | [mms@5gxx-2-29 redis]$ vim conf/redis_6001.conf |
配置supervisor启动文件
1 | [mms@5gxx-2-29 redis]$ sudo vim /etc/supervisord.d/redis_6001.ini |
创建Redis Cluster
1 | supervisor更新redis启动配置,启动redis服务 |
到这里redis集群就创建好了
迁移Redis 数据
在旧redis集群上查看数据槽和节点的对应关系
1 | lots192.168.64.31:7005> cluster slots |
看情况是否修改数据存储路径或文件名,我这边一台服务器上的2个redis都用的同一个dbfilename路径和名称所以直接导出来的数据会有问题
1 | > config set dir /data |
顺便在3个主节点上保存数据
1 | bgsave |
在单redis节点上数据槽和节点的对应关系
1 | 192.168.64.29:6001> cluster slots |
分别将3个数据槽的aof文件分别拷贝到对应数据库槽redis 的data目录下,例如将数据槽0-5460的数据拷贝到0-5460槽的redis data下
重启3个redis服务
1 | [mms@5gxx-2-29 redis]# supervisorctl |
查看redis 3个节点的数据量
1 | dbsize |
redis 中启动aof,确保存储了aof日志
1 | 192.168.223.128:6003> config set appendonly yes |
redis 修改conf配置文件,启动aof
1 | [mms@5gxx-2-29 redis]$ sudo vim conf/redis_6001.conf |
再重启redis服务
1 | restart redis_6001 redis_6002 redis_6003 |