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

数据库管理与高可用-MySQL故障排查与生产环境优化

目录

#1.1MySQL单案例故障排查

  1.1.1MySQL常见的故障排查

  1.1.2MySQL主从故障排查

#2.1MySQL优化

  2.1.1硬件方面的优化

  2.1.2进程方面的优化

#3.1MySQL存储引擎

  3.1.1 MyISAM存储引擎

  3.1.2 InnoDB存储引擎


1.1MySQL单案例故障排查

  1.1.1MySQL常见的故障排查

 (1)故障现象1

问题解析:以上情况一般都是数据库未启动,mysql配置文件未指定socket文件或者数据库端口被防火墙拦截导致。

解决方法:启动数据库或者防火墙开放数据库监听端口。

   (2)故障现象2

问题分析:密码不正确或者没有权限访问。

解决方法:修改my.cnf主配置文件,在[mysqld]下添加skip-grant-tables=on,重启数据库。最后修改密码命令。

密码不正确:

mysql>update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';

mysql>flush privileges;

mysql>alter user 'root'@'localhost' identified by '123456';

  (3)故障现象3

          在使用远程连接数据库时偶尔会发生远程连接数据库很慢的问题。

问题解析:如果MySQL主机查询DNS很慢或者是很多客户端主机时会导致连接很慢,由于开发机器是不能够连接外网的,在进行MySQL连接时,DNS解析式不可能完成的,从而也就明白了为什么连接那么慢了。

解决方法:修改my.cnf主配置文件,在[mysqld]下添加skip-name-resolve,重启数据库可以解决。注意在以后授权里面不能再使用主机名授权。

   (4)故障现象4

Warning: World - writable config file '/etc/my.cnf' is ignored
ERROR! MySQL is running but PID file could not be found

问题分析:MySQL的配置文件/etc/my.cnf权限不对。

解决方法:chmod 644 /etc/my.cnf

1.1.2MySQL主从故障排查

  (1)故障现象1

从库的 Slave_IO_Running 为 NO
The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

问题分析:主库和从库的server-id值一样。

解决方法:修改从库的server-id的值,修改为何主库不一样。修改完后重启,再同步即可。

 (2)故障现象2

从库的Slave_IO_Running为NO

问题分析:造成从库线程为NO的原因会很多,主要原因是主键冲突或者主库删除或更新数据,从库找不到记录,数据被修改导致。通常状态码报错有1007,1032,1062,1452.

解决方法:设置用户权限,设置从库只读权限。

set global read_only=true;

 (3)故障现象3

Error initializing relay log position: I/O error reading the header from the binary log

问题分析:从库的中继日志relay-bin损坏。

解决方法:手工修复,重新找到同步的binlog和pos点,然后重新同步即可。

mysql>chan gemaster to master_log_file='mysql-bin.xxx,master_log_pos=xxx';

2.1MySQL优化

 2.1.1硬件方面的优化

   (1)关于CPU

        针对 x86、ARM 等不同 CPU 架构,启用对应的优化选项(如CONFIG_X86_64CONFIG_ARM64),开启硬件特性支持(如 AVX、NEON 指令集加速)。

   (2)关于内存

     内存优化的核心目标是提升内存利用率、降低内存泄漏风险、减少内存访问延迟,并确保进程间内存隔离与安全性。

    (3)关于磁盘

     磁盘优化的核心目标是提升 I/O 吞吐量、降低访问延迟、减少磁盘磨损,并保障数据可靠性与一致性。

2.1.2进程方面的优化

   进程优化的核心目标是提升资源利用率、降低进程间竞争、避免资源泄漏,并确保关键进程的稳定性与优先级。

3.1MySQL存储引擎

       MySQL 的存储引擎设计体现了 “按需选择” 的理念:InnoDB 凭借事务和行级锁成为主流选择,而 MyISAM、 等引擎则在特定场景下提供补充能力。实际应用中需根据业务需求、数据规模和性能目标灵活选择,或通过混合引擎(如 InnoDB 主表 + Memory 缓存表)优化整体架构。

 3.1.1MyISAM存储引擎

     特点

  1. 非事务安全

    • 不支持事务和行级锁,仅支持表级锁(Table-Level Locking),并发性能较差。

  2. 存储结构

    • 数据和索引分别存储为 .frm(表结构)、.MYD(数据)、.MYI(索引)文件。

    • 使用非聚簇索引,索引和数据分离存储。

    • 性能特性

      • 读取速度快,插入数据时锁表时间短(适合批量插入)。

      • 支持快速计数(COUNT(*) 直接读取元数据)。

适用场景

       读多写少、无需事务的场景(如日志系统、统计报表)。

        对存储空间敏感的场景(MyISAM 表文件更小)。

3.1.2 InnoDB存储引擎

  特点

  1. 事务安全(ACID 兼容)

    • 支持事务(Transaction),通过 COMMIT/ROLLBACK 保证数据一致性。

    • 提供行级锁(Row-Level Locking),锁粒度小,并发性能较好。

  2. 外键约束(Foreign Key)

    • 支持表间外键关联,保证数据完整性。

  3. 存储结构

    • 数据和索引存储在共享表空间(默认)或独立表空间(innodb_file_per_table=ON)中。

    • 使用聚簇索引(Clustered Index),数据文件按主键顺序组织,辅助索引指向主键值。

  4. 崩溃恢复

    • 支持重做日志(Redo Log)和回滚日志(Undo Log),崩溃后可快速恢复数据。

适用场景

    高并发读写、需要事务支持的场景(如电商订单、用户管理系统)。

    数据一致性要求高的业务(如金融、交易系统)。

http://www.xdnf.cn/news/13193.html

相关文章:

  • 一种新的编程语言,这种新编程语言叫做『人类语言』
  • 基于大模型预测原发性急性闭角型青光眼的技术方案研究大纲
  • Django RBAC项目后端实战 - 03 DRF权限控制实现
  • 无菌药厂通信架构升级:MODBUS TCP转CANopen技术的精准控制应用
  • 云原生时代的系统设计:架构转型的战略支点
  • Electron简介(附电子书学习资料)
  • 什么是日内融?日内融交易系统开发全解析
  • 第三方检测:软件渗透测试
  • 视觉slam--框架
  • 如何将联系人从 iPhone 转移到 Android
  • linux中如何在日志里面检索nowStage不等于1的数据的指令
  • 视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
  • Java解析前端传来的Unix时间戳
  • Vue 自动导入函数和变量插件 unplugin-auto-import
  • MySQL故障排查、生产环境优化与存储引擎MyISAM和InnoDB
  • 什么是TRS收益互换?金融创新架构下的交易系统开发与实践
  • MacBook pro 修改Homebrew 为中国源
  • [Java恶补day20] 54. 螺旋矩阵
  • 互联网大厂Java求职面试:云原生与微服务架构的深度探讨
  • python基础语法Ⅰ
  • 基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
  • el-switch文字内置
  • 配置 macOS 上的 Ruby 开发环境
  • stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)
  • 加密通信 + 行为分析:运营商行业安全防御体系重构
  • glb/gltf格式批量转换fbx/obj,材质贴图在,批量转换stl/dae等其他格式,无需一个个打开
  • 国产化Excel处理组件Spire.XLS教程:用 Java 获取所有 Excel 工作表名称(图文详解)
  • 【动态规划 数论】P9759 [COCI 2022/2023 #3] Bomboni|普及+
  • 十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
  • 大模型智能体核心技术:CoT与ReAct深度解析