Nginx 负载均衡中怎么配置 stream 四层协议转发实现 MySQL 集群的负载均衡

舞夢輝影

舞夢輝影

2026-07-26

935人浏览

原创

nginx stream模块可对mysql集群实现四层tcp负载均衡,需启用with-stream模块,配置upstream健康检查(proxy_responses、max_fails等)和server监听参数(proxy_timeout、so_keepalive等),但不解析sql,无法读写分离。

nginx 负载均衡中怎么配置 stream 四层协议转发实现 mysql 集群的负载均衡

要用 Nginx 的 stream 模块对 MySQL 集群做四层负载均衡,关键不是解析 SQL,而是把 TCP 连接稳定、低延迟地分发到多个 MySQL 实例。它不处理读写逻辑,只管端口和连接转发,所以配置必须放在顶层 stream 块里,且所有参数都围绕 TCP 特性设计。

确认 stream 模块已启用

运行命令检查:

nginx -V 2>&1 | grep -o with-stream

有输出说明支持;若无,需重新编译 Nginx 并添加 --with-stream 参数,或安装含 stream 支持的包(如 Ubuntu 的 nginx-full、CentOS 的 EPEL nginx)。

配置 MySQL 上游组与健康感知

MySQL 是握手敏感、长连接密集的服务,不能只靠 TCP 连通就认为可用。推荐配置如下:

  • proxy_responses 1:等待 MySQL 返回 greeting packet(首个响应包),避免仅靠三次握手误判后端存活
  • proxy_timeout 1h:匹配 MySQL 默认 wait_timeout=28800,防止 Nginx 主动断开空闲连接
  • max_fails=3 fail_timeout=30s:连续失败 3 次后,30 秒内不再向该节点发新连接,实现被动健康检查
  • backup 标记备用节点:比如主库异常时自动切到从库(注意:这不是读写分离,只是故障转移)

示例 upstream:

MySQL(Linux)
MySQL(Linux)

MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。

下载

upstream mysql_cluster {
  server 192.168.10.10:3306 max_fails=3 fail_timeout=30s;
  server 192.168.10.11:3306 max_fails=3 fail_timeout=30s backup;
}

定义监听与代理行为

stream 块中添加 server 段,监听对外端口(如 3306 或新端口 3307),并指向 upstream:

  • listen 3306:直接复用原端口,客户端无需改连接地址
  • proxy_connect_timeout 2s:控制建立后端连接的超时,避免阻塞
  • so_keepalive onproxy_socket_keepalive on:启用 TCP keepalive,减少防火墙或中间设备导致的连接中断
  • proxy_buffer_size 512k:防止 mysqldump 或大结果集因缓冲不足被截断

示例 server:

server {
  listen 3306;
  proxy_pass mysql_cluster;
  proxy_connect_timeout 2s;
  proxy_timeout 1h;
  proxy_responses 1;
  so_keepalive on;
  proxy_socket_keepalive on;
  proxy_buffer_size 512k;
}

注意事项与常见误区

stream 模块不解析 SQL,因此无法实现真正的读写分离——那是 ProxySQL 或 MaxScale 的职责。Nginx 只能按端口分流,比如业务层主动连 3306(写)和 3307(读),再分别代理到不同 upstream 组。

真实客户端 IP 在四层转发中默认不可见,如需透传,后端 MySQL 必须支持 PROXY 协议,并在 Nginx 中开启 proxy_protocol on,同时 upstream 节点要配置接收 PROXY 头。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

355

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

618

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1217

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

429

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

324

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

190

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1057

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

1871

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

323

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习