mysql故障排查

news/2024/7/8 6:01:40

MySQL是目前企业最常见的数据库之一日常维护管理的过程中,会遇到很多故障汇总了常见的故障,MySQL默认配置无法满足高性能要求

一 MySQL逻辑架构图

  • 客户端和连接服务
  • 核心服务功能
  • 存储擎层
  • 数据存储层

 二 MySQL单实例常见故障

故障1

ERROR 2002 (HY000): Can't connect to local MySQL server through socket'/data/mysql/mysql.sock' (2)

问题分析

数据库未启动或者数据库端口被防火墙拦截

解决方法

启动数据库或者防火墙开放数据库监听端口

故障2

ERROR 1045 (28000): Access denied for user 'root@ocalhost' (using password:NO)

问题分析

密码不正确或者没有权限访问

解决方法

修改my.cnf主配置文件,在[mysqld]下添加skip-grant-tables

①update更新user表authentication string字段

②重新授权

故障3

故障现象

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

问题分析

DNS解析慢、客户端连接过多

解决方法

修改my.cnf主配置文件(增加skip-name-resolve参数数据库授权禁止使用主机名

故障4

Can't open file: 'xxx, forums.MYI.(errno: 145)

问题分析

服务器非正常关机,数据库所在空间已满,或一些其它未知的原因对数据库表造成了损坏

因拷贝数据库导致文件的属组发生变化

解决方法

修复数据表(myisamchk、phpMyAdmin)

修改文件的属组

故障5

故障现象

ERROR 1129 (HY000): Host xxx.xxx.xxx.xxx is blocked because of manyconnection

errors;unblock with 'mysgladmin flush-hosts'

问题分析

超出最大连接错误数量限制

解决方法

①清除缓存(flush-hosts关键字)

②修改mysql配置文件 (max_connect errors=1000)

故障6

故障现象

Too many connections

问题分析

连接数超出MySQL的最大连接限制

解决方法

①修改MySQL配置文件 (max connections = 10000)

②临时修改参数

set GLOBAL max connections=10000;

故障 7

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 /et/my.cnf

故障8

故障现象

InnoDB: Error: page 14178 log sequence number 29455369832lnnoDB: is in the future! Current

system log sequence number 29455369832

问题分析

innodb数据文件损坏

解决方法

修改my.cnf配置文件(innodb_force_recovery=4)启动数据库后备份数据文件

利用备份文件恢复数据

三MySQL主从环境常见故障

故障一

故障现象

从库的Slave_IO_Running为NO

The slave l/0 thread stops because master and slave have equal MySQL serverids: 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 senseplease check the manual before using it).

问题分析:

主库和从库的server-id值一样

解决方法

①修改从库的server-id的值,修改为和主库不一样

②重新启动数据库并再次同步

故障现象 2

从库的 Slave_IO_Running 为 NO

问题分析:

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

解决方法一:

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

解决方法二:

设置用户权限,设置从库只读权限

set global read_only=true;

故障 3

故障现象

Error initializing relay log position: l/O error reading the header from the binarylog

问题分析

从库的中继日志relay-bin损坏

解决方法

手工修复,重新找到同步的binlog和pos点,然后重新同步即可mysql> CHANGE MASTER TO

MASTER LOG FILE='mysql-bin.xxx,MASTER LOG POS=xxx;

四 MySQL优化

案例1

硬件优化

CPU:推荐使用S.MP架构的多路对称

CPU内存:4GB以上的物理

内存磁盘:RAID-0+1磁盘阵列或固态

硬盘

MySQL配置文件优化

调整配置项

案例 2

SQL优化

尽量使用索引进行查询

优化分页GROUP BY优化

MySQL架构优化

架构选择:主从、主主、一主多从、多主多从 

调优思路:

  • 分库分表思路和优劣
  • my.cnf 内参数的优化
  • MySQL服务优化--内存的使用,磁盘的使用
  • 操作系统的优化--内核、TCP连接数量
  • 磁盘 IO优化
  • 数据的应用--怎样取数据,SQL语句的优化
  • 数据库设计与规划--以后再修改很麻烦,估计数据量,使用什么存储引擎
  • 硬件优化
硬件优化

CPU—— 64 位、高主频、高缓存,高并行处理能力内存——大内存、主频高,尽量不要用 SWAP

硬盘——15000转、RAID5、raid10 。 SSD

网络——标配的千兆网卡,10G网卡,bond0,MySQL服务器尽可能和使用它的web服务器在同一局域网内,尽量避      免诸如防火墙策略等不必要的开销

 数据库设计与规划(架构上的优化)

纵向拆解: 专机专用

例:现在公司一台服务器同时负责 web、ftp、数据库等多个角色。 R720 dell 内存 :768G

纵向拆解后就是:数据库服务器专机专用,避免额外的服务可能导致的性能下降和不稳定性。

横向拆解: 主从同步、负载均衡、高可用性集群,当单个 MySQL 数据库无法满足日益增加的

需求时,可以考虑在数据库这个逻辑层面增加多台服务器,以达到稳定、高效的效果。

查询优化

建表时表结构要合理,每个表不宜过大;在任何情况下均应使用最精确的类型。例如,如果ID列用int是一个好主意,    而用text类型则是个蠢办法;TIME列酌情使用DATE或者DATETIME。

索引,建立合适的索引。

查询时尽量减少逻辑运算(与运算、或运算、大于小于某值的运算);

减少不当的查询语句,不要查询应用中不需要的列,比如说 select * from  等操作。

减小事务包的大小;

将多个小的查询适当合并成一个大的查询,减少每次建立/关闭查询时的开销;

某些过于复杂的查询拆解成多个小查询,和上一条恰好相反

建立和优化存储过程来代替大量的外部程序交互。

磁盘 IO 规划,IO 相关的技术

raid 技术:raid0或raid10

SSD:

15000转、RAID5、raid10 。 SSD swap 分区:最好使用 raid0 或 SSD


http://lihuaxi.xjx100.cn/news/2139374.html

相关文章

【CANoe】CAPL_E2E测试-验证报文中的CRC值是否正确

文章目录 一、背景二、CRC校验算法实现_dll制作三、CAPL脚本编写四、测试结果4.1、Write输出窗口4.2、测试报告截图一、背景 在嵌入式软件开发过程中,对于一些报文,需要实现安全发送与安全接收,这就涉及到CRC和RollingCounter。整车和MCU通讯的报文需要对方进行校验才能正确…

如何重置woocommerce,如何批量删除woocommerce产品

默认情况下当我们在后台删除Woocommerce插件的时候,woocommerce 的数据并不会从数据库中自动清除。 这个时候,为了能清除数据库里的数据,我们可以在wp-config.php 文件里添加如下代码: define( WC_REMOVE_ALL_DATA, true ); 添…

ubuntu20.04执行sudo apt-get update失败的解决方法

参考:执行sudo apt-get update失败的解决方案 1、换源型错误 (1)编辑/etc/apt/sources.list文件 在命令行中输入: sudo vim /etc/apt/sources.list 或者 sudo gedit /etc/apt/sources.list 推荐使用后者 (2&#xf…

基于Java,SpringBoot,Vue和UniApp音乐APP安卓软件设计

摘要 本项目通过结合Java、SpringBoot、Vue和UniApp多种技术栈,设计并实现了一个跨平台的音乐APP。后端服务基于SpringBoot框架构建,利用其快速开发和简便部署的特性,实现了包括用户认证、歌曲管理、播放列表和音乐推荐等核心功能。RESTful …

golang语言系列:SOLID、YAGNI、KISS等设计原则

云原生学习路线导航页(持续更新中) 本文是 golang语言系列 文章,主要对编程通用技能 SOLID、YAGNI、KISS等设计原则 进行学习 1.SOLID设计原则 S:SRP,单一职责原则O:OCP,开闭原则L:…

WPF学习笔记-FlowDocument实现表格单元格垂直居中以及边框设置

文章目录 概述一、基本方案1.1 添加Grid1.2 添加列1.3 添加行1.4 添加Grid的时候同时添加行和列1.5 添加元素1.6 获取指定单元格的元素1.7 添加TextBlock元素1.7.1 直接添加字符串1.7.2 添加Paragraph1.8 获取文本内容1.9 获取元素二、其他操作2.1 设置边框2.2 设置隔行颜色2.3…

php反序列化漏洞——phar反序列化漏洞

一.什么是phar文件 类比java语言 JAR是开发Java程序一个应用,包括所有的可执行、可访问的文件,都打包进了一个JAR文件里使得部署过程十分简单。 PHAR("Php ARchive")是PHP里类似于JAR的一种打包文件 对于PHP 5.3 或更高版本,Ph…

【ELK+Kafka+filebeat分布式日志收集】部署filebeat和Kibana(三)

filebeat下载 官网:https://www.elastic.co/cn/downloads/beats/filebeat 或者 cd /opt wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.1-linux-x86_64.tar.gz依次执行如下命令