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主机,检测主从连接正常
相关推荐
阿华的代码王国27 分钟前
MySQL ------- 索引(B树B+树)
数据库·mysql
Hello.Reader1 小时前
StarRocks实时分析数据库的基础与应用
大数据·数据库
执键行天涯1 小时前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
liupenglove1 小时前
golang操作mysql利器-gorm
mysql·golang
yanglamei19621 小时前
基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue
前端·数据库·flask
叫我:松哥1 小时前
基于Python flask的医院管理学院,医生能够增加/删除/修改/删除病人的数据信息,有可视化分析
javascript·后端·python·mysql·信息可视化·flask·bootstrap
工作中的程序员1 小时前
ES 索引或索引模板
大数据·数据库·elasticsearch
严格格2 小时前
三范式,面试重点
数据库·面试·职场和发展
微刻时光2 小时前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
单字叶2 小时前
MySQL数据库
数据库·mysql