MySQL Linux 客户端超时/保持活动

Ste*_*ger 7 command-line firewall mysql timeout

有没有办法在 Linux 上的命令行 MySQL 客户端中设置 keepalive?

我们的网络最近转移到 VLAN 设置,我们的系统部门不再控制防火墙。权力决定在他们的防火墙中设置一个规则,如果没有数据通过,则在 30 分钟后终止所有连接(关于必须跟踪连接和有限资源)。我对此无能为力。

作为服务器管理员和程序员,我的问题是这意味着我在编程时无法在后台运行 mysql 命令行客户端。如果我不发送查询(或以其他方式发送数据),当我在 35 分钟后尝试时,客户端检测到它不再有连接。我每次都必须重新连接。

在 SSH 中,我可以设置一个 keepalive,这样我就可以全天保持连接打开。mysql 命令行客户端是否有类似的可配置选项?我找不到任何东西,因为“Mysql Keepalive”和类似搜索都返回编程语言中后端连接的结果。

der*_*ert 4

您可以设置通用 TCP keepalive,我认为有一个内核设置可以实现这一点。但它们的频率通常要低得多(小时)。有一个TCP Keepalive HOWTO似乎有详细信息。

\n\n

或者,为什么不直接通过 SSH 建立 MySQL 连接隧道,然后就可以使用 SSH keepalive 了?

\n\n
$ ssh -L1234:127.0.0.1:3306 -o ServerAliveInterval=300 user@mysql-server\n... (in another terminal)\n$ mysql -u user -p -h 127.0.0.1 -P 1234\n
Run Code Online (Sandbox Code Playgroud)\n\n

第三种选择是建立一个到您的服务器的隧道(例如,OpenVPN),然后它将处理保持活动(以及透明地重新连接等)。

\n\n

PS:关于在 30 分钟内使已建立的TCP 连接过期的“我们宝贵的资源”论点是废话。不幸的是\xe2\x80\x94我以前也经历过\xe2\x80\x94一些设备也是BS。例如,BCP 142/RFC 5382给出的最短时间为 2 小时 4 分钟(并且仅当防火墙无法确定主机是否仍在运行时)。

\n