我已经安装了redis cluster 3.0.0。但想将其升级到 3.0.7。有人可以告诉我执行此操作的步骤吗?
我不想丢失任何数据。也不希望有任何停机时间。
请您参考如下方法:
我从 2.9.101 升级到 3.0 版本时执行的步骤。我希望它也适用于升级到 3.0.7。
- 从源代码编译 3.0.7 并启动几个启用集群的实例。
- 让3.0.7实例复制3.0.0实例作为slave
- 连接到每个 3.0.7 实例并执行手动 failover , 然后 3.0.0 主人将在几秒钟后成为奴隶。
- 等待您的应用程序连接到新的主人;还要检查配置文件,并根据需要修改新主控的条目
- 移除那些奴隶
更新:Docker 方法
因为它可能无法在进程仍然存在时替换二进制可执行文件,您可以通过在 docker 中运行一些 Redis 来做到这一点.
首先你应该在你的机器上安装 docker 并拉取 Redis 镜像,或者拉取一个基本的操作系统镜像并在其中手动构建 Redis,无论什么
根据这张图片,你应该
- 复制你当前的
redis.conf
到里面 - 确保
dir
存在于镜像中(cluster-config-file
对所有容器都可以相同,因为它们单独保存在自己的 fs 中) - 确保
logfile
的目录存在并且不与dir
相同(稍后我们会将此目录映射到主机) - 保留
port
logfile
任何你喜欢的东西,因为它们是在容器启动时指定的 - 将图像提交为
redis-3.0.7
现在启动一个容器化的 Redis。我想你的 logfile
位于 /var/log/redis/
,这个 Redis 绑定(bind) :8000
,你在图片中的配置文件是/etc/redis/redis.conf
docker run -d --net=host -v /var/log/redis:/var/log/redis \
-p 8000:8000 -t redis-3.0.7 \
/usr/bin/redis-server /etc/redis/redis.conf \
--port 8000 \
--logfile /var/log/redis/redis_8000.log
现在你有一个 Redis 3.0.7 实例,并准备好完成上一部分的其余步骤。