如何处理Mysql报错
1. 环境: 此例针对的是 Mysql 数据库 在 windows 平台下的报错处理; Linux非常类似, 只是安装目录不同;
2. 现象: 数据库无法启动, 网站访问时因不能从数据库获取数据, 页面显示不完整且报错, 影响用户体验;
3. 问题如下:
提问: 你好, 我访问网时候报错如下, 我应该怎么判断是不是数据库的问题?
回答: 根据报错提示, 源代码连接数据库时无法连接, 你可以使用cmd命令: netstat –an | find “:3306” 确定下数据库是否在监听 , 以及mysql 在任务管理器里面是否有进程; (访问网站abc.com 时, 浏览器提示报错如下)
提问: 请问一下, 如数据库正在运作 ,但是依然报以上错误, 应该如何处理?
回答: 首先你要启动cmd 终端, 然后基于绝对路径, 执行mysql 命令, 例如: 开始 -> 运行-> cmd -> D:/hosting/system/Mysql/Mysql , 进入管理界面后, show variables like ‘%error%’; 即可找到错误日志所在的绝对路径(例如 D:/hosting/system/Mysql/mysql_error.log ) ; 打开错误日志后可根据报错提示进行处理; 例如下面
由于某个表的属性文件 hs.frm 损坏, 导致数据库无法启动; 最后hs.frm 表删除后, 数据库运作正常;
提问: 数据库起不来是什么原因?
回答: 请根据错日日志报错提示处理, 例如上面的例子就是 数据表损坏, 导致不稳定, 数据库启动后5分钟, hs.frm 表被访问, 数据库自动关闭, 处理该表后数据库运作正常;
提问: 如果 hs表异常, 里面内容有损坏, 当时你们是如何处理的?
回答: 由于Mysql 实例中, 约承载了100个数据库, hs表只是其中一个库的其中一个表, 删除他后可以使得其他99个数据库运作正常 ,消除网站报错问题; 当时我们根据抓大放小原则, 先删除了 hs表相关文件, 例如 hs.frm表属性文件(如文件修改日期) , hs.MYD数据文件 hs.MYI索引文件 ; 然后数据库即可运作正常;
提问: hs表被删除了, 对网站会造成什么影响? 能否恢复呢?
回答: hs表只是其中一个网站子页面所以来的表, 删除后, 只有某个分支产品页面不能显示; 影响不大; 由于数据库定期有备份, 我们建议客户利用备份数据进行还原, 恢复单个表即可; 当然首先要在备份机上 mysqldump –u”用户名” –p”密码” “库名”.”表名” > hs.sql 导出hs表, 然后在目标机上执行还原操作: mysql –u”用户名” –p”密码” “库名”.”表名” < hs.sql ;