关于MySQL 数据库故障排查指南

时间:2025-05-09 07:06:44

???? MySQL 数据库故障排查指南

目标:解决常见数据库问题,保障数据安全与系统稳定运行。

一、常见故障类型概览

故障类型 可能原因 排查/解决步骤
无法连接 服务未启动、端口未监听、用户权限不足
  • 查看服务状态:
    systemctl status mysql
  • 检查端口监听:
    netstat -anp | grep 3306
  • 修改配置 my.cnf
    [mysqld]
    bind-address = 0.0.0.0
  • 创建远程连接用户:
    CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
    GRANT ALL ON db.* TO 'user'@'%';
启动失败 配置文件错误、数据目录权限异常、空间不足
  • 查看错误日志路径:
    /var/log/mysql/error.log
  • 初始化数据目录(仅测试环境):
    mysqld --initialize --user=mysql
  • 确保权限正确:
    chown -R mysql:mysql /var/lib/mysql
响应慢/性能问题 缺少索引、慢查询、I/O 压力
  • 开启慢查询日志:
    slow_query_log = 1
    long_query_time = 2
  • 查看执行情况:
    SHOW PROCESSLIST;
  • 分析 SQL:
    EXPLAIN SELECT * FROM table WHERE ...;
主从同步故障 binlog 未开启、网络错误、数据冲突
  • 检查从库状态:
    SHOW SLAVE STATUS\G
  • 跳过错误:
    STOP SLAVE;
    SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    START SLAVE;

二、数据误删与恢复

推荐做法:操作前备份,使用事务或软删除策略。

  • 使用逻辑备份恢复:
    mysql -u root -p dbname < backup.sql
  • 通过 binlog 恢复(已开启):
    mysqlbinlog mysql-bin.000009 > restore.sql
  • 过滤出目标 SQL 后执行:
    mysql -u root -p < restore.sql

三、数据安全与预防建议

  • 定期使用 mysqldump 或 XtraBackup 进行备份。
  • 开启 binlog 日志,方便误删数据恢复。
  • 限制数据库用户权限,避免误操作。
  • 部署监控系统监测慢查询、主从延迟、资源使用等指标。
  • 定期演练恢复流程,确保备份可用。