Error connecting to master ‘slave@192.168.200.128:3307‘ - retry-time: 30 retries: 1

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Error connecting to master ‘slave@192.168.200.128:3307‘ - retry-time: 30 retries: 1

前言


很开心这个问题今天终于被我解决掉了,一直从2022年暑假中期持续到现在每天都在想着这个事情,问题出发点还得从暑假学Dcoker说起,在学习Docker基础的时候很顺利用了不到一周时间,当用Docker搭建一些基础的服务器环境时遇到了麻烦,期间抽出过一天专门解决这个问题但是没有解决掉,对自己很是打击。说到底是一个小问题说到底也是个大问题,可以体现出自己的基础很不牢固。今天我将细细说一下为什么会有这种问题,刚开始为什么解决不掉,是对自己的成长的一次记录,也希望在大家遇到困难的时候能够帮助到大家。


9b9c9f9b25da47b0b25a4a9a34751ce9.jpg

问题描述


b78971db13be465a9b9ca5a0bfb6732f.png


测试自己遇到的是哪一种类型


用户权限不够


主数据库中创建并授权的用户应该可以在任何主机访问主数据库,或者说在指定节点可以访问主数据库,可以先在另一台主机上登录授权的账号,检测能不能登上以及权限是不是正常。我这里用的是SQLyog(我的账号授权是正常的)


3d719911c3b54c87ac5b489da865a08d.png


看错误状态码


在问候了百度很多次,自己的问题依然没有得到解决时可以看看自己的错误状态码,因为不同的错误状态码可能对应的报错信息一样(难以辨别),但解决方法千差万别,错误状态码在下图所示位置,根据自己的状态码检索解决方案。


bad706fab47b48af95934240643cf5e5.png


查看错误日志


这种方案应该是最为稳妥的,可以从错误日志中清楚地发现是什么错误。博主能力有限没能将数据库错误日志玩明白,只是进行了一些探索,现在将探索进度给大家。


错误日志存放的位置

网上有一部分解释是说放在了data目录下的.err文件

有的说是在var/log/mysqld.log内

我在docker中查看半天没有找到。。。。。。如果哪个大佬知道在哪可以给我分享一下


现在我将如何操作容器内部数据文件的指令分享给大家大家自己探索

查看有哪些容器


docker ps


根据容器id查看该容器根目录下有哪些目录(查看更多只用拼接目录路径即可)


docker exec 容器id ls -a /


查看文件详细信息


docker exec 容器id ls -al /


查看文件内容

docker exec 容器id cat 路径/文件名
• 1


想要拷贝某个文件目录或者文件,用下面的命令


docker cp 容器id:/要拷贝的文件目录  /目的地
• 1


解决方案


权限不够,重新授权


--授权操作
set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'slave'@'%' identified by '123456';
--刷新权限
flush privileges;


解释


set global validate_password_policy=0; 这个命令将密码设置为最低级别的,Mysql的密码级别有三种,0级别,1级别,2级别 0级别允许是纯数字,1级别必须包含数字和字母,2级别必须数字,大小写字母都包含。


set global validate_password_length=1;密码长度最短可为1


grant replication slave on . to ‘slave’@‘%’ identified by ‘123456’;赋予用户主从复制权限,在任何主机均可访问,用户名为slave密码为123456


错误状态码2003,关闭主机防火墙


用户赋予权限没有错误的话大概率是这里出问题了,看一下自己的报错码是不是2003,如果是的话可以按照这个方法解决slave_IO_Running: Connecting and Last_IO_Errno: 2003


解决方案:


service iptables stop


如果执行之后报错如下图请继续往下看


452887fe14894fceaa7121e400b147ee.png


原因可能是:


centos 7.0以下基于iptables

CentOS 7.0默认使用的是firewall作为防火墙(须执行下面的语句1,语句2根据自己的需求执行)

语句1、直接关闭防火墙


systemctl stop firewalld.service


语句2、禁止firewall开机启动


systemctl disable firewalld.service



通过以上两个方法大概可以解决80%以上的该类型问题了。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
负载均衡 Java 应用服务中间件
Client not connected, current status:STARTING
Client not connected, current status:STARTING
547 1
|
6月前
|
测试技术
Could not proxy command to the remote server. Original error: timeout of 240000ms exceeded 的解决办法
Could not proxy command to the remote server. Original error: timeout of 240000ms exceeded 的解决办法
235 0
【WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, st】
【WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, st】
1413 0
|
网络协议 Java
filebeat:Failed to publish events caused by: write tcp 5044: write: connection reset by peer
filebeat:Failed to publish events caused by: write tcp 5044: write: connection reset by peer
656 0
filebeat:Failed to publish events caused by: write tcp 5044: write: connection reset by peer
|
缓存 网络协议 关系型数据库
从Host blocked报错学习max_connect_errors
1.案发现场-Host blocked 一个案例场景是大数据抽取job任务连接MySQL实例抽数,任务报错如下图所示:报错表示,host被锁是由于有大量的连接错误,如果要解锁就执行mysqladmin flush-hosts;知识点!!!线索:host被锁,大量连接错误证人提示线索:确认最近新加p.
1473 0
从Host blocked报错学习max_connect_errors
|
应用服务中间件 nginx
[error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
[error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
5073 0
|
网络协议 关系型数据库 PostgreSQL