MySQL社区

标题: MySQL服务器不可用 [打印本页]

作者: jeff    时间: 2007-10-29 23:26
标题: MySQL服务器不可用
在本节中,还介绍了出现查询错误期间,与丢失了服务器连接有关的事宜。

MySQL服务器不可用错误的最常见原因是服务器超时以及连接已关闭。在该情况下,通常能见到下述错误代码之一(具体的错误代码与操作系统有关):


错误代码描述
CR_SERVER_GONE_ERROR客户端无法将问题发送至服务器。
CR_SERVER_LOST写入服务器时客户端未收到错误,但也未获得问题的完整答案(或任何答案)。


在默认情况下,如果未发生任何事,8小时后服务器将关闭连接。也可以在启动mysqld时,通过设置wait_timeout变量更改时间限制。

如果有1个脚本,你仅需要再次发出查询,让客户端再次进行自动连接即可。其中,假定在客户端中启用了自动再连接功能(对于mysql命令行客户端,这是默认设置)。

MySQL服务器不可用错误的一些其他常见原因如下:





在Windows平台上出现问题的原因,在某些情况下,将TCP/IP连接写入服务器时,MySQL未收到来自操作系统的错误,但当试图从连接读取答案时出现错误。

在该情况下,即使MYSQL结构中的再连接标志等于1,MySQL也不会执行自动再连接并再次发出查询,这是因为它不知道服务器是否收到原始查询。

对此的解决方式是:如果自上一次查询以来经过了较长时间,在连接上执行mysql_ping(正是MyODBC所作的);或在mysqld服务器上将wait_timeout设置得很高,使之实际上不存在超时。



通过执行mysqladmin version并检查服务器的正常工作时间,可检查服务器是否宕机并重启。如果客户端连接是因mysqld崩溃和重启而断开的,应将重点放在查找崩溃你方面。首先应再次检查发出的查询是否再次杀死了服务器。

用“--log-warnings=2”选项启动mysqld,可获得关于连接的更多信息。这样,就能将某些断开连接错误记录到hostname.err文件中。

如果你打算创建与该问题有关的缺陷报告,务必包含下述信息:

1. 指明MySQL服务器是否宕机。通过服务器错误日志可发现这方面的信息。

2. 如果特定查询杀死了mysqld,而且在运行查询前用CHECK TABLE检查了涉及的表,你是否能提供可重复的测试范例?

3. 在MySQL服务器中,系统变量wait_timeout的值是什么?(mysqladmin variables给出了该变量的值)。

4. 你是否尝试使用“--log”选项来运行mysqld,以确定是否在日志中出现问题?

[ 本帖最后由 jeff 于 2007-10-30 17:12 编辑 ]




欢迎光临 MySQL社区 (http://www.mysqlpub.com/) Powered by Discuz! X3.2