数据库管理与高可用-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.1 MyISAM存储引擎)

[3.1.2 InnoDB存储引擎](#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存储引擎

特点

非事务安全

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

存储结构

复制代码
 #### 数据和索引分别存储为 `.frm`(表结构)、`.MYD`(数据)、`.MYI`(索引)文件。
复制代码
 #### 使用非聚簇索引,索引和数据分离存储。
复制代码
 #### **性能特性**

 *

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

 *

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

适用场景

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

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

3.1.2 InnoDB存储引擎

特点

事务安全(ACID 兼容)

复制代码
 #### 支持事务(Transaction),通过 `COMMIT`/`ROLLBACK` 保证数据一致性。
复制代码
 #### 提供行级锁(Row-Level Locking),锁粒度小,并发性能较好。

外键约束(Foreign Key)

复制代码
 #### 支持表间外键关联,保证数据完整性。

存储结构

复制代码
 #### 数据和索引存储在共享表空间(默认)或独立表空间(`innodb_file_per_table=ON`)中。
复制代码
 #### 使用聚簇索引(Clustered Index),数据文件按主键顺序组织,辅助索引指向主键值。

崩溃恢复

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

适用场景

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

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

相关推荐
不羁。。1 小时前
【撸靶笔记】第七关:GET - Dump into outfile - String
数据库·笔记·oracle
yangchanghua1113 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance3 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai3 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白3 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务3 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂6 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.7 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
Bruce_Liuxiaowei9 小时前
MySQL完整重置密码流程(针对 macOS)
mysql
麦麦大数据10 小时前
F003疫情传染病数据可视化vue+flask+mysql
mysql·flask·vue·大屏·传染病