MySQL主从复制因SSL证书过期中断的处理方法

作者:技术拾光

时间:2026-08-12

浏览:194

在主从复制场景中,SSL 证书一旦过期,往往是导致复制中断的高频原因。常见表现也比较典型:IO 线程持续停留在 Connecting,或者直接报出 certificate verify failed。此时需要使用 openssl 检查 ca.pem 等证书的 Not After 到期时间,并逐项确认

文章目录

在主从复制场景中,SSL 证书一旦过期,往往是导致复制中断的高频原因。常见表现也比较典型:IO 线程持续停留在 Connecting,或者直接报出 certificate verify failed。此时需要使用 openssl 检查 ca.pem 等证书的 Not After 到期时间,并逐项确认书路径、文件权限、subjectAltName 以及 TLS 重载等配置是否正确。

MySQL主从复制因SSL证书过期中断的处理方法

如果主从复制因 SSL 证书过期而中断,问题通常出在主库或从库正在使用的证书文件本身,而不是配置写错或网络不通,也就是 ca.pem 或 server-cert.pem 已经失效过期。MySQL 一般不会直接提示“证书过期”,更常见的现象是卡在 IO 线程建立连接阶段,通常会看到 Slave_IO_Running: Connecting,或者直接报出 SSL connection error: certificate verify failed。

如何确认是证书过期而不是其他原因

先不要修改配置,也不要反复重试连接,应先登录主库或从库,确认启用 SSL 的一侧证书有效期:

  • 执行 openssl x509 -in /var/lib/mysql/ca.pem -text -noout | grep -E "(Not Before|Not After)",如果 Not After 早于 2026-07-02,则说明证书已经过期
  • 主库和从库可能使用不同证书:主库查看 ssl_ca 和 ssl_cert 所指向的路径;从库查看 MASTER_SSL_CA 和 MASTER_SSL_CERT 参数值
  • MySQL 8.0.29 及以上版本可执行 SHOW VARIABLES LIKE 'ssl_cert_expire_date';,如果返回为空或显示旧日期,也说明证书可能已失效
  • 云数据库如 RDS、AWS、腾讯云通常无法直接访问证书文件,可在控制台“SSL 设置”页面查看 ValidTill 字段

为什么更换新证书后从库仍然无法连接主库

常见问题通常不在证书内容本身,而是在加载过程中被静默跳过:

  • ssl-ca 必须配置在 [mysqld] 段中(主库),或写入从库的 CHANGE MASTER TO 语句中;如果放在 [client] 段则不会生效
  • 证书路径必须使用绝对路径,例如 /etc/mysql/ssl/ca.pem;./ca.pem 或 ~/ssl/ca.pem 这类写法无效
  • 文件权限应为 600,属主应为 mysql 用户;如果权限为 644 或属主为 root,MySQL 启动时可能不会加载证书,此时 have_ssl 会显示为 DISABLED
  • 新证书必须包含 subjectAltName:如果使用 localhost 连接,则需要添加 DNS:localhost;如果使用 10.0.1.5 连接,则需要添加 IP:10.0.1.5;否则在 MySQL 8.0 及以上版本中可能被直接忽略
  • 自签名证书如果缺少 keyUsage=digitalSignature,keyEncipherment 和 extendedKeyUsage=serverAuth,也可能导致握手失败

更新证书后必须执行的关键操作

仅替换证书文件还不够,MySQL 进程和客户端上下文都需要刷新:

  • 主库执行 ALTER INSTANCE RELOAD TLS;(适用于 MySQL 5.7.36+ / 8.0.16+),通常比重启 mysqld 更快;旧版本则只能执行 service mysql restart
  • 从库需要重新执行 CHANGE MASTER TO,显式传入新的 MASTER_SSL_CA 路径,不能依赖旧配置缓存
  • Java 应用通常需要重启 JVM,因为 truststore 会在启动时加载;如果 Python 代码中硬编码了 ssl_ca 路径,则需要同步修改代码或环境变量
  • 命令行测试建议使用 mysql --ssl-mode=VERIFY_CA --ssl-ca=/path/to/new-ca.pem -u repl -h master_ip -p,避免误用系统默认 CA 路径

最容易被忽略的通常是证书文件权限和 subjectAltName 的覆盖范围。即使证书有效期足够长,只要权限不正确,或缺少 IP:127.0.0.1 等必要项,MySQL 也可能将其视为无效,最终表现为静默降级为非 SSL 连接,或者直接连接失败。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章