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主机,检测主从连接正常
相关推荐
野猪亨利66715 分钟前
Qt day1
开发语言·数据库·qt
siriuuus25 分钟前
Linux MySQL 多实例部署与配置实践
linux·运维·mysql
本就一无所有 何惧重新开始32 分钟前
Redis技术应用
java·数据库·spring boot·redis·后端·缓存
isaki13735 分钟前
qt day1
开发语言·数据库·qt
流星白龙43 分钟前
【Qt】4.项目文件解析
开发语言·数据库·qt
小钻风336644 分钟前
HTTPS是如何确保安全的
网络·数据库
王木风1 小时前
1分钟理解什么是MySQL的Buffer Pool和LRU 算法?
前端·mysql
CryptoPP1 小时前
获取越南股票市场列表(包含VN30成分股)实战指南
大数据·服务器·数据库·区块链
阿巴~阿巴~2 小时前
Redis重大版本演进全解析:从2.6到7.0
服务器·数据库·redis·ubuntu·缓存·centos
qq_404643343 小时前
MySQL中RUNCATE、DELETE、DROP 的基本介绍
数据库·mysql