You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python连接MySQL集群无响应无报错问题求助

Python连接MySQL集群无响应排查求助

我用Python连接MySQL集群时,程序既不报错也无任何响应,一直处于等待状态。

我的示例Python代码如下:

import mysql.connector
from mysql.connector import errorcode

try:
  cnx = mysql.connector.connect(user='root',
                                database='database_name',port=1186)
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cnx.close()

运行后界面一直处于等待状态(界面仅显示光标闪烁,无任何输出信息)。

我的集群部署在同一VM中,节点配置为:

  • 1 management node
  • 1 datanode
  • 1 mysql node
  • 10 api nodes

排查解决方向

  • 补全连接参数:代码未指定host,默认使用localhost。若MySQL节点未监听127.0.0.1,或集群需指定特定节点地址,会导致连接阻塞。在connect方法中添加host='集群节点IP'后重试。
  • 验证端口连通性:在VM内执行telnet 节点IP 1186或nc -zv 节点IP 1186,确认端口未被防火墙拦截,且MySQL服务正在监听该端口。
  • 查看MySQL节点日志:登录MySQL节点,检查错误日志(通常路径为/var/log/mysql/error.log),排查是否存在连接请求被阻塞的记录,如权限限制、连接数耗尽、集群内部同步异常等。
  • 检查集群运行状态:通过集群管理工具(如MySQL Cluster的ndb_mgm)查看所有节点状态,确保datanode、mysql node、api nodes均正常运行,无故障节点。
  • 添加连接超时限制:在connect方法中加入connection_timeout=10(单位:秒),强制连接超时,避免无限等待,同时可获取超时错误信息辅助定位问题。
  • 更换驱动测试:尝试使用pymysql驱动替代mysql.connector,排查是否为驱动兼容性问题。示例代码:
import pymysql
try:
    cnx = pymysql.connect(host='节点IP', user='root', database='database_name', port=1186, connect_timeout=10)
    cnx.close()
except Exception as e:
    print(e)

内容的提问来源于stack exchange,提问作者Rajoli Hemanth Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:01:06