您的位置:首页 > 数据库 > MySQL

Mysql问题排查文档

2016-11-04 18:43 141 查看
1. Mysql问题归类
1.1 SQL类问题
这类问题通常是由用户习惯不好导致的问题,比如大表没有索引,SQL语句不规范等。 查找到错误的sql,修改处理。
1.2 配置类问题
这类问题属于mysql数据的配置不合理的问题,导致数据库操作较慢。 需要修改响应配置。
1.3 BUG类问题

这类问题比较少见,碰到了MySQL的bug,需要根据错误日志或者网络查询解决。

2. Mysql问题排查流程
2.1 Mysql慢
1、 进入mysql,执行命令show processlist或者105上使用navicat工具,工具->服务器监控,查看正在运行的sql;
2、 如果有运行时间较长的sql,需要关注分析。 如果有问题,修改。
3、 查看慢查询日志,一般在/var/lib/mysql/下,slow.log是文本文件,可以直接查看执行慢的sql,分析处理。
2.2 Mysql宕掉
1、 查看错误日志。 tail –f /var/log/mysql/mysqld.err。 根据错误日志进行分析处理。
2、 重启mysql。 如果还有问题在根据运行的错误日志在进行处理。

3. Mysql问题提前预防
最关键的还是在mysql平时的维护,减少问题情况的发生。
3.1 建表核查
建表有一套基本的需要遵守的规则,参照:

l 必须指定主键。

若不指定主键,InnoDB会用唯一且非空值索引代替。

l 尽量不用外键。

由程序端保证约束。

l 保持表身段苗条。 建议单表字段数上限控制在20~50个。

l 合理选择字段类型。

l 避免使用NULL字段。

很难进行查询优化,NULL列加索引需要额外空间,含NULL复合索引无效。

l 少用并拆分TEXT/BLOB。

l 分析正式表的数据量。

如果数据量只增不减,尽量避免使用mysql。 建议数据量不超过千万,否则会影响性能。

l 收集经常操作表的sql语句。

1、经常用的字段增加索引

2、避免一个语句操作过多数据行。 如:update 。。。 where N_GROUP=1,发现需要更改的数据行超过100;需要分页操作。

3.2 日常检查
如果有专职DBA,每天检查数据库运行状况;
如果无专职,可以每周检查运行状况。
检查文档:http://blog.csdn.net/thomas0yang/article/details/8175361
3.3 基础普及
需要对开发人员进行基本的数据库使用操作知识普及,减少不规范的问题的出现。
如:

http://blog.csdn.net/thomas0yang/article/details/8153507
http://blog.csdn.net/thomas0yang/article/details/8112257
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息