MySQL问题排查思路
2023-04-23 14:37:31 0 举报
AI智能生成
MySQL学习,以及问题排查简单思路
作者其他创作
大纲/内容
硬件问题
CPU
1.使用top或者sar -u 查看CPU资源使用情况
2.使用命令查看具体进程的CPU使用率
3.1 vmstat命令 – 监视系统资源状态
3.2 pidstat -u 1 显示占用CPU的进程
IO
1. 使用命令iostat,iotop 查看io情况,看是否有io使用打满情况
2. 使用 lsof -p IPD 查找哪个文件引起的I/Owait异常
网络
1. ping所有节点心跳是否正常
连续ping,观察是否存在丢包(正常0丢包)
观察ping值是否稳定(本地延迟<1ms,异地延迟<5ms)
netstat异常计数增长
tcp_max_syn_backlog
tcp_max_tw_buckets
net.ipv4.tcp_tw_reuse
net.ipv4.tcp_tw_recycle
net.ipv4.tcp_fin_tiimeout
内存
1.内存剩余过小
2.产生swap
3.hugepage
资源限制
1. 打开文件限制
2. 线程限制
OOM
1. 查看 /var/log/messages 日志
2.使用 dmesg 命令查看
MySQL系统问题
1.内存问题
全局内存参数
1. key_buffer_size
2. innodb_buffer_pool_size
3. innodb_log_buffer_size
4. binlog_chache_size
线程级别内存参数
1. read_buffer_size
2.sort_buffer_size
3. join_buffer_size
4. tmp_table_size
5.thread_stack
6. read_rnd_buffer_size
临时表
1.多表join
2.排序
3.创建大量临时表
4.大量聚合操作
链接数
1.max_user_connection
2.max_connection
表句柄信息
1.table_definition_cache
2. table_open_cache
3. table_open_cache_instances
事务
1.锁级别
表锁
行锁
范围锁
元表锁
死锁
1.数据库隔离级别
2.行锁
3. gap锁冲突
4. 不同索引锁冲突
问题定位日志
1. error log
2. slow log
3.binlog
4. relay log
执行SQL
1.SQL语句分析
通过explain(profile)进行SQL分析
2.索引
查看表是否是无索引或执行计划错误
3.慢日志
使用工具pt-qurey-digest分析慢日志
4.大量并发
通过show processlist 查看执行SQL的情况,适当调整并发数限制
5.存储过程,触发器
避免使用存储过程、触发器,存储过程和触发器会消耗大量mysql的CPU所以要尽量规避
6.多表join
尽量避免3张表以上的join,容易产生中间表
join算法
1.Nest-Loop Join(简单嵌套循环连接)
2.Index Nested-Loop Join(索引嵌套)
3. Block Nested-Loop Join(块嵌套循环连接)
4.Batched Key Access Join
7.表结构设计
按照MySQL规范,进行设计
1.主键
2.字段类型选择
3.索引
主从
1.复制错误
1.查看复制信息show slave status\G
2.mysqlbinlog查看事务信息
3.查看error日志中主从复制报错信息
2.主从数据不一致,可能因素
1.从库呗写入
2.事务丢失
3.大事务
4.宕机
5.复制搭建方式错误
3.延迟
1.binlog解析
2.event扫描方式
3.表结构(无主键或者存在大量myisam表)
4.大批量更新产生大事务
4.复制相关参数设置不合理
MySQL bug
1.内存泄漏
2.版本内置问题
3.版本缺陷
代码以及堆栈
1.strace
2.pstack
3.pmap
4.gdb
收藏
0 条评论
下一页