MySQL巡检.docx
《MySQL巡检.docx》由会员分享,可在线阅读,更多相关《MySQL巡检.docx(12页珍藏版)》请在冰豆网上搜索。
![MySQL巡检.docx](https://file1.bdocx.com/fileroot1/2022-11/17/bdac6543-9ceb-4cc7-9dd6-5f1dca32bebe/bdac6543-9ceb-4cc7-9dd6-5f1dca32bebe1.gif)
MySQL巡检
MySQL巡检
系统基本信息
机型号
IP
CPU
内存
磁盘
(业务)系统信息
操作系统
主机名
操作系统巡检
检查内容
说明
检查方法
结果(异常需详细说明)
正常输出结果
系统配置检查
操作系
统版本
#uname–a
□正常□异常
显示系统版本和核心补丁信息
系统I/O检查
检查系统I/O负载情况
#iostat、top
□正常□异常
Top中CPUS中的%wa与iostat中的%iowait不应同时有值
系统CPU检查
检查系统CPU负载情况
#top、
Cat/proc/cpuinfo
□正常□异常
%wa(等待)的时间无或者较小
系统内存检查
检查系统内存负载情况
#vmstat、free
□正常□异常
Swap中的so有值证明内存不足
系统网络检查
检查系统网络连通性
#ping、telnet
□正常□异常
网络可连通
MySQL监控类巡检
1、TPS/QPS
1.1、TPS
tps:
TransactionsPerSecond,每秒事务数;
TPS=Com_commit/s+Com_rollback/s
Com_commit/s=mysqladminextended-status--relative--sleep=1|grep-wCom_commit
Com_rollback/s=mysqladminextended-status--relative--sleep=1|grep-wCom_rollback
理想状态:
参照日常数,当出现峰值时告警
1.2、QPS
qps:
QueriesPerSecond每秒查询数;
QPS=mysqladminextended-status--relative--sleep=1|grep-wQuestions
理想状态:
参照日常数,当出现峰值时告警
2、innodb_buffer_pool_status
innodb_buffer_pool_reads:
平均每秒从物理磁盘读取页的次数
innodb_buffer_pool_read_requests:
平均每秒从innodb缓冲池的读次数(逻辑读请求数)
innodb_buffer_pool_write_requests:
平均每秒向innodb缓冲池的写次数
innodb_buffer_pool_pages_dirty:
平均每秒innodb缓存池中脏页的数目
innodb_buffer_pool_pages_flushed:
平均每秒innodb缓存池中刷新页请求的数目
innodb缓冲池的读命中率
innodb_buffer_read_hit_ratio= (1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests)*100
Innodb缓冲池的利用率
Innodb_buffer_usage= (1-Innodb_buffer_pool_pages_free/Innodb_buffer_pool_pages_total)*100
理想状态:
参照日常数,当出现峰值时告警;
当缓冲池的读命中率较低时可以适当的增大innodb_buffer_pool或检查SQL语句
3、slow_queriesstatus
执行时间超过long_query_time秒的查询的个数
理想状态:
查询值波动不大,若出现大量慢查询,需检查近期上线的SQL语句
4、Sortstatus
mysql>showglobalstatuslike'%sort%';
Sort_merge_passes
Sort_range
Sort_rows
Sort_scan
理想状态:
Sort_merge_passes表示当需要排序时,在排序缓冲中无法将结果完全存放,则将会基于磁盘创建临时文件进行排序。
如果该值较高,则应提高sort_buffer_size大小。
最好的办法是找到是由哪些排序SQL造成的。
5、selectstatus
5.1、select_scan
对表进行完全扫描的联接的数量
mysql>showglobalstatuslike'select_scan';
理想状态:
恒定的值,不会随时间增长而有明显的增长。
5.2、select_full_join
没有主键(key)联合(Join)的执行。
该值可能是零。
这是捕获开发错误的好方法,因为一些这样的查询可能降低系统的性能。
mysql>showglobalstatuslike'select_full_join';
理想状态:
出现fulljoin的次数,如果该值不为0,需要检查表上是否有合适的索引
6、Lockstatus
mysql>showglobalstatuslike'table_locks%';
table_locks_immediate表示立即释放表锁数;
table_locks_waited表示需要等待的表锁数;
理想状态:
table_locks_waited如果该值很大,而且性能很慢,建议针对业务拆分主表
7、Threadstatus
mysql>showglobalstatuslike‘thread%‘;
Threads_cached
Threads_connected
Threads_created
Threads_running
理想状态:
threads_created表示创建过的线程数,如果发现threads_created值过大的话,表明mysql服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,
MySQL参数类巡检
1、Connectionssettings
1.1、max_connections
查询服务器最大连接数
mysql>showvariableslike‘max_connections‘;
查询服务器响应的最大连接数
mysql>showglobalstatuslike‘max_used_connections’;
理想状态:
max_used_connections/max_connections*100%≈85%;
error_log中未出现MySQL:
ERROR1040:
Toomanyconnections该类错误。
1.2、Aborted_connects
查询服务器尝试已经失败的MySQL服务器的连接的次数;
mysql>showglobalstatuslike‘Aborted_connects’;
理想状态:
固定值,不随时间增长而增长(或增长幅度较小),若该数出现持续增长,需检查
连接状况或错误日志,定位异常连接主机(一般为应用账号密码问题)。
1.3、Aborted_clients
查询服务器异常客户端数(由于客户没有正确关闭连接已经死掉,已经放弃的连接数量);
mysql>showglobalstatuslike‘Aborted_clients’;
理想状态:
固定值,不随时间增长而增长(或增长幅度较小),若该数出现持续增长,需检查
连接状况或错误日志,定位异常连接主机(一般为程序逻辑开启连接后未正常关闭)。
2、innodbsettings
2.1、innodb_buffer_pool_size
查询innodb存储引擎数据缓存大小
mysql>showvariableslike‘innodb_buffer_pool_size‘;
理想状态:
建议设置为物理内存的60%~80%,或根据业务决定
2.2、innodb_io_capacity
配置刷新I/O操作性能,此参数可以限制I/O操作
mysql>showvariableslike‘innodb_io_capacity‘;
理想状态:
根据实际磁盘情况设置
innodb_io_capacity
磁盘配置
200
单盘SAS/SATA
2000
SAS*12RAID10
5000
SSD
20000
FUSION-IO
2.3、innodb_flush_neighbors
刷新相同extent脏块
mysql>showvariableslike‘innodb_flush_neighbors‘;
理想状态:
默认为1,建议开启,在SSD环境建议配置为0
2.4、innodb_print_all_deadlocks
记录死锁记录
mysql>showvariableslike‘innodb_print_all_deadlocks‘;
理想状态:
默认关闭,建议开启
2.5、innodb_lock_wait_timeout
InnoDB行锁等待时间
mysql>showvariableslike‘innodb_lock_wait_timeout‘;
理想状态:
默认为50秒,建议配置为5秒
2.6、innodb_flush_method
配置刷新方法
mysql>showvariableslike‘innodb_flush_method‘;
理想状态:
Linux系统MySQL建议配置为:
O_DIRECT
3、LogSettings
3.1、binlogsettings
3.1.1、binlog_format
binlog日志格式
mysql>showvariableslike‘binlog_format‘;
理想状态:
建议配置为row格式,特殊业务情况另考虑
3.1.2、binlog_rows_query_log_events
写log事件(例如行操作日志时间)到binglog
mysql>showvariableslike‘binlog_rows_query_log_events‘;
理想状态:
默认为:
0,建议配置为:
1
注:
此参数需要在binlog格式为ROW下配置
3.1.3、sync_binlog
控制binlog同步磁盘方式
当sync_binlog=1时,所有的事务都在提交前写入binlog。
因此即使binlog事件遇到意外重启,一些在prepared状态的binlog会丢失。
这导致服务器在恢复数据时自动回滚这些事务。
这确保了从binlog不丢失事务,因此是最安全的选项。
事实上,这增加了同步到磁盘的总次数。
但是从MySQL5.6开始,已经支持组提交和合并同步了,这使得出现性能问题的可能性最小化了。
当sync_binlog=0时,mysql-server并不把binlog同步到磁盘,而是依赖操作系统把binlog的内容同步到磁盘。
因此,当出现掉电或操作系统崩溃时,很可能出现已经提交的事务没有被同步到磁盘的情况。
因此mysql在自动恢复时无法恢复这些事务,他们从binlog中丢失了。
所以说,新的默认设置sync_binlog=1更安全。
mysql>showvariableslike‘binlog_rows_query_log_events‘;
理想状态:
设置sync_binlog=1更安全。
3.1.4、expire_logs_days
自动清理二进制日志的天数
mysql>sh