Dumpling备份MySQL5.7报错SSL失败

【TiDB 使用环境】生产环境 /测试/ Poc
【TiDB 版本】v8.5.1
【操作系统】
【部署方式】云上部署(什么云)/机器部署(什么机器配置、什么硬盘)
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】

备份源头是mysql5.7并且启用了ssl

使用Dumpling报错如下(TIUP安装的Dumpling)

如果不修改备份源头MYSQL的SSL配置,Dumpling有参数可以禁用SSL吗?目前没找到

https://docs.pingcap.com/zh/tidb/stable/dumpling-overview/#dumpling-主要选项表

–ca 用于 TLS 连接的 certificate authority 文件的地址
–cert 用于 TLS 连接的 client certificate 文件的地址
–key 用于 TLS 连接的 client private key 文件的地址

你得把ssl的证书带上

刚才重试了也还是不行啊,同样的报错

类似的问题看下。他那个排查下来是dumpling备份msyql5.7兼容性有问题。

1 个赞

我主要是想得到官方建议的解决方案 :joy:

应该不是这个问题,这个问题是在其他程序封装 dumpling 才出现的问题,

可能是以下的问题导致的:

  1. 组件更新超时错误
    Checking updates for component dumpling... Timedout (after 2s)
    表示在尝试检查 dumpling 组件的更新时,网络请求超时(2秒内未收到响应)。
    可能原因:网络不稳定、防火墙/代理限制访问更新服务器,或服务器端暂时不可用。

  2. TLS 握手失败导致创建转储程序失败
    create dumper failed: sql: SELECT version(); remote error: tls: handshake failure
    此错误发生在尝试连接数据库时,TLS(加密通信协议)握手失败。
    可能原因

    • 数据库服务器未启用 SSL/TLS 加密,但客户端强制要求加密连接。
    • 数据库的 SSL 证书配置错误(如证书过期、域名不匹配、自签名证书未被客户端信任)。
    • 客户端与服务端的 TLS 协议版本不兼容(如服务器仅支持 TLS 1.2,而客户端版本过低)。

建议排查步骤

  1. 检查网络连通性(如 telnet 10.0.8.44 66666)。
  2. 确认数据库服务是否支持并正确配置 SSL/TLS。
  3. 尝试在连接参数中禁用 SSL(如添加 --ssl-mode=DISABLED,需根据工具语法调整)。
  4. 校验客户端和服务端的系统时间是否同步。
  5. 增加超时时间(如 --timeout 10s)避免短暂网络波动。

这个帖子,我看了下,感觉结论是靠谱的。

image

这个错误,要么是证书有问题,要么就是tls一些低版本协议,在高版本的dumpling下不支持了。

除了这2个方向,我想不出有其他可能性,会导致握手直接失败。

所以应该考虑安装一个低版本dumpling,设置好证书再试试。

tiup install dumpling:v5.1.0

类似上面这样,安装一个5.1.0版本的dumpling试试看。

是 golang 1.22 废弃了 TLS 1.0 的支持,而一些老的 MySQL 5.7 的镜像使用的是比较早的 Debian 版本,上面的 TLS 版本很低。
解决办法要么是重新用 1.21 手动编译一下 dumpling,要么就是用老版本的 dumpling,dumpling 是没有类似 --ssl-mode=DISABLED 参数的

2 个赞

用v7.5的dumpling应该就行,或更早的也行

1 个赞

考虑其它版本的dumpling尝试一下

关闭SSL 可以用吗临时skip_ssh

不能用socket连吗?