【MySQL从节点异常断连后的Slave_SQL_Running 处于Connecting的解决方案】

MySQL从节点异常断连后的Slave_SQL_Running 处于Connecting的解决方案

问题背景

MySQL 从节点在断连后重连时出现 "IO Connecting" 状态,Last_IO_Error 2061,说明 I/O 线程无法成功连接主库进行认证。这通常发生在 MySQL 8.0+ 主库 + 未启用 SSL 的复制连接场景中,具体抛错及日志信息如下:

问题原因

主库用户使用了 caching_sha2_password 插件(MySQL 8.0 默认)且从库尝试以非加密(明文)方式连接后被拒绝了,抛出 IO_Error 2061,当从库断连后重试仍使用旧的配置,导致连接失败,IO处在 "Connecting"中。

解决方案:从节点复制时启用 SSL

步骤1: 确认主库已启用 SSL,返回为YES,代表已启用,一般MySQL8.0默认开始SSL。

复制代码
 SHOW VARIABLES LIKE 'have_ssl';

如果主库没有启用SSL,可以开启SSL,配置如下,在my.cnf配置文件中增加如下语句,并重启MySQL实例。

复制代码
[mysqld]
ssl-ca=/path/to/ca.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem

步骤 2: 修改复制用户,强制使用 SSL。

复制代码
ALTER USER 'slave'@'%' IDENTIFIED BY 'StrongPass123!' REQUIRE SSL;


步骤 3: 在从库配置 CHANGE MASTER 启用 SSL,查看从节点连接slave_IO_connecting 未YES。

复制代码
STOP SLAVE;

CHANGE MASTER TO
  MASTER_HOST='主库IP',
  MASTER_USER='slave',
  MASTER_PASSWORD='密码',
  MASTER_SSL=1,
  MASTER_SSL_CA='/etc/mysql/certs/ca.pem',  //证书文件可选择性添加
  MASTER_LOG_FILE='mysql-bin.000006',
  MASTER_LOG_POS=649;

START SLAVE;
相关推荐
网安蟹佬霸14 分钟前
CTF Web方向解题全攻略:从信息收集到getshell(附实战payload与脚本)
android·前端·网络·安全·web安全·网络安全·网安
今天AI了吗31 分钟前
从聊天到委派:AI Agent 如何推进长期任务
数据库·人工智能·python·sql·rust
又见情义1 小时前
Android 13 Settings 设置界面选项裁剪(RK3568平台)
android
人才瘾大2 小时前
Android录屏内部音频录制完全指南:原理、限制与方案选型
android·音视频
网安蟹佬霸2 小时前
Webshell免杀与检测实战:从一句话木马到加密流量
android·安全·web安全·网络安全·黑客·网安·渗透测试·
01_ice3 小时前
MySQL事务
数据库·mysql
名字还没想好☜3 小时前
Go 的 database/sql 连接池实战:SetMaxOpenConns 怎么配、连接泄漏怎么查
数据库·sql·golang·go·数据库连接池
Csvn4 小时前
📊 SQL 入门 Day 20:锁机制
后端·sql
旺旺仙贝呦4 小时前
MySQL__MongoDB__Redis 入门
redis·mysql·mongodb
阿巴斯甜5 小时前
Android SharedMemory 详细使用
android