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

MYSQL故障排查和环境优化

一、MySQL故障排查

1. 单实例常见故障

(1)连接失败类问题
  • ERROR 2002 (HY000): Can't connect to MySQL server
    原因:MySQL未启动或端口被防火墙拦截。
    解决:启动MySQL服务(systemctl start mysqld)或开放端口(如3306)367。

  • ERROR 1045 (28000): Access denied
    原因:密码错误或权限不足。
    解决:修改配置文件添加skip-grant-tables,重启后重置密码并授权367。

(2)性能与资源类问题
  • Too many connections
    原因:连接数超出max_connections限制。
    解决:临时调整(SET GLOBAL max_connections=10000;)或永久修改配置文件36。

  • Host blocked due to connection errors
    原因:同一IP频繁连接失败超过max_connect_errors阈值。
    解决:执行mysqladmin flush-hosts或增大max_connect_errors值36。

(3)数据损坏与表修复
  • 表文件损坏(如MYI文件错误)
    原因:非正常关机或磁盘空间不足。
    解决:使用myisamchk -r修复或通过phpMyAdmin修复表36。

  • InnoDB数据文件损坏
    解决:设置innodb_force_recovery=4启动数据库,备份后重建表37。

2. 主从复制故障

  • Slave_IO_Running为NO
    原因:主从server-id重复或网络中断。
    解决:修改从库server-id并重启同步367。

  • Slave_SQL_Running为NO(主键冲突)
    解决:跳过错误(SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;)或设置从库只读36。

  • 中继日志损坏
    解决:重新指定同步点(CHANGE MASTER TO MASTER_LOG_FILE='...', MASTER_LOG_POS=...;)36。


二、生产环境优化策略

1. 硬件与存储优化

  • CPU:选择多核高主频处理器(如Intel Xeon),支持高并发处理17。

  • 内存:建议至少4GB,优先分配大内存给innodb_buffer_pool_size(占物理内存70%~80%)157。

  • 磁盘:使用SSD或RAID 10阵列,避免RAID 5(写性能差)157。

2. 查询与索引优化

  • 索引设计

    • 选择性高列优先:如用户ID而非性别字段25。

    • 覆盖索引:避免回表查询(如SELECT name FROM users WHERE name='Alice')25。

    • 复合索引:遵循最左前缀原则(如索引(col1,col2)需条件包含col1)25。

  • SQL语句优化

    • 避免全表扫描:使用EXPLAIN检查执行计划29。

    • 分页优化:用WHERE id > 1000 LIMIT 10替代LIMIT 1000,1025。

    • 批量操作:合并INSERT语句减少事务开销25。

3. 配置参数调优

  • 缓冲池innodb_buffer_pool_size设置为物理内存的70%~80%57。

  • 连接管理:调整max_connections(默认151)和wait_timeout(建议120秒)57。

  • 日志配置:开启慢查询日志(slow_query_log=ON)并设置合理阈值(long_query_time=1)25。

4. 架构与维护优化

  • 读写分离:通过主从复制分离读/写流量,使用中间件(如ProxySQL)1410。

  • 分库分表:按业务拆分大表,减少单表压力14。

  • 定期维护

    • 使用OPTIMIZE TABLE减少碎片57。

    • 监控工具:Percona Monitoring或Prometheus+Grafana10。


三、高级技巧与注意事项

  • 关闭DNS解析:在配置中添加skip-name-resolve提升连接速度(需改用IP授权)8。

  • 磁盘调度策略:设置为deadlinenoop(SSD适用)以提高I/O效率8。

  • 网络优化:调整TCP缓冲队列(net.ipv4.tcp_max_syn_backlog)和随机端口范围8。

http://www.lryc.cn/news/2384767.html

相关文章:

  • vivado fpga程序固化
  • OpenCV CUDA模块图像特征检测与描述------图像中快速检测特征点类cv::cuda::FastFeatureDetector
  • SpringMVC(结合源码浅析工作流程)
  • 学习STC51单片机13(芯片为STC89C52RC)
  • Claude 4 系列 Opus 4 与 Sonnet 4正式发布:Claude 4新特性都有哪些?
  • Swagger API 未授权访问漏洞【原理扫描】修复
  • 深度“求索”:DeepSeek+Dify构建个人知识库
  • 基于R语言的空间异质性数据分析技术
  • C++:动态刷新打印内容
  • 网络学习-TCP协议(七)
  • 基于微信小程序的高校校园微活动管理系统设计与实现(源码+定制+开发)高校微信小程序校园活动发布与互动平台开发 面向大学生群体的校园活动移动平台设计与实现
  • Python 项目中安装 OpenAI 库的详细指南
  • 云计算与大数据进阶 | 27、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(上)
  • 使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第二部分)
  • IvorySQL-WASM:免安装的数据库探索之旅
  • 飞牛fnNAS远程映射盘符
  • Java设计模式:探索编程背后的哲学
  • 会话管理有哪些
  • 《C++20新特性全解析:模块、协程与概念(Concepts)》
  • Docker部署OpenSearch集群
  • 三宽用到的网络类型
  • 【AS32X601驱动系列教程】PLIC_中断应用详解
  • 单目视觉测量及双目视觉测量
  • python学习打卡day34
  • 掩码与网关是什么?
  • leetcode-快慢指针系列
  • JAVA05基本数据类型和包装类的转换,转换成其他数据类型,包装类与字符串的转换+学生类的定义实例
  • Python打卡训练营学习记录Day34
  • 动手学习深度学习V1.1 chapter2 (2.1-2.2)
  • 数据结构(6)线性表-队列