Skip to content
MySQL 事务、锁与高可用 · 第 3 篇 / 共 6 篇
领域数据与中间件
专题MySQL 专题
当前序列MySQL 事务、锁与高可用
阅读位置第 3 篇 / 共 6 篇当前专题第 2 个序列 / 共 7 个序列

MySQL 常见连接与包大小错误排查:max_allowed_packet 和 Host is blocked

MySQL 日常使用里,有些错误虽然不复杂,但一旦碰到就会很耽误时间。原始笔记里提到的两个问题都很典型:

  • Packet for query is too large
  • Host xxx is blocked because of many connection errors

这篇文章把它们整理成一个更适合排查的清单。

一、max_allowed_packet 是什么

MySQL 在处理请求时,会限制单次通信包的大小。

如果你传输的数据太大,比如:

  • 大文本
  • 大 JSON
  • 大批量 SQL
  • 大字段写入

就可能触发类似错误:

text
Packet for query is too large

二、怎么查看当前限制

sql
select @@max_allowed_packet;

原始笔记里提到默认值常见是 4MB,这个说法在很多环境里确实比较常见,但实际值要以当前实例配置为准,不能只靠默认经验判断。

三、怎么处理 max_allowed_packet 过小

临时调整

sql
set global max_allowed_packet = 268435456;

这表示把值调到 256MB

但要注意:

  • 这是运行时修改
  • 重启 MySQL 后未必保留
  • 不同连接会话的生效时机也要留意

永久调整

更稳妥的方式是修改 MySQL 配置文件,在 [mysqld] 下配置:

ini
max_allowed_packet=256M

然后重启 MySQL。

这里原始笔记里的写法“1024*10”不够准确,配置文件通常应该直接写明确的容量值,比如 64M256M

四、Host is blocked because of many connection errors 是什么

这个报错通常表示:

  • 某个客户端频繁连接失败
  • MySQL 认为该主机存在异常连接行为
  • 最后把它临时拉黑了

常见原因包括:

  • 密码错误反复重试
  • 网络不稳定导致握手失败
  • 程序配置错误,持续重连

五、怎么解除阻塞

最常见的处理方式是登录 MySQL 后执行:

sql
flush hosts;

这会清空主机缓存并解除阻塞状态。

如果你当前 MySQL 跑在容器里,也可以先进入容器,再登录数据库执行这条命令。

六、真正该排查的重点

flush hosts 只是解封,不是根因修复。

更重要的是继续查:

  • 程序连接配置是否写错
  • 用户名密码是否正确
  • 网络是否不稳定
  • 是否有无意义的高频重连

如果只是不断解封,不处理根因,这个问题还会反复出现。

一句话总结

MySQL 报错处理里,先分清楚这是“配置容量问题”还是“连接异常问题”:

  • 包太大,优先看 max_allowed_packet
  • 连接被封,优先用 flush hosts 解封,再回头查连接失败根因
延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 顺着当前主线继续读MySQL 主从复制与读写分离适合把事务锁、死锁、主从复制、写后读一致性和切换治理串起来看。MySQL 专题 · MySQL 事务、锁与高可用同一序列 · 顺着当前主线继续读主从延迟出现时业务应该怎么兜底适合把事务锁、死锁、主从复制、写后读一致性和切换治理串起来看。MySQL 专题 · MySQL 事务、锁与高可用同专题其他序列 · 共享标签:线上排障、案例排障MySQL 索引设计与慢 SQL 排查适合先把字段设计、索引、Explain、分页和慢 SQL 这条主线走顺。MySQL 专题 · MySQL 建模与查询优化同专题其他序列 · 共享标签:案例排障MySQL 慢 SQL 优化案例适合先把字段设计、索引、Explain、分页和慢 SQL 这条主线走顺。MySQL 专题 · MySQL 建模与查询优化跨专题关联 · 共享标签:线上排障、案例排障磁盘打满后为什么删除文件不一定立刻生效适合把 Redis 抖动、MySQL 连接打满、MQ 积压、ES 发黄、ClickHouse 合并堆积和磁盘打满放在同一条基础设施排障主线上看。数据与基础设施排障专题 · 数据与基础设施故障的分层排查跨专题关联 · 共享标签:线上排障、案例排障大 Header、buffer、timeout 问题怎么排查适合把 location 匹配、缓冲区和负载均衡放在一起看。容器与站点部署专题 · Nginx 进阶路由与代理治理
继续阅读MySQL 事务、锁与高可用当前序列第 3 篇 / 共 6 篇当前专题第 2 个序列 / 共 7 个序列
往前看
上一篇MySQL 死锁怎么排查回到当前序列上一章上一序列MySQL 建模与查询优化从第 1 篇开始:MySQL 字段类型怎么选
往后看
下一篇MySQL 主从复制与读写分离继续当前序列下一章下一序列MySQL 存储引擎与执行细节从第 1 篇开始:MVCC 和 Read View 怎么理解

把零散经验整理成可查、可复用、可持续更新的企业级知识门户