问题描述
每当出现网站访问不了的时候,估计应该就是服务器出现故障了,这个时候大部分情况都是属于数据库出现问题。
查找步骤:
1、查找top检查服务器负载是否有问题
一般网站访问不了,top显示的负载都是很大的,这个时候可以看到mysql的进程占用资源很高,往往就是mysql发生故障了
2、在服务器中查看网站的访问记录
这些访问记录存储在:/home/对应的网站名/access-logs/对应的网站名
可以先通过tail查看,查看出异常的ip的时候可以通过grep进行过滤查看,在这个文件一般都可以找到恶意爬虫、恶意访问的记录,这些往往有可能是导致mysql数据库挂掉的原因。
3、这个时候先对数据库进行重启,对apache进行重启
service mysql restart
service httpd restart
重启之后一般都可以暂时恢复正常的访问的了。如果是出于恶意访问的话,找出恶意访问的ip把它禁止掉即可,如果是网站数据库出现故障,那么还要进行数据库排查。
4、查找数据库错误日志
首先需要知道数据库mysql的安装目录,可以通过whereis mysql找到,但是这往往没用
还有一种方法,就是通过ps -ef | grep mysql来查看
或者也可以通过进入mysql,使用select @@basedir as basePath from dual来查看mysql安装目录
我们在第二种查找方法ps -ef | grep mysql中对应mysql的几种日志找到其所在目录,然后查看对应文件进行分析
mysql有以下几种日志
错误日志:-log-err
查询日志:-log
慢查询日志:-log-slow-queries
更新日志:-log-update
二进制日志:-log-bin
如下便是对应的数据库错误日志和慢查询日志的查看方法了
下面附加一篇关于mysql慢查询日志的说明
随着数据量的不断增长,性能尤为重要,或许经过优化及好的解决方案,使你当前感觉不到性能问题的存在,但随着数据量的不断增长,
从百万到千万再到几亿,可能问题会随之而来,为了能更好的掌握数据库的运行效率,添加慢日志查询是很有必要的。
查看日志相关信息:
参数如下:
-slow_launch_time
如果创建线程的时间超过该秒数,服务器增加Slow_launch_threads状态变量。
-slow_query_log
是否记录慢查询。用long_query_time变量的值来确定“慢查询”。
-slow_query_log_file
慢日志文件路径
-long_query_time
慢日志执行时长(秒),超过设定的时间才会记日志
日志配制:修改my.ini文件为以下内容
#开启慢日志 1:开启 0:关闭
slow_query_log=1
#设置日志时长 单位(秒)
long_query_time = 2
测试慢日志记录信息:
- 查询总记录数
- collegets-slow.log日志信息(文件默认存放在datadir目录下)
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.23-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.23-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
#Time: 121205 16:09:31
#User@Host: root[root] @ [192.168.17.105]
#Query_time: 2.171875 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 2381725
SET timestamp=1354694971;
SELECT COUNT(*)
FROM usersession;
转载原文出处链接和本声明。
本文链接:https://blog.csdn.net/wjtlht928/article/details/47661265