WEB开发网
开发学院数据库MySQL 如果MySQL依然崩溃你应作些什么 阅读

如果MySQL依然崩溃你应作些什么

 2007-10-29 11:01:11 来源:WEB开发网   
核心提示: 确保为你的操作系统应用了最新的补丁, 对mysqld使用“--skip-external-locking”选项,如果MySQL依然崩溃你应作些什么(3),在某些系统上,lockd锁定管理器不能正确工作,有缺陷的硬件能够导致数据损坏,对硬件进行故障诊断与排除操作时,&

确保为你的操作系统应用了最新的补丁。

对mysqld使用“--skip-external-locking”选项。在某些系统上,lockd锁定管理器不能正确工作,“--skip-external-locking”选项通知mysqld不使用外部锁定。(这意味着,你不能在相同的数据目录上运行2个mysqld服务器,如果使用myisamchk,必须谨慎。然而,尝试将该选项用作测试也是有益的)。

当mysqld看上去正在运行但并未响应时,是否运行了mysqladmin -u root processlist?某些时候,即使你认为mysqld处于闲置状态时,实际情况并非如此。问题可能是因为所有连接均已使用,或存在某些内部锁定问题。即使在该情况下,mysqladmin -u root processlist通常能够进行连接,并能提供关于当前连接数以及其状态的有用信息。

在运行其他查询的同时,在单独的窗口中运行命令mysqladmin -i 5 status或mysqladmin -i 5 -r status,以生成统计信息。

尝试采用下述方法:

从gdb(或另一个调试器)启动mysqld。

运行测试脚本。

在3个较低层面上输出backtrace(向后跟踪)和局部变量。在gdb中,当mysqld在gdb内崩溃时,可使用下述命令完成该任务:

backtrace
info local
up
info local
up
info local

使用gdb,你还能检查与info线程共存的线程,并切换至特定的线程N,其中,N是线程ID。

尝试用Perl脚本模拟你的应用程序,强制MySQL崩溃或行为异常。

发送正常的缺陷报告。

应比通常的报告更详细。由于MySQL是为很多人提供服务的,它可能因仅存在于你的计算机上的某事崩溃(例如,与你的特定系统库有关的错误)。

如果你遇到与包含动态长度行的表有关的问题,而且你仅使用VARCHAR列(而不是BLOB或TEXT列),可尝试用ALTER TABLE将所有VARCHAR列更改为CHAR列。这样,就会强制MySQL使用固定大小的行。固定大小的行占用的空间略多,但对损坏的容忍度更高。

目前的动态行代码在MySQL AB已使用多年,很少遇到问题,但从本质上看,动态长度行更倾向于出现错误,因此,不妨尝试采用该策略以查看它是否有帮助,这不失为一个好主意。

诊断问题时不要将你的服务器硬件排除在外。有缺陷的硬件能够导致数据损坏。对硬件进行故障诊断与排除操作时,尤其应注意RAM和硬盘驱动器。

上一页  1 2 3 

Tags:如果 MySQL 依然

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接