首页IT科技docker部署mysql主从复制(docker高级篇第二章-分布式存储之实战案例:主从容错切换迁移案例)

docker部署mysql主从复制(docker高级篇第二章-分布式存储之实战案例:主从容错切换迁移案例)

时间2025-06-15 20:00:15分类IT科技浏览6626
导读:在上一篇,学会了3主3从的Redis集群搭建。那么接下来,我们就来学习Redis集群主从容错切换迁移案例...

在上一篇            ,学会了3主3从的Redis集群搭建               。那么接下来                     ,我们就来学习Redis集群主从容错切换迁移案例

本次案例从模拟两个场景

1:数据读写存储

a:一个新key数据来了      ,是否会按照预设的进入槽中?集群是否生效

2:容错切换迁移

a:如果master 6381挂了                  。那么对应的从6384是否会补位?

下面就开始实操      。

数据读写存储操作案例

步骤:

1:启动6台机器构成的集群并通过exec进入

2:对6381新增两个key

查看当前6381机器上是否存在缓存key:

发现没有            。

好         ,那么我们就来set k1 v1.

发现错误了                   。错误信息:

(error) MOVED 12706 192.168.50.128:6383

这不对啊         。set k v是最简单的命令        。这个命令都不支持                    。那么要集群有什么用?

我们来分析原因:

我们现在使用的是集群的                     ,是有hash槽的            。如下图:

我们可以看到          ,master 1 只能管理5461个槽    。master2只能管理5462个                     。master3也是管理5461个槽               。

通过之前的学习      ,我们也知道                    ,集群的时候              ,是通过把key通过hash值   ,算出的hash值找到对应具体需要存放在哪个master上的。

通过这些理论知识                   ,我们知道                  ,可能我们set的k1这个key经过hash之后,不在当前master1所管理的0~5460共5461个hash槽中                  。所以会报错                  。

那根据这些               ,我们试试存放其他的呢?

我们可以看到                     ,set k2和k3的时候可以的   。但是k1和k4是不行的               。

我们看看k1和k4的错误:MOVED 12706和MOOVED 8455

感觉这两个数字应该是hash槽                  。我们可以看到这两个值都大于master1所能管理的最大槽的值      。master1最大槽值为:5460.因为我们使用的是redis-clie -p 6381 这种直连的方式连接的   ,所以master1存放不了            。

3:防止路由 失效            ,加参数-c 并新增加两个key

如果是集群模式下                     ,我们需要添加一个参数-c                   。来防止路由失效

我们重新set k1 k4试试         。

可以看到      ,key路由到对应的master上了        。

4:查看集群信息

命令公式:

redis-cli --cluster check ip:断开

容错切换迁移

假设master1(6381)宕机了         ,那么对应的slave4(6384)是否会正常补位                    。

架构图:

步骤:

1:maser1 6381和从机6384切换                     ,先停止主机6381

使用docker stop 容器id/或者容器names

停止后          ,等一会            。因为集群之间有心跳检查    。所以等待一会                     。

2:再次查看集群信息

因为6381已经宕机了               。那么我们进入6382中      ,注意以集群的方式进入。需要加参数-c                  。

查看进群情况;

cluster nodes

注意看:我们发现集群还是6个                  。但是6481这特master,是fail了   。6381对应的从及6384现在成了master.说明                    ,从机补位了               。

这就实现了故障容错切换迁移                  。

get下k1 k2 k3 k4看看情况:

可以正常获取

3:先还原之前的3主3从

4:查看集群状态

我们可以看到              ,虽然6381重新启动了      。但是6381却成了6384的从节点了            。

下一篇预告:下一篇咱们将实操:主从扩容案例

大家好,我是凯哥Java(kaigejava)   ,乐于分享                   ,每日更新技术文章                  ,欢迎大家关注“凯哥Java               ”,及时了解更多                   。让我们一起学Java         。也欢迎大家有事没事就来和凯哥聊聊~~~

结束语

如操作有问题欢迎去 我的个人博客(www.kaigejava.com)留言或者 微信公众号(凯哥Java)留言交流哦        。

本系列教程直通车

直通车               ,本系列教程已发布文章                     ,快速到达,《Docker学习系列》教程已经发布的内容如下:

【图文教程】Windows11下安装Docker Desktop

【填坑】在windows系统下安装Docker Desktop后迁移镜像位置

【Docker学习系列】Docker学习1-docker安装

【Docker学习系列】Docker学习2-docker设置镜像加速器

【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?

【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令

【Docker学习系列】Docker学习系列3:常用命令之容器命令

【Docker学习系列】Docker学习4-常用命令之重要的容器命令

【Docker教程系列】Docker学习5-Docker镜像理解

【Docker教程系列】Docker学习6-Docker镜像commit操作案例

【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云

【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?

「Docker学习系列教程」9-Docker容器数据卷介绍

「Docker学习系列教程」10-Docker容器数据卷案例

Docker学习11-Docker常规方式安装软件

「Docker学习系列教程」基础篇小总结及高级篇预告

docker高级篇1-dockeran安装mysql主从复制

docker高级篇2-分布式存储之三种算法

docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置

【Docker学习教程系列汇总】笔记及遇到问题解决文章

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
cka模拟试题(CKA考试题目常用命令-练习这个就完事) 诏安招聘网(诏安招聘网最新招聘本地工作人员)