关于“Slave_IO_Running: Connecting”的排查方法,已经有很多博客写得清清楚楚了(很多都是复制粘贴..真浪费时间),那么如果已有的常规排查方法都不能解决你的问题,而且你是在docker中部署主从集群的话,或许这篇文可以帮到你。

 

建议先看这个问题的常规的排查方法,如果解决不了你再回来看本文。

https://blog.csdn.net/mbytes/article/details/86711508

贴士:

  • 如果你是基于docker部署主从,而且是刚刚使用docker新手,那你就可能不知道挂载和数据卷这两个docker基础知识,这会影响你阅读本文解决问题,所以你需要另外查找资料学习了这两个知识点才能继续看本文。并且要把问题原因和分析部分看清楚理解了,糊里糊涂地解决是不会进步的。
  • 如果是没有使用docker的朋友,可以直接看解决方法。
  • 造成Slave_IO_Running: Connecting可能不只是一项问题,有可能是多个问题,譬如常规排查方法中的包含的网关或者账户权限,如果这两个都有问题的话都会出现Slave_IO_Running: Connecting的,详情原因可以使用docker logs -f [容器ID]看看日志怎么说。

 

原因一:PORT错误

问题原因和分析:

这个问题我也是偶然才发现的,我忽然想到既然在容器A只需容器B的ip就能直接登录容器B的mysql,那是不是意味着slaveIO线程是直接在同一局域网(docker虚拟网卡)内直连另一个容器的,所以不用输入端口。所以我就试了以下把

change master to master…master_port=[宿主机映射端口]...

改为

change master to master …master_port=3306...

然后重启slave。

 

解决方法:

slave 连接master端口改为3306,这时候重启slave就能解决问题了。如果还是不行,那就多半因为本文的原因二了,而且你可以使用docker logs -f [slave容器ID]看看日志报错是不是说UUID重复,如果是那就铁定就是原因二了。

 

原因二:UUID一致

问题原因和分析:

docker 的官方mysql镜像的 用户账号\数据库和表\日志文件…这些都在/var/lib/mysql/下,这是为mysql挂载数据卷的基础知识,但在用docker部署主从的时候你可能会像我一样直接将这些配置拷贝多份分配给各个实例作为其数据卷挂载,也正是因为如此才导致每份拷贝下的auto.cnf文件内容相同。

 

由101拷贝出的其它所有文件

auto.cnf文件位置,在mysql镜像中路径是/var/lib/mysql/,在宿主机中路径是 $docker数据卷默认/xxxx/_data/

我这里的是自定义挂载,所以图中的路径没有参考价值,继续往下看

 

关于这个auto.cnf,其实它的作用是供mysql实例读取server-id用的,而其内容是一串UUID,这串UUID是根据你在my.cnf为主从配置的server-id生成的。所以懂了吧,即使你在每个实例的my.cnf写了不一样的server-id,但实例读取的是auto-cnf里的,也mysql集群里都读了着同一串UUID。(虽然报错告诉你UUID一致,但本质上是因为集群每个节点都使用着同一个server-id)

 

解决方法:

直接删掉你各个实例的auto.cnf即可,删除后重启实例就可以解决这个UUID重复报错了。UUID重复问题排除后应该就能解决这个问题了。

[Docker-2]排查基于docker部署mysql主从过程中遇到“Slave_IO_Running: Connecting”这个疑难杂症的更多相关文章

  1. springboot多数据源配合docker部署mysql主从实现读写分离

    本篇主要有两部分: 1.使用docker部署mysql主从 实现主从复制 2.springboot项目多数据源配置,实现读写分离 一.使用docker部署mysql主从 实现主从复制 此次使用的是wi ...

  2. 【Docker】 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二)

    系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [D ...

  3. 在 CentOS7 上部署 MySQL 主从

    在 CentOS7 上部署 MySQL 主从 通过 SecureCRT 连接至 MySQL 主服务器: 找到 my.cnf 文件所在的目录: mysql --help | grep my.cnf 一般 ...

  4. 部署mysql主从同步

                                                 mysql-day06        部署mysql主从同步 案例拓扑 • 一主.一从 – 单向复制时,建议将 ...

  5. mysql安装过程中出现错误ERROR 1820 (HY000): You must SET PASSWORD before executing this statement解决

    mysql安装过程中出现错误ERROR 1820 (HY000): You must SET PASSWORD before executing this statement解决   最近新装好的my ...

  6. mysql 安装过程中的错误:my-template.ini could not be processed and written to XXX\my.ini.Error code-1

    安装mysql的过程中,在最后配置mysql时,提示错误:Configuration file tmeplate E:\编程\MySQL\my-template.ini could not be pr ...

  7. Mysql安装过程中出现apply security settings错误的解决方法

    在学习Mysql的过程中,首先要安装Mysql.然而在第一遍安装过程中难免会出现安装错误的时候,当卸载后第二次安装(或者第三次甚至更多次)的时候,往往在安装最后一步会出现apply security ...

  8. MySQL安装过程中对The error code is 2203的解决方案

    MySQL安装过程中对The error code is 2203的解决方案 1.问题描述 Windows系统安装MySQL遇到The error code is 2203.,具体描述如下 The i ...

  9. docker初识-docker安装、基于docker安装mysql及tomcat、基本命令

    一.docker是什么 用go语言开发,开源的应用容器引擎,容器性能开销极低 二.整体架构图 Docker 包括三个基本概念: 镜像(Image):Docker 镜像(Image),就相当于是一个 r ...

  10. 【docker构建】基于docker构建wordpress博客网站平台

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...

随机推荐

  1. Selenium中免登录的实现方法一option

    Selenium中免登录的实现方法一option 在selenium中有很多种可以实现网站的免登录,option就是其中的一种做法. 学员在VIP自动化课程中多有涉及. 1. 准备工作 打开一个网站( ...

  2. drf-drf请求、响应、基于GenericAPIView+5个视图扩展类

    1.反序列化类校验部分源码分析(了解) 1.当我们在视图类中生成一个序列化类对象ser,并且用ser.is_valid()是就会执行校验,校验通过返回True,不通过返回False.首先对象ser和序 ...

  3. springboot FilterRegistrationBean 拦截器的使用

    1.创建一个filter package com.ruoyi.weixin.user.interator; import com.ruoyi.common.utils.SecurityUtils; i ...

  4. 使用GetDIBits()获取Windows位图数据的标准用法,解决内存、堆栈报错问题

    获取图标的位图数据 分两次使用GetDIBits(),以便于正确设置缓存的大小 正确设置BITMAPINFO的大小,否则就会报堆栈溢出错误 ICONINFO info = { 0 }; GetIcon ...

  5. Python GDAL读取栅格数据并基于质量评估波段QA对指定数据加以筛选掩膜

      本文介绍基于Python语言中gdal模块,对遥感影像数据进行栅格读取与计算,同时基于QA波段对像元加以筛选.掩膜的操作.   本文所要实现的需求具体为:现有自行计算的全球叶面积指数(LAI).t ...

  6. playwright 实现高亮、is_visible 等源码修改

    一. 前言 高亮是什么? 在ui自动化中可以执行js来让某个页面元素高亮,比如背景颜色.字体颜色.边框颜色等发生改变,以此更加方便执行的时候点了哪一步操作.(如果有不清楚怎么实现的可以转到我的介绍se ...

  7. Python 生成多个空列表 空List 空数组方法

    生成多个空列表在统计一些参数时候,需要生成多个空List,此时直接办法是: a = [] b = [] c = [] d = [] ... 简洁办法为: a, b, c, d = [[] for i ...

  8. Prettier 在 Vite 项目下格式化报错

    Prettier 配置文件有很多种格式,有.json..js..yml等.因为 Vite 默认项目用的模块机制是 ES6,我的配置文件又正好是.js,且用的模块机制是 CommonJS.所以就是如上图 ...

  9. 《话糙理不糙》之如何在学习openfoam时避免坑蒙拐骗

    今天开启一个单独的系列 <话糙理不糙> - 谁要和你说学openfoamC++基础不重要,那就是放氨气,非常误人 这就好比没读过外国文献的人和你说不需要学专业英语一样 谜底就在谜面里,程序 ...

  10. Linux操作命令(七) 1.cut命令 2.paste命令 3.tr命令

    1.cut 命令 常用参数 参数 描述 -b 以字节为单位进行分割 -c 以字符为单位进行分割 -d 自定义分隔符,默认为制表符 -f 自定义字段 --complement 抽取整个文本行,除了那些由 ...