首页主机资讯centos中mysql故障排查指南

centos中mysql故障排查指南

时间2026-01-19 14:06:03发布访客分类主机资讯浏览859
导读:CentOS 上 MySQL 故障排查指南 一 快速定位流程 检查服务状态与启动失败原因 执行:sudo systemctl status mysqld、sudo journalctl -xe | tail -n 100 若失败,优先查...

CentOS 上 MySQL 故障排查指南

一 快速定位流程

  • 检查服务状态与启动失败原因
    • 执行:sudo systemctl status mysqldsudo journalctl -xe | tail -n 100
    • 若失败,优先查看错误日志:sudo tail -n 100 /var/log/mysqld.log
  • 确认监听与端口
    • 执行:sudo ss -tlnp | grep 3306(或 netstat -tlnp | grep 3306
    • 若端口被占用:sudo kill -9 < PID> 或调整 MySQL 端口
  • 配置文件与权限
    • 主配置:/etc/my.cnf/etc/mysql/my.cnf,核对 datadirsocketlog-errorport
    • 数据目录权限:ls -ld /var/lib/mysql,应为 mysql:mysql
  • 资源与系统限制
    • 资源:free -mdf -htop/htop
    • 句柄与内核参数:ulimit -n/etc/security/limits.conf/etc/sysctl.conf
  • 远程连接快速验证
    • 本机:mysql -u root -p -h 127.0.0.1
    • 远程:mysql -u user -p -h < 服务器IP> -P 3306
    • 网络:ping < IP> telnet < IP> 3306nc -vz < IP> 3306

二 常见故障与处理清单

症状 关键检查 处理要点
服务无法启动/启动即停 systemctl status mysqld/var/log/mysqld.log 修正配置语法、修复目录权限为 mysql:mysql、排查磁盘空间与内存、必要时 systemctl reset-failed 后重启
Starting MySQL… PID file 未更新 错误日志、进程残留 确认无残留 mysqld 进程(`ps -ef
ERROR 2002 Can’t connect through socket socket 路径、/var/lib/mysql 权限 确认 socket 配置与客户端一致、修复目录权限、确保服务已启动
远程连不上 bind-addressfirewalldmysql.user 授权 配置 bind-address=0.0.0.0、放行 firewall-cmd --permanent --add-port=3306/tcp & & firewall-cmd --reload、创建 'user'@'%''user'@'网段'FLUSH PRIVILEGES;
ERROR 1045 Access denied 用户名/密码/来源主机 校对密码、检查 SELECT host,user FROM mysql.user; 、为来源主机授权并刷新权限
Host ‘x.x.x.x’ is not allowed 用户 host 字段 新建或调整用户 host 为客户端 IP 或 %(生产建议白名单网段)
表损坏/异常 mysqlcheckmysql_upgrade 执行 mysqlcheck --repair --all-databases;如遇系统表不一致,执行 mysql_upgrade -u root -p
CPU 飙高 SHOW FULL PROCESSLIST; EXPLAIN 定位慢 SQL、补充索引、改写 SQL、必要时限流或优化参数
SELinux 拦截 getenforce/var/log/audit/audit.log 临时 setenforce 0 验证;生产环境使用 semanage/布尔值精细化放行,避免直接关闭 SELinux
插件/库缺失(如 auth_socket) 错误日志 安装缺失插件或改用密码认证,必要时重新初始化数据目录
以上条目覆盖了启动、连接、权限、系统与安全、性能等高频问题及处置路径。

三 日志与诊断命令速查

  • 错误日志:sudo tail -f /var/log/mysqld.log(启动失败、InnoDB 异常、权限问题首选)
  • 慢查询与性能
    • 动态开启:SET GLOBAL slow_query_log=1; SET GLOBAL long_query_time=1;
    • 位置:SHOW VARIABLES LIKE 'slow_query_log_file';
    • 分析:pt-query-digest /var/log/mysql/slow.log
  • 运行态与锁
    • 会话与杀会话:SHOW FULL PROCESSLIST; KILL < ID> ;
    • InnoDB 状态:SHOW ENGINE INNODB STATUS\G;
  • 权限核验:SHOW GRANTS FOR 'app'@'10.0.%';
  • 表与库健康:mysqlcheck --repair --all-databases
  • 连接测试(客户端):mysql -u user -p -h < IP> -P 3306,或 telnet/nc 测端口连通性

四 配置与加固要点

  • 远程访问
    • 配置:/etc/my.cnf[mysqld] bind-address=0.0.0.0
    • 防火墙:firewall-cmd --permanent --add-port=3306/tcp & & firewall-cmd --reload
    • 授权:优先 'app'@'10.0.%' 这类白名单网段,避免滥用 '%'
  • 安全初始化
    • 执行:mysql_secure_installation(禁用匿名、禁止 root 远程、移除 test 库、设置复杂度)
  • 字符集统一
    • 配置:[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
    • 会话:SET NAMES utf8mb4;
  • 基础性能基线(按内存调优)
    • innodb_buffer_pool_size 设为内存的约 50%–80%
    • innodb_log_file_size 设为 128M–512M
    • max_connections 结合并发与内存评估
    • 建议配合 MySQLTuner / Percona Toolkit 持续巡检

五 应急与回滚建议

  • 变更前备份:mysqldump -u root -p --single-transaction --routines --triggers --databases < 库名> > backup.sql
  • 配置回滚:保留 /etc/my.cnf.bak,异常时 cp /etc/my.cnf.bak /etc/my.cnf & & systemctl restart mysqld
  • 数据目录回滚:备份异常 datadir,从备份恢复或采用 mysql_install_db/mysqld --initialize 重建系统表后再导入业务数据
  • 切勿盲目删除 ibdata1mysql 系统库或执行 reset master 等破坏性操作,先定位日志与根因

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos中mysql故障排查指南
本文地址: https://pptw.com/jishu/785796.html
centos下mysql存储引擎选择建议 centos上mysql性能瓶颈分析

游客 回复需填写必要信息