文章目录
- 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主机,检测主从连接正常
