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

一、连接类问题

1. 无法连接数据库
  • 现象:应用或客户端无法连接MySQL服务。

  • 排查步骤

    1. 检查服务状态

      bash

      复制

      下载

      systemctl status mysqld      # 检查MySQL是否运行
      netstat -tuln | grep 3306    # 确认3306端口是否监听
    2. 检查网络问题

      • 防火墙是否放行3306端口:

        bash

        复制

        下载

        iptables -L -n | grep 3306
      • 使用telnetnc测试网络连通性:

        bash

        复制

        下载

        telnet <MySQL_IP> 3306
    3. 检查用户权限

      • 确认用户是否有远程访问权限:

        sql

        复制

        下载

        SELECT Host, User FROM mysql.user;
        GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password';
        FLUSH PRIVILEGES;
    4. 检查配置文件

      • 查看my.cnf中是否绑定到127.0.0.1

        ini

        复制

        下载

        bind-address = 0.0.0.0    # 允许所有IP连接

二、性能类问题

1. 查询缓慢
  • 排查步骤

    1. 开启慢查询日志

      sql

      复制

      下载

      SET GLOBAL slow_query_log = 'ON';
      SET GLOBAL long_query_time = 2;  -- 定义慢查询阈值(秒)
    2. 分析慢查询

      • 查看慢查询日志文件路径:

        sql

        复制

        下载

        SHOW VARIABLES LIKE 'slow_query_log_file';
      • 使用mysqldumpslow工具分析日志:

        bash

        复制

        下载

        mysqldumpslow -s t /var/log/mysql/slow.log
    3. 使用EXPLAIN分析SQL执行计划

      sql

      复制

      下载

      EXPLAIN SELECT * FROM table WHERE condition;
    4. 检查索引缺失

      • 查看表索引状态:

        sql

        复制

        下载

        SHOW INDEX FROM table_name;
      • 使用OPTIMIZE TABLE优化表:

        sql

        复制

        下载

        OPTIMIZE TABLE table_name;
2. 锁竞争或死锁
  • 排查步骤

    1. 查看当前锁状态

      sql

      复制

      下载

      SHOW ENGINE INNODB STATUS;  -- 查看事务和锁信息
      SHOW OPEN TABLES WHERE In_use > 0;
    2. 杀死阻塞进程

      sql

      复制

      下载

      SHOW PROCESSLIST;          -- 找到阻塞的进程ID
      KILL <process_id>;
    3. 设置锁超时(避免长事务):

      sql

      复制

      下载

      SET GLOBAL innodb_lock_wait_timeout = 30;  -- 默认50秒

三、数据一致性问题

1. 表损坏或数据丢失
  • 排查步骤

    1. 检查表状态

      sql

      复制

      下载

      CHECK TABLE table_name;    -- 检查表是否损坏
    2. 修复表

      sql

      复制

      下载

      REPAIR TABLE table_name;   -- 仅对MyISAM表有效
    3. 使用innodb_force_recovery(InnoDB引擎):

      • 修改my.cnf并重启:

        ini

        复制

        下载

        innodb_force_recovery = 1  -- 从1到6逐步尝试(6为最高修复级别)
2. 主从复制错误
  • 排查步骤

    1. 查看复制状态

      sql

      复制

      下载

      SHOW SLAVE STATUS\G  -- 关注Slave_IO_Running和Slave_SQL_Running
    2. 跳过指定错误(谨慎操作):

      sql

      复制

      下载

      STOP SLAVE;
      SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;  -- 跳过1个错误
      START SLAVE;
    3. 重新同步数据

      • 使用mysqldump重新导出主库数据并导入从库。


四、日志与错误分析

1. 错误日志分析
  • 查看错误日志路径

    sql

    复制

    下载

    SHOW VARIABLES LIKE 'log_error';
  • 常见错误码

    • 1045:权限错误 → 检查用户密码和主机白名单。

    • 2003:连接超时 → 检查网络和防火墙。

    • 1213:死锁 → 优化事务逻辑。

2. 二进制日志(Binlog)恢复
  • 恢复误删数据

    bash

    复制

    下载

    mysqlbinlog --start-datetime="2023-10-01 00:00:00" /var/log/mysql/binlog.000001 | mysql -u root -p

五、资源瓶颈排查

1. CPU/内存过高
  • 排查步骤

    1. 查看系统资源

      bash

      复制

      下载

      top -c          # 查看进程CPU/内存占用
      vmstat 2 5      # 监控系统资源
    2. 优化MySQL配置

      • 调整innodb_buffer_pool_size(建议为物理内存的70%)。

      • 减少并发连接数(max_connections)。


六、备份与恢复

1. 定期备份
  • 物理备份

    bash

    复制

    下载

    innobackupex --user=root --password=xxx /backup/
  • 逻辑备份

    bash

    复制

    下载

    mysqldump -u root -p --all-databases > backup.sql
2. 恢复数据
  • 全量恢复

    bash

    复制

    下载

    mysql -u root -p < backup.sql

七、高级故障排查工具

  • Percona Toolkit:分析慢查询、死锁和索引问题。

  • pt-query-digest:分析慢查询日志。

  • mytop:实时监控MySQL线程和查询。


八、预防措施

  1. 监控告警:使用Prometheus + Grafana监控MySQL状态。

  2. 定期优化:每周执行OPTIMIZE TABLEANALYZE TABLE

  3. 权限最小化:避免使用root账号运行应用。

  4. 测试备份恢复流程:确保备份文件可恢复。


通过以上步骤,可系统化定位并解决MySQL的常见故障。对于复杂问题,建议结合日志、监控工具和数据库快照进一步分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/904816.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/904816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github 热点项目 Cursor开源代替,AI代理+可视化编程!支持本地部署的隐私友好型开发神器。

Void编辑器今天必须拥有姓名&#xff01;作为总星数近1.5万的顶流开源工具&#xff0c;它用三大绝活圈粉无数&#xff1a;① 隐私党狂喜&#xff01;所有AI对话直连模型商&#xff0c;你的代码数据绝不留在别人服务器&#xff1b;② 自带时光机功能&#xff0c;AI修改代码时自动…

Quorum协议原理与应用详解

一、Quorum 协议核心原理 基本定义 Quorum 是一种基于 读写投票机制 的分布式一致性协议&#xff0c;通过权衡一致性&#xff08;C&#xff09;与可用性&#xff08;A&#xff09;实现数据冗余和最终一致性。其核心规则为&#xff1a; W&#xff08;写成功副本数&#xff09; …

PyTorch_自动微分模块

自动微分 (Autograd) 模块对张量做了进一步的封装&#xff0c;具有自动求导功能。自动微分模块是构成神经网络训练的必要模块&#xff0c;在神经网络的反向传播过程中&#xff0c;Autograd 模块基于正向计算的结果对当前的参数进行微分计算&#xff0c;从而实现网络权重参数的更…

34.笔记1

今天&#xff0c;我们回顾回顾曾经的知识。 1.二分 还记得当初的二分吗&#xff1f; 1.一开始的二分 就像下面这个故事&#xff1a; 有一只老鼠&#xff0c;躲在10个大瓷瓶后面。你的任务就是抓住这只老鼠&#xff0c;但在抓的过程会导致你选择的大瓷瓶成为分子碎片。 如…

云原生环境下服务治理体系的构建与落地实践

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:服务治理正在从“框架能力”向“平台能力”演进 随着微服务架构逐步成熟,越来越多的企业开始向云原生迁移,Kubernetes、Service Mesh、Serverless 等新兴技术不断推动系统的基础设施演进。 与…

读取传感器发来的1Byte数据:分低位先行和高位先行的处理方法

目录 一、写在前面 二、伪代码的逻辑实现 1、从高位到低位 2、从低位到高位 一、写在前面 在接收数据之前我们需要事先知道数据的发送规则&#xff0c;是高位先行还是低位先行&#xff0c;并按照规则接收数据&#xff0c;否则收到的数据很可能是错的 高位先行&#xff1a;…

C++ - 函数重载

概念 函数重载允许在同一作用域内定义多个同名函数&#xff0c;但这些函数的参数要满足&#xff1a;参数类型、参数个数&#xff0c;参数顺序不同&#xff08;满足三个中的一个&#xff09;&#xff0c;才能使用函数重载 #include <iostream> using namespace std;// 1…

EEG设备的「减法哲学」:Mentalab Explore如何用8通道重构高质量脑电信号?

在脑电图&#xff08;EEG&#xff09;研究领域&#xff0c;选择适配的工具是推动研究进展的重要步骤。Mentalab Explore 以其便捷性和高效性&#xff0c;成为该领域的一项创新性解决方案。研究者仅用较少的 EEG 通道即可完成实验&#xff0c;并且能够确保数据的高质量。其搭载的…

Vue3 路由配置与跳转传参完整指南

目录 一、路由配置 1. 基本路由配置 2. 动态路由配置 3. 可选参数配置 二、路由跳转与传参 1. 声明式导航 (模板中) 2. 编程式导航 (JavaScript中) 三、参数接收 1. 接收动态路由参数 2. 接收查询参数 3. 监听参数变化 四、高级用法 1. 路由元信息 2. 路由守卫控…

Vibe Coding: 优点与缺点

如果你最近在开发圈子里,你很可能听说过这个新趋势"vibe coding"(氛围编程)。 我只能说我对此感受复杂。以下是原因。 优势 在构建新项目时,靠着氛围编程达到成功感觉很自由!但对于遗留代码来说情况就不同了,尽管也不是不可能。 实时反馈和快速迭代 Cursor(…

7:点云处理—眼在手外标定

1.制作模板 dev_update_off ()dev_set_color (green)dev_close_window ()WindowHeight:740WindowWidth :740dev_open_window(0, 0, 540, 540, black, WindowHandle)Instruction : [Rotate: Left button,Zoom: Shift left button,Move: Ctrl left button]read_object_mod…

AI赋能智能客服革新:R²AIN SUITE 如何破解医疗行业服务难题?

一、什么是智能客服&#xff1f; 智能客服是基于人工智能技术&#xff08;AI&#xff09;的客户服务解决方案&#xff0c;通过自然语言处理&#xff08;NLP&#xff09;、机器学习、大模型等核心技术&#xff0c;实现多模态交互、自动化应答、知识库管理、流程优化等功能。其核…

(undone) MIT6.S081 Lec17 VM for APP 学习笔记

url: https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/lec17-virtual-memory-for-applications-frans/17.1-ying-yong-cheng-xu-shi-yong-xu-ni-nei-cun-suo-xu-yao-de-te-xing 17.1 应用程序使用虚拟内存所需要的特性 今天的话题是用户应用程序使用的虚拟内存…

使用 OpenSSL 吊销 Kubernetes(k8s)的 kubeconfig 里的用户证书

一.用 OpenSSL 依据已有的自签名 CA 注销签发的证书的步骤 1. 准备工作 你得有自签名 CA 的私钥&#xff08;通常是 .key 文件&#xff09;、CA 证书&#xff08;通常是 .crt 文件&#xff09;以及证书吊销列表&#xff08;CRL&#xff09;文件。若还没有 CRL 文件&#xff0c…

循环卷积(Circular Convolutions)

最近看论文发现了一个叫循环卷积的东西&#xff0c;这里学习并记录一下&#xff0c;方便以后查阅。 循环卷积&#xff08;Circular Convolutions&#xff09; 循环卷积&#xff08;Circular Convolutions&#xff09;1. 什么是循环卷积2. 数学定义关键点 3. 循环卷积与线性卷积…

【计算机视觉】Car-Plate-Detection-OpenCV-TesseractOCR:车牌检测与识别

Car-Plate-Detection-OpenCV-TesseractOCR&#xff1a;车牌检测与识别技术深度解析 在计算机视觉领域&#xff0c;车牌检测与识别&#xff08;License Plate Detection and Recognition, LPDR&#xff09;是一个极具实用价值的研究方向&#xff0c;广泛应用于智能交通系统、安…

MATLAB制作柱状图与条图:数据可视化的基础利器

一、什么是柱状图与条图&#xff1f; 柱状图和条图都是用来表示分类数据的常见图表形式&#xff0c;它们的核心目的是通过矩形的长度来比较各类别的数值大小。条图其实就是“横着的柱状图”&#xff0c;它们的本质是一样的&#xff1a;用矩形的长度表示数值大小&#xff0c;不同…

[计算机科学#13]:算法

【核知坊】&#xff1a;释放青春想象&#xff0c;码动全新视野。 我们希望使用精简的信息传达知识的骨架&#xff0c;启发创造者开启创造之路&#xff01;&#xff01;&#xff01; 内容摘要&#xff1a; 算法是解决问题的系统化步骤&#xff0c;不同的问题…

HTTP传输大文件的方法、连接管理以及重定向

目录 1. HTTP传输大文件的方法 1.1. 数据压缩 1.2. 分块传输 1.3. 范围请求 1.4. 多段数据 2. HTTP的连接管理 2.1. 短连接 2.2. 长连接 2.3. 队头阻塞 3. HTTP的重定向和跳转 3.1. 重定向的过程 3.2. 重定向状态码 3.3. 重定向的应用场景 3.4. 重定向的相关问题…

PostgreSQL 18 Beta 1发布,有哪些功能亮点?

PostgreSQL 全球开发组于 2025 年 5 月 8 日发布了第一个 PostgreSQL 18 Beta 版本&#xff0c;现已开放下载。虽然细节可能会有所改变&#xff0c;但是该版本包含了 PostgreSQL 18 最终正式版中所有新功能的预览。 以下是 PostgreSQL 18 引入的部分关键功能亮点。 性能优化 …