【数据库相关】mysql数据库巡检
mysql数据库巡检
- 巡检步骤
- **一、基础状态检查**
- **二、服务器资源监控**
- **CPU使用**
- **内存使用**
- **磁盘I/O**
- **网络流量**
- **三、数据库内部健康度**
- **全局状态**
- **慢查询监控**
- **锁与并发**
- **四、存储引擎健康**
- **InnoDB引擎**
- **MyISAM引擎**
- **五、日志与备份**
- **六、安全与权限**
- **七、高可用性检查**
- **主从复制**
- **集群状态(MySQL Group Replication/InnoDB Cluster)**
- **八、自动化监控建议**
- **九、维护与调优建议**
- **十、附录:关键命令速查**
巡检步骤
一、基础状态检查
-
服务可用性
•systemctl status mysql
(检查服务状态)
•telnet <IP> 3306
/nc -zv <IP> 3306
(测试端口连通性)
•SHOW GLOBAL VARIABLES LIKE 'server_id';
(确认实例唯一性) -
版本与配置
•SELECT VERSION();
(核对MySQL版本)
• 检查my.cnf
配置文件(内存分配、线程池、字符集等关键参数)
二、服务器资源监控
CPU使用
• top
/htop
(观察MySQL进程CPU占比)
• mpstat 1 5
(1秒间隔采样5次,分析CPU周期分布)
• 警戒值:持续>70%需排查慢查询或锁争用。
内存使用
• free -m
(查看物理内存)
• ps aux --sort -rss | grep mysql
(MySQL进程内存占用)
• InnoDB缓冲池:SHOW ENGINE INNODB STATUS LIKE 'Innodb_buffer_pool_size';
• 缓冲池使用率>90%时需扩容。
磁盘I/O
• iostat -dx 2
(监控磁盘读写延迟与吞吐量)
• iotop -o
(实时查看I/O密集型进程)
• 重点指标:await
(平均等待时间)<20ms为佳。
网络流量
• netstat -antp | grep ESTABLISHED
(检查 active 连接)
• ss -s
(统计TCP连接数)
• 风险阈值:TIME_WAIT
连接数>1000可能需调整tcp_fin_timeout
。
三、数据库内部健康度
全局状态
• SHOW GLOBAL STATUS;
(关键指标解析):
• Threads_connected
(当前连接数 vs max_connections
)
• Queries_per_second
(QPS趋势)
• Slow_queries
(慢查询数量)
• SHOW ENGINE INNODB STATUS;
(分析事务、锁、死锁):
• 检查Innodb_row_lock_waits
(行级锁等待)
• Innodb_trx
(活跃事务数)
慢查询监控
• 启用慢查询日志:slow_query_log=1
+ long_query_time=2
• 分析工具:pt-query-digest /var/log/mysql/slow.log
• 优化方向:索引缺失、临时表使用、全表扫描。
锁与并发
• SHOW STATUS LIKE 'innodb_lock_waits';
(锁等待事件)
• INFORMATION_SCHEMA.INNODB_TRX
(查看长事务):
• trx_state
为RUNNING
且持续时间过长需终止。
四、存储引擎健康
InnoDB引擎
• 表空间文件检查:
SELECT file_name, tablespace_name,
ROUND((data_length + index_length)/1024/1024, 2) AS size_mb
FROM information_schema.tables
WHERE engine='InnoDB';
• 自适应哈希索引命中率:SHOW ENGINE INNODB STATUS LIKE 'adaptive_hash_index';
• 风险点:ibdata1
文件过大时考虑表空间拆分。
MyISAM引擎
• CHECK TABLE <table_name>
(修复表损坏)
• ANALYZE TABLE
(更新统计信息)
五、日志与备份
-
错误日志
• 检查/var/log/mysql/error.log
中的警告/错误(如主键冲突、连接拒绝)。 -
二进制日志
•SHOW MASTER STATUS;
(确认binlog写入位置)
•PURGE BINARY LOGS BEFORE '<date>';
(清理旧日志) -
备份验证
• 物理备份:xtrabackup --check --backup-dir=/path
• 逻辑备份:mysqlcheck --all-databases --auto-repair
六、安全与权限
• SHOW GRANTS FOR USER '<user>'@'host';
(最小权限原则)
• mysql_secure_installation
(加固配置)
• 授权审计:定期清理过期账户。
七、高可用性检查
主从复制
• SHOW SLAVE STATUS\G
(检查Slave_IO_Running
和Slave_SQL_Running
)
• 延迟监控:SHOW MASTER STATUS
vs SHOW SLAVE STATUS
的Relay_Master_Log_File
和Exec_Master_Log_Pos
。
• 工具推荐:Percona Toolkit的pt-table-checksum
校验数据一致性。
集群状态(MySQL Group Replication/InnoDB Cluster)
• SELECT * FROM mysql.group_replication_members;
(节点健康)
• 集群控制节点(CN)日志:/var/log/mysql/innodb-cluster.log
八、自动化监控建议
-
Prometheus + MySQL Exporter
• 拉取指标:up{job="mysql", instance="localhost"}
(服务状态)
• 关键告警:QPS突增、慢查询率>5%、锁等待超时。 -
自定义脚本
• 示例:监控连接数脚本:mysql -e "SHOW STATUS LIKE 'Threads_connected'" | awk '/Threads_connected/ {print $2}'
-
巡检工具
• Percona Monitoring and Management (PMM)
• Datadog MySQL Integration
九、维护与调优建议
-
定期优化
•OPTIMIZE TABLE
(整理碎片)
•ALTER TABLE ... ENGINE=InnoDB
(迁移MyISAM表) -
参数调优示例
• 根据内存调整InnoDB缓冲池:innodb_buffer_pool_size = (70-80% of total RAM) innodb_log_file_size = 256M
• 限制并发连接:
max_connections = 500 thread_pool_size = 16
-
版本升级
• 评估MySQL 8.0的特性(如窗口函数、资源组管理)对业务的影响。
十、附录:关键命令速查
-- 查看实时线程状态
SHOW PROCESSLIST;
-- 获取InnoDB指标
SHOW ENGINE INNODB STATUS LIKE 'innodb_';
-- 分析慢查询
SELECT * FROM sys.slow_log;
通过以上清单,可系统性排查MySQL性能瓶颈与潜在风险。建议结合自动化工具实现持续监控,并根据业务增长动态调整资源配置。若遇到复杂问题(如死锁风暴、内存泄漏),建议启用innodb_force_recovery
模式并联系专业支持。