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

一、MySQL单实例常见故障

1.逻辑架构图

  • MySQL逻辑架构图
  • 客户端和连接服务
  • 核心服务功能
  • 存储引擎层
  • 数据存储层

2.故障一

故障现象

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

问题分析

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

解决方法

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

3.故障二

故障现象

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

问题分析

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

解决办法

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

  • update更新user表authentication_string字段
  • 重新授权

4.故障三

故障现象

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

问题分析

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

解决方法

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

5.故障四

故障现象

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

问题分析

  • 服务器非正常关机,数据库所在空间已满,或一些其他未知的原因,对数据库表造成了损坏
  • 因拷贝数据库导致文件的属组发生变化

解决方法

  • 修复数据表(myisamchk、phpmyadmin)
  • 修改文件的属组

6.故障五

故障现象

ERROR 1129 (HY000): Host 'xxx.xxx.xxx.xxx' is blocked because of manyconnection errors; unblock with 'mysqladmin flush-hosts'

问题分析

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

解决方法

  • 清楚缓存(flush-hosts关键词)
  • 修改mysql配置文件(max_connect_errors=1000)

7.故障六

故障现象

TOO many connections

问题分析

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

解决方法

  • 临时MySQL配置文件(max_connection=10000)
  • 临时修改参数
set GLOBAL max_connections=10000;

8.故障七

故障现象

Warning:World-writable config file /etc/my.cnf is ignoredERROR! 
MySQL is running but PiD file could not be found

问题分析

MySQL的配置文件/etc/my.cnf权限问题

解决方法

chmod 644 /etc/my.cnf

9.故障八

故障现象

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

问题分析

innodb数据文件损坏

解决方法

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

二、MySQL主从环境常见故障

1.故障一

故障现象

  从库里的Slave_IO_Runing为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-sameserver-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.故障二

故障现象:从库的Slave_IO_Running为NO

问题分析:主键冲突或者主库删除或更新数据,从库内找不到记录,数据被修改导致

解决方法

方法一

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 binary log

问题分析

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

解决方法

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

mysqI> CHANGE MASTER TO MASTER LOG FILE='mysql-bin.xxX',MASTER LOG POS=xxx;

三、MySQL优化

1.硬件优化

CPU:推荐使用S.M.P架构的多路对此CPU

内存:4GB以上的物理内存

存储:使用高速存储设备,如SSD固态硬盘替代传统的HDD机械硬盘,大幅提高I/O性能。

磁盘:RAID-0+1磁盘陈列或固态硬盘

2.MySQL配置文件优化

MySQL配置文件优化

MySQL的配置文件(my.cnf)是用来配置MySQL服务器的参数和选项的。通过对配置文件进行优化,可以提高MySQL服务器的性能和稳定性。以下是一些常见的MySQL配置文件优化建议:

  1. 内存设置:

    • innodb_buffer_pool_size:设置InnoDB存储引擎使用的内存缓冲池大小,建议设置为物理内存的70-80%。
    • key_buffer_size:设置MyISAM存储引擎使用的键缓冲区大小,建议设置为物理内存的10%。
    • query_cache_size:设置查询缓存的大小,建议根据实际情况进行调整。
  2. 并发连接设置:

    • max_connections:设置允许的最大并发连接数,建议根据实际需求进行调整。
    • thread_cache_size:设置线程缓存的大小,建议根据实际情况进行调整。
  3. 查询优化:

    • slow_query_log:开启慢查询日志,记录执行时间超过设定阈值的查询语句,方便进行性能优化。
    • log_queries_not_using_indexes:记录未使用索引的查询语句,帮助优化查询性能。
  4. 日志设置:

    • general_log:开启通用查询日志,记录所有查询语句,仅用于调试目的。
    • log_error:指定错误日志文件路径,记录MySQL服务器的错误信息。
  5. 其他优化选项:

    • skip-name-resolve:禁用DNS反向解析,加快连接速度。
    • skip-locking:禁用旧版的表级锁定,提高并发性能。

3.SQL优化

  • 尽量使用索引进行查询
  • 优化分页
  • GRUOP BY优化

4.MySQL架构优化

MySQL架构优化是指对MySQL数据库的结构和配置进行调整和优化,以提高数据库的性能和可靠性。以下是一些常见的MySQL架构优化方法:

  1. 数据库优化:合理设计数据库表结构,避免冗余字段和表,使用适当的数据类型和索引,以提高查询效率。

  2. 查询优化:编写高效的SQL查询语句,避免全表扫描和不必要的连接操作,使用合适的索引来加速查询。

  3. 硬件优化:选择合适的硬件设备,包括CPU、内存、磁盘等,以满足数据库的性能需求。同时,合理配置硬件参数,如文件系统、内核参数等。

  4. 缓存优化:使用MySQL的查询缓存功能,将经常查询的结果缓存起来,减少数据库的访问压力。同时,合理设置缓存大小和过期时间,避免缓存过期导致数据不一致。

  5. 分区和分表:对于大型数据库,可以考虑将数据进行分区或分表存储,以提高查询效率和负载均衡能力。

  6. 主从复制:通过设置主从复制架构,将读写操作分离到不同的服务器上,提高数据库的并发处理能力和可用性。

  7. 定期维护:定期进行数据库的备份、优化和清理工作,包括删除不再使用的索引、优化表结构、清理日志文件等。

总结

MySQL故障排除

MySQL无法启动

检查MySQL服务状态及启动脚本。

查看错误日志,了解具体启动失败的原因,如权限问题、配置文件错误、磁盘空间不足等。

确保所有依赖的服务(如网络、存储等)正常运行。

MySQL连接不上

检查数据库服务器是否在线,端口是否开放。

确认账户名、密码、主机名或IP地址无误,以及防火墙设置没有阻止连接请求。

查看最大连接数限制是否已达到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Yolo 自制数据集dect训练改进

上一文请看 Yolo自制detect训练-CSDN博客 简介 如下图: 首先看一下每个图的含义 loss loss分为cls_loss, box_loss, obj_loss三部分。 cls_loss用于监督类别分类,计算锚框与对应的标定分类是否正确。 box_loss用于监督检测框的回归,预测框…

蓝桥杯真题:成绩统计

这题思路简单,但是输出结果的位置容易出错,题目要求四舍五入,所以要用Math.round()的方法

Python快速入门系列-7(Python Web开发与框架介绍)

第七章:Python Web开发与框架介绍 7.1 Flask与Django简介7.1.1 Flask框架Flask的特点Flask的安装一个简单的Flask应用示例7.1.2 Django框架Django的特点Django的安装一个简单的Django应用示例7.2 前后端交互与数据传输7.2.1 前后端交互7.2.2 数据传输格式7.2.3 示例:使用Flas…

解决GNU Radio+USRP实现OFDM收发在接收端存在误码问题

文章目录 前言一、OFDM 收发流程1、OFDM 收端流程2、OFDM 收端流程 二、问题所在1、find_trigger_signal 函数解读2、general_work 函数3、问题所在 三、修改源码四、运行结果1、频谱2、传输数据测试 五、调试小技巧六、资源自取 前言 在使用 GNU Radio 时使用官方例程搭建 GN…

git clone没有权限的解决方法

一般情况 git clone时没有权限,一般是因为在代码库平台上没有配置本地电脑的id_rsa.pub 只要配置上,一般就可以正常下载了。 非一般情况 但是也有即使配置了id_rsa.pub后,仍然无法clone代码的情况。如下 原因 这种情况是因为ssh客户端…

前端常用代码整理— js,jquery篇(3)

目录 1.判断是否是json字符串 2.获取当前网址 3.将文本复制到剪贴板 4.获取一个月的天数 5.展平数组 6.要修改getRandomItem函数以返回数组中的随机两个元素,可以尝试以下代码 1.判断是否是json字符串 const isJson str > {try {JSON.parse(str);return …

通过 Cookie、Session 和 Spring 拦截器技术,实现对用户登录状态的持有和清理(一)

本篇博客对应“2.3 会话管理”小节 视频名称:会话管理 视频链接 什么是HTPP协议? HTTP,Hpyer Text Transfer Protocl:定义了浏览器怎样从(万维网客户进程)怎样向Web服务器(万维网服务器&#…

vue 文件下载

1.返回路径下载 注: 针对一些浏览器无法识别的文件格式(如pdf、xls、ppt)。可以直接在地址栏上输入URL即可触发浏览器的下载功能。 情况1 //地址栏输入文件URLwindow.location.href URLwindow.open(URL) 注:该方式将下载逻辑放在后端处理&#xff0c…

Mysql的高级语句3

目录 一、子查询 注意:子语句可以与主语句所查询的表相同,但是也可以是不同表。 1、select in 1.1 相同表查询 1.2 多表查询 2、not in 取反,就是将子查询结果,进行取反处理 3、insert into in 4、update…

IO练习题

1&#xff1a;使用 dup2 实现错误日志功能 使用 write 和 read 实现文件的拷贝功能&#xff0c;注意&#xff0c;代码中所有函数后面&#xff0c;紧跟perror输出错误信息&#xff0c;要求这些错误信息重定向到错误日志 err.txt 中 #include <myhead.h>//文件IO实现文件拷…

实现offsetof宏以及交换一个整数二进制奇偶位的宏

目录 1. offsetof宏2. 交换奇偶位 1. offsetof宏 我们想用宏来实现offsetof函数,首先要了解这个函数的用法。 1.1 offsetof函数的介绍及用法 &#xff08;1&#xff09;功能&#xff1a;用来计算结构体中一个成员在该结构体中的相对起始位置的偏移量&#xff0c;单位是字节。 …

ClamAV:Linux服务器杀毒扫描工具

Clam AntiVirus&#xff08;ClamAV&#xff09;是免费而且开放源代码的防毒软件&#xff0c;软件与病毒码的更新皆由社群免费发布。ClamAV在命令行下运行&#xff0c;它不将杀毒作为主要功能&#xff0c;默认只能查出系统内的病毒&#xff0c;但是无法清除。需要用户自行对病毒…

C语言之位段

1.位段的声明 位段的声明和结构是类似的&#xff0c;有两个不同&#xff1a; 1.位段的成员必须是 int、unsigned int 或signed int 。 2.位段的成员名后边有一个冒号和一个数字。 比如&#xff1a; struct A {int _a:2;int _b:5;int _c:10;int _d:30; }; A 就是一个位段类型…

【上海大学计算机组成原理实验报告】二、数据传送实验

一、实验目的 了解在模型机中算术、逻辑运算单元的控制方法。学习机器语言程序的运行过程。通过人工译码&#xff0c;加深对译码器基本工作原理的理解。 二、实验原理 根据实验指导书的相关内容&#xff0c;本次实验所要用的CP226实验仪在手动方式下&#xff0c;运算功能通过…

LeetCode-热题100:160. 相交链表

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&…

Go语言学习Day6:数组与切片

名人说&#xff1a;莫愁千里路&#xff0c;自有到来风。 ——钱珝 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1. 数组① 什么是数组② 数组的声明③ 初始化数组的几种方式④ 遍历数组元素⑤ 数组为值类型⑥ 数…

pytest教程-21-失败重跑插件-pytest-rerunfailures

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest插件的基本使用方法&#xff0c;本小节我们讲解一下pytest用例失败重跑插件pytest-rerunfailures。 测试环境不稳定偶发接口超时&#xff08;和服务无关&#xff0c;纯粹是环境问题&…

【C语言】带你完全理解指针(四)函数指针的应用sqort函数的实现

前言&#xff1a; 本文主要是函数指针的重要应用&#xff0c;介绍qsort函数以及模拟实现这样一个不限制使用数据类型的快速排序函数。 回调函数 函数指针有一个非常大的作用就是实现回调函数。非常重要 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针&#xf…

python如何画奥运五环

绘制奥运五环主要涉及到Python中的turtle绘图库运用&#xff1a; 程序源代码为&#xff1a; import turtle turtle.width(10) turtle.color(black) turtle.circle(50) turtle.penup() turtle.goto(120,0) turtle.pendown() turtle.color(red) turtle.circle(50) turtle.penup()…

基于springboot酒店管理平台

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于酒店管理平台系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了酒店管理平台系统&#xff0c;它彻底改变了过…