Mysql数据库磁盘未监控,引起的网站服务异常
某天早上,发现发布好多天的网站突然连接不上数据库,查询问题后,
总结如下:
问题一:某台服务器的数据库连接数已经达到上限,工作不正常了。尝试关闭服务,可惜关闭不成功,强行停止服务,服务没反映,无奈之下,只好重新启动服务器!重启之后,数据库的服务启动不正常。
后经高人指点,发现数据库所在的硬盘已经满了,所以不能正常写入数据!
解决:清一下垃圾数据(apache的log,mysql的log),数据库启动正常!感觉OK了!
问题二:检查前台页面时,发现所有的新增数据全部出现异常,提示有相同的主键存在在表中,表中主键ID都是自增长的。但查询一下表发现并没有重复的ID呀,这是为什么,找了半天原因,怀疑在并发连接的过程中,
由于某些新增数据已经取到了主键ID,缓存中已经存放了此主键ID,由于插入失败,表中无此主键的ID。
解决:手工插入一下大一些主键ID,从前台页面插入数据,插入正常。感觉又OK了!(失败之笔)
问题三:在前台又现新的问题,有两个页面的数据检索不出来了。其它页面的数据检索正常,这又为什么呢?把出问题的SQL拿出来,直接执行,果然执行失败,仔细分析SQL语句,发现此条SQL语句是以主键进行ORDER BY
会失败,联想一下刚才的问题,原因可能是不正常的数据库关闭,导致表中的主键索引破坏。
解决:
mysql提供了一个数据库的修复命令,一直也没用过,不清楚什么情况下用,刚好试试。命令如下:
checkmysql -A -o -p -r
参数解析:
-A 全部数据库
-o optimize 优化
-p 执行时输入数据登录口令
-r 修复破坏的索引数据(主键索引)
更多参数自行查找!嘻嘻!!!!