MySQL中MHA故障排查

文章目录

  • MySQL故障排查
    • MySQL主从环境常见故障
      • 1、故障一
        • [1.1 故障现象](#1.1 故障现象)
        • [1.2 报错原因](#1.2 报错原因)
        • [1.3 解决方法](#1.3 解决方法)
      • 2、故障二
        • [2.1 故障现象](#2.1 故障现象)
        • [2.2 报错原因](#2.2 报错原因)
        • [2.3 解决方法](#2.3 解决方法)
      • 3、故障三
        • [3.1 故障现象](#3.1 故障现象)
        • [3.2 报错原因](#3.2 报错原因)
        • [3.3 解决方法](#3.3 解决方法)
      • 4、故障四
        • [4.1 故障现象](#4.1 故障现象)
        • [4.2 问题分析](#4.2 问题分析)
        • [4.3 解决方法](#4.3 解决方法)
      • 5、故障五
        • [5.1 故障现象](#5.1 故障现象)
        • [5.2 报错原因](#5.2 报错原因)
        • [5.3 解决方法](#5.3 解决方法)
      • 6、故障六
        • [6.1 故障现象](#6.1 故障现象)
        • [6.2 报错原因](#6.2 报错原因)
        • [6.3 解决方法](#6.3 解决方法)
      • 7、故障七
        • [7.1 故障现象](#7.1 故障现象)
        • [7.2 报错原因](#7.2 报错原因)
        • [7.3 解决方法](#7.3 解决方法)
      • 8、故障八
        • [8.1 故障现象](#8.1 故障现象)
        • [8.2 报错原因](#8.2 报错原因)
        • [8.3 解决方法](#8.3 解决方法)
      • 9、故障九
        • [9.1 故障现象](#9.1 故障现象)
        • [9.2 报错原因](#9.2 报错原因)
        • [9.3 解决方法](#9.3 解决方法)

MySQL故障排查

MySQL主从环境常见故障

1、故障一

1.1 故障现象
mysql 复制代码
mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'
#表明MySQL服务器在启动时遇到了一个未知变量default-character-set=utf8
1.2 报错原因
  • 表明MySQL服务器在启动时遇到了一个未知变量default-character-set=utf8
1.3 解决方法
  • 前往mysql服务器的/etc/my.cnf配置文件注销掉错误行配置并重启mysql服务(主从服务器都需要注销配置内容)
mysql 复制代码
#修改配置文件
vim /etc/my.cnf
[client]
port = 3306
#default-character-set=utf8
#注销此行配置内容
socket=/usr/local/mysql/mysql.sock

systemctl restart mysqld.service
#重启服务

2、故障二

2.1 故障现象
mysql 复制代码
[error][/usr/local/share/perl5/MHA/ServerManager.pm, ln492]  Server 192.168.10.11(192.168.10.11:3306) is dead, but must be alive! Check server settings.
#服务器192.168.10.11(IP地址为192.168.10.11,端口号为3306)被认为是不可用的(dead),但是MHA期望它应该是可用的(alive)。这通常意味着MHA尝试连接到该服务器时失败了。
2.2 报错原因
  • 数据库未启动或者数据库端口被防火墙拦截
2.3 解决方法
  • 启动数据库或者防火墙开放数据库监听端口
mysql 复制代码
systemctl stop firewalld
#192.168.10.11主机关闭防火墙,开放数据库监听端口

masterha_check_repl -conf=/etc/masterha/app1.cnf
#manager主机再次检测主从连接情况

3、故障三

3.1 故障现象
mysql 复制代码
[error][/usr/local/share/perl5/MHA/ServerManager.pm, ln301] Got MySQL error when connecting 192.168.10.13(192.168.10.13:3306) :1045:Access denied for user 'mha'@'192.168.10.14' (using password: YES), but this is not a MySQL crash. Check MySQL server settings.
#用户mha从IP地址192.168.10.14(运行MHA的节点的IP地址)尝试连接时,由于密码不正确或权限不足被拒绝了
3.2 报错原因
  • 密码不正确或者没有权限问题
3.3 解决方法
  • 修改/etc/my.cnf主配置文件,在[mysqld]下添加skip-grant-tables
mysql 复制代码
vim /etc/my.cnf
[mysqld]
skip-grant-tables
#添加此行配置,mysql设置免密登录

systemctl restart mysqld.service
#重启服务

4、故障四

4.1 故障现象
  • 在远程使用连接数据时偶尔会发生远程连接数据库很慢的问题
4.2 问题分析
  • DNS解析慢,客户端连接过多
4.3 解决方法
  • 修改/etc/my.cnf配置文件(增加skip-name-resolve参数)
  • 数据库授权禁止使用主机名

5、故障五

5.1 故障现象
5.2 报错原因
  • 服务器非正常关机,数据库所在空间已满,或一些其它未知的原因,对数据库表造成了损坏
  • 因拷贝数据库导致文件的属组发生变化
5.3 解决方法
  • 修复数据表(mysiamchk、phpMyAdmin)
  • 修改文件的属组

6、故障六

6.1 故障现象
6.2 报错原因
  • 超出最大连接错误数量限制
6.3 解决方法
  • 清除缓存(flush-hosts关键字)
  • 修改/etc/my.cnf配置文件(max_connect_errors=1000)

7、故障七

7.1 故障现象
mysql 复制代码
[error][/usr/local/share/perl5/MHA/ServerManager.pm, ln301] Got MySQL error when connecting 192.168.10.12(192.168.10.12:3306) :1040:Too many connections, but this is not a MySQL crash. Check MySQL server settings.
#MySQL服务器已经达到了其允许的最大连接数限制,因此无法再接受新的连接
7.2 报错原因
  • 连接数超出MySQL的最大连接限制
7.3 解决方法
mysql 复制代码
#修改配置文件
vim /etc/my.cnf
[mysqld]
max_connections=10000
#修改最大连接数10000

systemctl restart mysqld.service
#重启服务
mysql 复制代码
masterha_check_repl -conf=/etc/masterha/app1.cnf
#manager主机,检测主从连接正常

8、故障八

8.1 故障现象
mysql 复制代码
[error][/usr/local/share/perl5/MHA/ServerManager.pm, ln301] Got MySQL error when connecting 192.168.10.12(192.168.10.12:3306) :1045:Access denied for user 'mha'@'192.168.10.14' (using password: YES), but this is not a MySQL crash. Check MySQL server settings.
#用户mha没有从192.168.10.14这个地址连接到MySQL服务器(192.168.10.12)的权限
8.2 报错原因
  • MySQL的配置文件/etc/my.cnf权限问题
8.3 解决方法
mysql 复制代码
chmod 644 /etc/my.cnf
#添加权限

systemctl restart mysqld.service
#重启服务
mysql 复制代码
masterha_check_repl -conf=/etc/masterha/app1.cnf
#manager主机,检测主从连接正常

9、故障九

9.1 故障现象
mysql 复制代码
[error][/usr/local/share/perl5/MHA/Server.pm, ln490] Slave IO thread is not running on 192.168.10.11(192.168.10.11:3306)
#从服务器的IO线程没有运行。表示从服务器没有从主服务器正确地读取二进制日志事件
9.2 报错原因
  • 从服务器的IO线程没有运行。即从服务器没有从主服务器正确地读取二进制日志事件
9.3 解决方法
  • 从服务器开启slave功能
mysql 复制代码
mysql -uroot -p
#登录从服务器mysql数据库

show slave status\G
#查看从服务器状态

start slave;
#开启slave功能

show slave status\G
#查看从服务器状态
mysql 复制代码
masterha_check_repl -conf=/etc/masterha/app1.cnf
#manager主机,检测主从连接正常
相关推荐
java_heartLake7 小时前
PostgreSQL数据库参数调优实践
数据库·postgresql·调优
xnuscd9 小时前
Milvus概念
数据库·学习·mysql
代码欢乐豆9 小时前
软件工程第13章小测
服务器·前端·数据库·软件工程
小gpt&10 小时前
实现qt拖拽显示或者播放
数据库·qt·音视频
云边的快乐猫10 小时前
navicat远程连接虚拟机centos系统的mysql
linux·mysql·centos·虚拟机·navicat
望获linux10 小时前
在 ARM 平台上如何实现Linux系统的1秒启动
linux·服务器·开发语言·数据库·操作系统·嵌入式操作系统·arm平台
漫天转悠10 小时前
MySQL 七种JOIN连接详解
数据库·mysql
尘浮生10 小时前
Java项目实战II基于Java+Spring Boot+MySQL的智能停车计费系统(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·mysql·微信小程序·maven
quintin-lee11 小时前
PostgreSQL中的内存上下文管理
数据库·postgresql
东阳马生架构11 小时前
MySQL原理简介—9.MySQL索引原理
mysql