当前位置: 首页 > news >正文

MySQL 故障排查与生产环境优化笔记

一、基础信息

1. 实验环境

  • 数据库版本:MySQL 8.0

  • 架构:1 台单实例 + 2 台主从复制环境

  • 用途:模拟生产故障、验证优化方案

2. MySQL 逻辑架构(四层)

  1. 连接层

    • 处理客户端连接、授权认证、权限校验

    • 提供线程池、SSL 安全连接

  2. 服务层

    • SQL 接口、查询缓存、SQL 解析与优化

    • 实现跨存储引擎功能(存储过程、函数等)

  3. 存储引擎层

    • 负责数据存储与提取

    • 可按需选择(InnoDB、MyISAM 等)

  4. 数据存储层

    • 数据落地文件系统,与存储引擎交互

二、单实例常见故障 + 原因 + 解决方法(完整版)

  1. ERROR 2002:无法通过 socket 连接 MySQL

    • 原因:数据库未启动、socket 路径错误、防火墙拦截端口

    • 解决:启动 MySQL;开放 3306 端口;检查 my.cnf socket 配置

  2. ERROR 1045:Access denied 密码 / 权限错误

    • 原因:密码错误、用户无权限

    • 解决:

      1. my.cnf [mysqld] 加skip-grant-tables=on

      2. 重启 MySQL

      3. MySQL 8.0 清空密码并重置:

        UPDATE mysql.user SET authentication_string='' WHERE user='root' AND Host='localhost'; FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
      4. 删除 skip-grant-tables,重启

  3. 远程连接 MySQL 极慢

    • 原因:MySQL 反向 DNS 解析耗时

    • 解决:my.cnf 加skip-name-resolve,重启

  4. 表损坏 errno:145

    • 原因:异常关机、磁盘满、文件属组错误

    • 解决:

      • 命令行:myisamchk -r 表文件.MYI

      • 工具:phpMyAdmin → 操作 → 修复表

      • 修复前务必备份

  5. Host 被阻塞(连接错误次数超限)

    • 原因:max_connect_errors默认 10,超限 IP 被拉黑

    • 解决:

      • 临时:mysqladmin flush-hosts

      • 永久:my.cnf 调大max_connect_errors=1000

  6. Too many connections 连接数超限

    • 原因:超过max_connections

    • 解决:

      • 临时:set GLOBAL max_connections=10000;

      • 永久:my.cnf 设置max_connections=10000

  7. 配置文件权限警告 + PID 找不到

    原因:/etc/my.cnf 权限过大 解决:chmod 644 /etc/my.cnf
  8. InnoDB 日志序列号错误(数据文件损坏)

    • 原因:InnoDB 数据文件异常

    • 解决:

      1. my.cnf 加innodb_force_recovery=4

      2. 启动并全量备份数据

      3. 去掉参数,用备份恢复

三、主从复制常见故障 + 原因 + 解决

  1. Slave_IO_Running = NO(server-id 冲突)

    • 原因:主从 server-id 相同

    • 解决:修改从库 server-id,重启,重新同步

  2. Slave_SQL_Running = NO(数据不一致 / 主键冲突)

    • 原因:1007/1032/1062/1452 等错误,主从数据不一致

    • 解决:

      stop slave; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; start slave;

      从库设只读:set global read_only=true;

  3. 中继日志损坏(I/O error reading binlog header)

    原因:relay-bin 日志损坏

解决:重新指定主库 binlog 文件名与 pos 点,重新同步

四、生产环境优化(硬件 + 配置 + SQL)

1. 硬件优化

  • CPU:多路对称 SMP 架构,专用数据库服务器

  • 内存:≥4GB,推荐 32GB 以上

  • 磁盘

    • SAS 15000 转 + RAID0+1

    • 优先 SSD,禁用 RAID5

    • 提升 I/O 是 MySQL 性能关键

2. MySQL 8.0 配置优化(my.cnf 核心参数)

(1)核心性能参数
参数作用推荐值注意
innodb_buffer_pool_sizeInnoDB 数据 / 索引缓存内存 50%~70%(64G→40G)不超物理内存
innodb_log_file_size重做日志大小2G修改需删旧日志重启
max_connections最大连接数1000~10000按并发调整
thread_cache_size连接线程缓存100减少连接开销
tmp_table_size/max_heap_table_size内存临时表128M两者必须相等
(2)查询缓冲区
  • sort_buffer_size:4M

  • join_buffer_size:8M

  • query_cache_type:OFF(8.0 已移除)

(3)日志与监控
  • slow_query_log = ON

  • long_query_time = 1~2 秒

  • binlog_format = ROW(主从一致性高)

  • expire_logs_days = 7~14

  • log_error 指定错误日志路径

(4)InnoDB 高级优化
  • innodb_io_capacity:SSD=2000~4000;HDD=200~400

  • innodb_flush_method = O_DIRECT

  • innodb_thread_concurrency = 0(自适应)

  • innodb_autoinc_lock_mode = 2(高并发插入)

3. SQL 优化(核心方法)

  1. 工具EXPLAIN分析执行计划

  2. 关键字段

    • type:避免 ALL(全表扫描),优先 ref/range

    • key:是否命中索引

    • rows:扫描行数越少越好

    • Extra:避免 Using temporary、Using filesort

  3. 优化步骤

    1. 用 EXPLAIN 查看全表扫描 SQL

    2. 给高频查询字段建索引

    3. 再次 EXPLAIN 验证索引生效

五、完整优化总结

MySQL 优化是三层联动

  1. 硬件层:大内存 + SSD + 合理 RAID,提供性能底座

  2. 配置层:聚焦 InnoDB 缓冲池、日志、I/O、连接数

  3. SQL 层:用 EXPLAIN 诊断,建索引,消除慢查询

http://www.jsqmd.com/news/579646/

相关文章:

  • Z-Image-Turbo LoRA WebUI教程:分辨率1024x1024与768x768显存占用对比
  • 2026年比较好的圆头华司钻尾丝/复合垫钻尾丝/高强钻尾丝/六角头钻尾丝厂家精选合集 - 品牌宣传支持者
  • 持续集成整合:OpenClaw+Qwen3-14B自动化代码审查流水线
  • PyTorch 2.8镜像真实效果:RTX 4090D上Wan2.2-T2V视频生成质量对比评测
  • 告别云端依赖!DeepSeek-R1-Distill-Qwen-1.5B离线运行全攻略
  • 使用IDE(如IntelliJ IDEA)调试StructBERT模型服务端代码
  • 突破语言壁垒:PotPlayer字幕实时翻译插件让跨语言视频观看效率提升300%
  • AI万能分类器效果展示:电商评论情感分类真实案例分享
  • 雯雯的后宫-造相Z-Image-瑜伽女孩惊艳效果展示:新月式体式+柔光原木场景生成实录
  • 忍者像素绘卷微信小程序合规指南:生成内容审核接口对接方案
  • 大学生论文降重技巧:用AI辅助,重复率轻松降到10%以下
  • nli-distilroberta-base惊艳呈现:可视化交互界面实时演示Entailment推理过程
  • Vibe Coding - 深入剖析 Codex Agent Loop
  • 符号下降的范式|Build in Public
  • 月销20万美金!户外“神器”领跑全球爆单季,跨境卖家如何靠本地化内容突围?
  • 南北阁Nanbeige 4.1-3B效果展示:同一问题在不同temperature设置下的风格对比
  • IndexTTS-2-LLM实战应用:如何为你的视频内容快速添加AI配音
  • 零基础玩转OCR文字识别:基于CRNN的轻量级镜像,发票文档一键识别
  • 寻音捉影·侠客行多场景落地:已通过信创适配认证,支持麒麟/统信/UOS操作系统
  • QMCDecode:让macOS用户告别QQ音乐加密格式束缚的音频转换工具
  • Qwen3-VL-8B功能体验:图片上传+文本提问,这个多模态工具真强大
  • Omni-Vision Sanctuary 生成角色设定与场景概念图:游戏与动漫创作实战展示
  • OpenClaw多模型对比:Phi-3-mini-128k-instruct与Qwen在自动化任务中的表现
  • 使用Nunchaku-flux-1-dev自动化生成软件测试报告可视化图表
  • 自动驾驶商业化落地:商业模式与法规体系双轮驱动
  • Kandinsky-5.0-I2V-Lite-5s提示扩写功能评测:开启前后视频丰富度与生成时长对比
  • 大模型---COT思维链,TOT思维树,GOT思维图
  • OpenClaw调试秘籍:Qwen3.5-9B任务失败排查五步法
  • 企微API接口调用规范:如何用代码安全地群发?
  • Air8101:低功耗-WiFi-UI_SoC模组介绍