十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以使用 show processlist 命令查看当前所有连接信息。
网站制作、成都网站制作介绍好的网站是理念、设计和技术的结合。成都创新互联公司拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。
使用 explain 命令查询 SQL 语句执行计划。
开启慢查询日志,查看慢查询的 SQL。
0、首先排除机器问题,如cpu、内存情况
1、根据日志找到sql语句,从两点,一是索引、二是语句的写法
2、使用mysql的explain+语句形式,排查是否引用索引,通过key、extra,key表示有没有用到索引,用到的是哪个索引,像like、or等是索引失效的,extra using index表示覆盖索引,usingwhere表示where条件用到了索引,通过explain结果,修改sql语句,该加索引加索引,该修改语句修改语句
3、语句编写上,子查询、关联查询大表小表
4、部署测试
研发创建了存储过程,需要部署定时任务,在上线前进行检查,执行定时脚本时,出现了如下报错
ERROR: [SQLCODE] 1055 , [SQLSTATE] 42000 , [MESSAGE] Expression #1 of ORDER BY clause is not in GROUP BY
此时查看sql_mode,发现里面没有only_full_group_by,但是执行还会报错,怀疑是链接没断开,当前session没生效,断开重连还是一样的报错
遂查看存储过程 show create procedure dataabase.procname;
发现创建之前的sql_mode有only_full_group_by,为了能正常运行,在当前模式下,删除新建存储过程,即可重新调用,执行成功。
四,服务器故障排查方法总结
问题描述:
每当出现网站访问不了的时候,估计应该就是服务器出现故障了,这个时候大部分情况都是属于数据库出现问题。
查找步骤:
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
以上便是对应的数据库错误日志和慢查询日志的查看方法了
在服务器的维修中,线索都会显得扑朔迷离,有的甚至按起葫芦翘起瓢。一般来说不可能一次就可以准确地判断出问题的所在。这样就要求工程师要有信心和耐心。出现错误一般的方法都是根据经验优先使用最简单排错方法测试,如果没有解决问题再找其它因素进行测试。总之,服务器出错后必须一步一步解决,没有捷径可言。