面试题答案
一键面试网络方面
- 原因:
- 主库和备库之间的网络不通,可能是防火墙阻挡了主备库之间的通信端口(通常MySQL默认使用3306端口)。
- 网络延迟过高或不稳定,导致连接建立失败。
- 解决方法:
- 检查主备库防火墙设置,开放MySQL通信端口。在Linux系统中,例如使用iptables命令开放3306端口:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
(注意,不同系统防火墙管理工具可能不同,如firewalld等)。 - 使用ping命令和traceroute命令检查网络连通性和延迟情况,若网络不稳定,联系网络管理员解决网络问题。
- 检查主备库防火墙设置,开放MySQL通信端口。在Linux系统中,例如使用iptables命令开放3306端口:
权限方面
- 原因:
- 主库上配置的用于备库连接的账号权限不足。例如,只授予了部分权限,没有授予复制相关的权限。
- 密码错误,备库配置文件中填写的连接主库的密码与主库中该账号实际密码不一致。
- 解决方法:
- 在主库上,使用以下命令给备库连接账号授予复制权限:
GRANT REPLICATION SLAVE ON *.* TO '备库连接用户名'@'备库IP地址' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
- 确认主库和备库配置文件中关于连接账号和密码的一致性,如不一致,在备库配置文件中修改为正确的密码。
配置参数方面
- 原因:
- 主库配置参数问题,例如
log - bin
参数未正确配置,导致主库无法生成二进制日志,影响备库连接复制。 - 备库配置参数问题,如
relay - log
、server - id
等参数配置错误。server - id
在主从环境中必须保证每个实例唯一,若重复会导致连接问题;relay - log
配置错误可能影响中继日志的生成和管理。 - 主库和备库的
gtid_mode
配置不一致。如果主库开启了GTID(全局事务标识),备库未开启或者配置不一致,可能导致连接和复制异常。
- 主库配置参数问题,例如
- 解决方法:
- 检查主库
my.cnf
配置文件,确保log - bin
参数配置正确,例如:
- 检查主库
[mysqld]
log - bin = /var/log/mysql/mysql - bin.log
重启主库使配置生效。
- 检查备库 my.cnf
配置文件中 server - id
的唯一性,修改为不重复的值,例如:
[mysqld]
server - id = 2
同时确保 relay - log
配置正确,如:
relay - log = /var/log/mysql/mysql - relay - bin.log
修改后重启备库。
- 检查主备库 gtid_mode
的配置一致性,若主库开启了GTID,在主库和备库的 my.cnf
文件中都添加或确认以下配置:
[mysqld]
gtid_mode = ON
enforce_gtid_consistency = 1
重启主备库使配置生效。同时,在备库上使用 CHANGE MASTER TO
命令重新配置主库连接参数时,要根据GTID模式正确设置相关参数。