你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
MySQL中文参考手册---18 问题和常见错误(1)
 

18.1如果MySql总是崩溃怎么办

所有MySql在发布它们之前,在许多平台上被测试。这并不意味着在MySql中没有任何错误,但是如果有错误,它们是很少的并且很能难发现。如果你有一个问题并且如果你尝试找出究竟是什么摧毁了你的系统,它将总是有帮助的,因为你将有一个更好机会使得它被快速修复。

首先你应该试着找出问题MySqld守护进程是否死掉或你的问题是否与你的客户有关。你可以用MySqladminversion检查你的sql/Index.html'>mysqld服务器正常执行了多长时间,如果sql/Index.html'>mysqld死了,你可以在文件sql/Index.html'>mysql-data-directory/hostname.err”中找到其原因。

因为很难知道一些东西为什么崩溃,首先试着检查为其它人工作的东西是否使你崩溃。请尝试下列事情:

  • sql/Index.html'>mysqladminshutdown停止sql/Index.html'>mysqld守护进程,在所有表上运行myisamchk--silent--force*/*.MYI并重启sql/Index.html'>mysqld守护经进程。这将保证你从一个干净的状态运行。见13维护MySQL安装。
  • 使用sql/Index.html'>mysqld--log并且试着从日志信息确定是否是某个特定的查询杀死了服务器。全部错误的95%与特定的查询有关!通常它是在日志文件中就在MySQL重启之前的最后查询之一。你也许可以使用下列过程验证它:
    • 停止MySQL守护进程(用sql/Index.html'>mysqladminshutdown)。
    • MySQL数据库目录下做文件的一个备份。
    • myisamchk-s*/*.MYI检查表以验证所有表是正确的。如果有任何表被损坏,用myisamchk-rpath-to-table.MYI修复它。
    • MySQL数据目录删除(或移走)任何旧的日志文件。
    • safe_sql/Index.html'>mysql--log启动服务器。
    • 如果sql/Index.html'>mysqld现在死掉,你可以通过恢复备份并执行sql/Index.html'>mysql<sql/Index.html'>mysql-log-file来测试问题是否是一个特定的查询引起的。当然你可以通过用safe_sql/Index.html'>mysqld--data=path-to-backup-directory启动另一个MySQL服务器,在某个其他目录而不是标准MySQL数据库目录下做后面的测试。
  • 你试用了基准测试吗?他们应该很好地测试MySQL。你也可以增加代码模拟你的应用程序!基准程序可在源代码分发的“bench”目录下找到,或对二进制分发,在你的MySQL安装目录下sql-bench”目录。
  • 试一下fork_test.plfork2_test.pl
  • 对任何错误检查文件sql/Index.html'>mysql-data-directory/hostname.err”
  • 如果你配置MySQL以便调试,如果出错,收集可能的错误信息将更容易。使用--with-debug选项的configure重新配置MySQL然后重新编译。见G.1调试一个MySQL服务器。
  • 为调试而配置MySQL使它包含一个安全的内存分配器以便能发现一些错误。它也提供关于正在发生什么的大量输出。
  • 你为你的操作系统使用了最新的补丁吗?
  • 使用sql/Index.html'>mysql--skip-locking选项.在一些系统上,lockd锁管理器不能正确工作;--skip-locking选项告诉sql/Index.html'>mysqld不使用外部锁。(这意味着你不能在同一个数据上运行两个sql/Index.html'>mysqld服务器而且如果你使用myisamchk,你一定要小心,但是它对为了测试试用选项可能有益。)
  • sql/Index.html'>mysqld好象正在运行但没有反应时,你尝试过sql/Index.html'>mysqladmin-urootprocesslist吗?有时sql/Index.html'>mysqld不是毫无反应,尽管你可能这样认为。问题可能是所有在用的连接,或可能用内部锁定问题。sql/Index.html'>mysqladminprocesslist甚至在这些情况下将通常可以进行一个连接,并且能提供有关当前连接数量及其状态的有用信息。
  • 在你运行其他查询时,在一个单独窗口中运行命令sql/Index.html'>mysqladmin-i5status,产生统计。
  • 尝试下列步骤:
    1. 通过gdb(或其他调试器)启动sql/Index.html'>mysqld
    2. 运行你的测试脚本。
    3. sql/Index.html'>mysqld核心倾倒(coredump),做back(或你调试器中的回溯-backtrace命令)。

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089