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主机,检测主从连接正常
相关推荐
TDengine (老段)1 小时前
TDengine 的 AI 应用实战——运维异常检测
大数据·数据库·人工智能·物联网·时序数据库·tdengine·涛思数据
Le_ee1 小时前
dvwa7——SQL Injection
数据库·sql·网络安全·靶场·token·dvwa
依稀i1231 小时前
MySQL连接报SSL错误
数据库·mysql·ssl
kaede2 小时前
MySQL权限详解!
数据库·mysql
学海无涯,行者无疆2 小时前
深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式
数据库·sql·oracle·执行计划·sql执行计划·查看执行计划·sql性能优化
多多*2 小时前
蓝桥杯国赛训练 day1
java·开发语言·数据库·redis·缓存·职场和发展·蓝桥杯
可观测性用观测云3 小时前
HikariCP 可观测性最佳实践
数据库
望获linux3 小时前
【Linux基础知识系列】第八篇-基本网络配置
linux·数据库·postgresql·操作系统·php·开源软件·rtos
小菜刀刀3 小时前
WAF绕过,网络层面后门分析,Windows/linux/数据库提权实验
数据库·windows
萝卜白菜。3 小时前
关于TongWeb数据源兼容mysql驱动的注意事项
java·mysql