MySQL问题排查思路
2023-04-23 14:37:31 0 举报
AI智能生成
MySQL学习,以及问题排查简单思路
作者其他创作
大纲/内容
硬件问题
CPU
1.使用top或者sar -u 查看CPU资源使用情况<br>
2.使用命令查看具体进程的CPU使用率<br>
3.1 vmstat命令 – 监视系统资源状态<br><br>
3.2 pidstat -u 1 显示占用CPU的进程<br>
IO
1. 使用命令iostat,iotop 查看io情况,看是否有io使用打满情况<br>
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<br>
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<br>
1.SQL语句分析<br>
通过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.索引
主从<br>
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 条评论
下一页