【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;
相关推荐
踏雪羽翼5 小时前
android TextView实现文字字符不同方向显示
android·自定义view·textview方向·文字方向·textview文字显示方向·文字旋转·textview文字旋转
lxysbly5 小时前
安卓玩MRP冒泡游戏:模拟器下载与使用方法
android·游戏
luoluoal6 小时前
基于python的小区监控图像拼接系统(源码+文档)
python·mysql·django·毕业设计·源码
susu10830189116 小时前
使用navicat创建事件event报错You have an error in your SQL syntax
数据库·sql
oulaqiao6 小时前
幂等性——网络抖动重复支付的解决方法
sql·web app
stella·7 小时前
mysql的时区问题
数据库·mysql·timezone·时区
夏沫琅琊7 小时前
Android 各类日志全面解析(含特点、分析方法、实战案例)
android
程序员JerrySUN8 小时前
OP-TEE + YOLOv8:从“加密权重”到“内存中解密并推理”的完整实战记录
android·java·开发语言·redis·yolo·架构
TeleostNaCl9 小时前
Android | 启用 TextView 跑马灯效果的方法
android·经验分享·android runtime
残雪飞扬9 小时前
MySQL 8.0安装
数据库·mysql