MySQL一键巡检脚本!再也不用自己梳理了

MySQL 运维很关键!了解数据库基本配置和性能状态,是确保其稳定运行的重要环节。深入知晓 MySQL 配置项、连接数、Binlog、GTID、InnoDB 等关键参数,能更好掌握运行情况,提前发现潜在问题。

本文介绍用一系列 SQL 查询语句快速获取 MySQL 基本配置、连接数、Binlog 和 GTID 配置以及 InnoDB 配置信息和监控指标。还提供简便脚本,一键获取所有信息,为 MySQL 巡检带来便利。

一 获取基本配置信息

说明 执行语句
是否区分表名大小写 SHOW VARIABLES LIKE 'lower_case_table_names';
MySQL 服务端口 SHOW VARIABLES LIKE 'port';
MySQL socket 文件路径 SHOW VARIABLES LIKE 'socket';
是否跳过域名解析 SHOW VARIABLES LIKE 'skip_name_resolve';
数据库字符集 SHOW VARIABLES LIKE 'character_set_server';
服务器默认的校对规则 SHOW VARIABLES LIKE 'collation_server';
交互式连接超时时间(秒) SHOW VARIABLES LIKE 'interactive_timeout';
非交互式连接超时时间(秒) SHOW VARIABLES LIKE 'wait_timeout';
事务隔离级别 SHOW VARIABLES LIKE 'tx_isolation';
数据文件存放位置 SHOW VARIABLES LIKE '%datadir%';
允许的最大数据包大小 SHOW VARIABLES LIKE 'max_allowed_packet';
每个线程堆栈的大小 SHOW VARIABLES LIKE 'thread_stack';
线程缓存的大小 SHOW VARIABLES LIKE 'thread_cache_size';
可以打开的表的数量 SHOW VARIABLES LIKE 'table_open_cache';
内部临时表的最大大小 SHOW VARIABLES LIKE 'tmp_table_size';
内存中 HEAP 表的最大大小 SHOW VARIABLES LIKE 'max_heap_table_size';
MySQL 主进程文件的位置 SHOW VARIABLES LIKE 'pid_file';
错误日志文件的位置 SHOW VARIABLES LIKE 'log_error';
慢查询日志文件的位置 SHOW VARIABLES LIKE 'slow_query_log_file';
慢查询时间阈值 SHOW VARIABLES LIKE 'long_query_time';

二 获取连接数配置信息

说明 执行语句
最大连接数 SHOW VARIABLES LIKE 'max_connections';
服务器启动以来已使用的最大连接数 SHOW status LIKE 'Max_used_connections';
达到最大连接数的时间点 SHOW STATUS LIKE 'Max_used_connections_time';
连接失败次数上限 SHOW VARIABLES LIKE 'max_connect_errors';
通过 MySQL X Protocol 已接受的连接数 SHOW STATUS LIKE 'Mysqlx_connections_accepted';
通过 MySQL X Protocol 已关闭的连接数 SHOW STATUS LIKE 'Mysqlx_connections_closed';

三 获取 Binlog 配置信息

说明 执行语句
Binlog 文件列表 SHOW BINARY LOGS;
是否启用 Binlog SHOW VARIABLES LIKE 'log_bin';
Binlog 同步频率 SHOW VARIABLES LIKE 'sync_binlog';
Binlog 格式 SHOW VARIABLES LIKE 'binlog_format';
文件路径 SHOW VARIABLES LIKE 'log-bin';
Binlog 索引文件位置 SHOW VARIABLES LIKE 'log_bin_index';
单个 Binlog 最大大小 SHOW VARIABLES LIKE 'max_binlog_size';
Binlog 基本名字 SHOW VARIABLES LIKE 'log_bin_basename';
Binlog 文件过期时间 SHOW VARIABLES LIKE 'expire_logs_days';
MySQL 服务器的唯一 ID SHOW VARIABLES LIKE 'server_id';

四 获取 GTID 配置信息

说明 执行语句
是否开启 GTID 模式 SHOW VARIABLES LIKE 'gtid_mode';
是否强制 GTID 一致性 SHOW VARIABLES LIKE 'enforce_gtid_consistency';
查询GTID执行的详细情况 SELECT * FROM mysql.gtid_executed;
是否开启级联复制 SHOW VARIABLES LIKE 'log_slave_updates';

五 InnoDB 配置信息

说明 执行语句
InnoDB 版本 SHOW VARIABLES LIKE 'innodb_version';
是否为每个 InnoDB 表创建单独的文件 SHOW VARIABLES LIKE 'innodb_file_per_table';
InnoDB 缓存池大小 SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
InnoDB 日志文件大小 SHOW VARIABLES LIKE 'innodb_log_file_size';
InnoDB 可以有多少线程同时运行 SHOW VARIABLES LIKE 'innodb_thread_concurrency';
缓冲池中脏页的最大百分比 SHOW VARIABLES LIKE 'innodb_max_dirty_pages_pct';
InnoDB的最大写入 IO 能力 SHOW VARIABLES LIKE 'innodb_io_capacity_max';
日志缓冲区大小 SHOW VARIABLES LIKE 'innodb_log_buffer_size';
事务提交时刷新日志的频率 SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
InnoDB IO 容量 SHOW VARIABLES LIKE 'innodb_io_capacity';
缓冲池实例数 SHOW VARIABLES LIKE 'innodb_buffer_pool_instances';

六 监控指标

说明 执行语句
全局状态信息 SHOW GLOBAL STATUS;
当前所有线程的信息 SHOW PROCESSLIST;
当前打开的连接数 SHOW STATUS LIKE 'Threads_connected';
当前线程缓存中有多少空闲线程 SHOW STATUS LIKE 'Threads_cached';
从最近一次服务启动,已创建线程的数量 SHOW STATUS LIKE 'Threads_created';
当前激活的(非睡眠状态)线程数 SHOW STATUS LIKE 'Threads_running';
慢查询次数 SHOW status LIKE 'Slow_queries';
InnoDB 读取的行数 SHOW status LIKE 'Innodb_rows_read';
InnoDB 插入的行数 SHOW status LIKE 'Innodb_rows_inserted';
InnoDB 更新的行数 SHOW status LIKE 'Innodb_rows_updated';
InnoDB 删除的行数 SHOW status LIKE 'Innodb_rows_deleted';

好啦,松哥这里列举了一些常见的指标和命令,公众号后台回复 MySQL指令 可以下载以上脚本。