面试题答案
一键面试1. 检查网络状况
- 思路:网络延迟或不稳定可能导致主从复制延迟。
- 方法:
- 使用
ping
命令检查主从服务器之间的网络连通性和延迟。例如:ping 主库IP
,查看返回的延迟时间和丢包率。 - 使用
traceroute
命令查看网络路由路径,检查是否存在网络节点故障。例如:traceroute 主库IP
。
- 使用
2. 查看主库状态
- 思路:主库的性能和配置可能影响从库同步。
- 方法:
- 在主库执行
SHOW MASTER STATUS\G
命令,重点关注Seconds_Behind_Master
参数(如果该参数存在且不为0,说明主从存在延迟)。 - 检查主库的负载情况,使用
top
命令查看CPU、内存、I/O等资源的使用情况。若负载过高,可能影响主库向从库发送二进制日志。
- 在主库执行
3. 查看从库状态
- 思路:从库自身的状态和配置是排查重点。
- 方法:
- 在从库执行
SHOW SLAVE STATUS\G
命令,关注以下关键参数:Seconds_Behind_Master
:直观显示从库落后主库的秒数。若数值较大,表明存在延迟。Slave_IO_Running
和Slave_SQL_Running
:这两个参数必须都为Yes
,若其中一个为No
,说明复制出现问题。如果Slave_IO_Running
为No
,可能是网络问题或主库配置问题导致从库无法连接主库获取日志;如果Slave_SQL_Running
为No
,通常是从库在执行中继日志时出错。Last_IO_Errno
和Last_IO_Error
:若Slave_IO_Running
为No
,这两个参数记录了IO线程的错误信息。Last_SQL_Errno
和Last_SQL_Error
:若Slave_SQL_Running
为No
,这两个参数记录了SQL线程的错误信息。
- 查看从库的负载情况,同样使用
top
命令,若从库负载过高,会影响SQL线程执行中继日志的速度。
- 在从库执行
4. 检查复制过滤配置
- 思路:不当的复制过滤配置可能导致部分数据不同步,看似出现延迟。
- 方法:
- 在从库执行
SHOW SLAVE STATUS\G
查看Replicate_Do_DB
、Replicate_Ignore_DB
、Replicate_Do_Table
、Replicate_Ignore_Table
等参数,确认是否配置了过滤规则导致部分数据未同步。
- 在从库执行
5. 检查GTID相关配置
- 思路:GTID配置错误可能导致主从复制异常。
- 方法:
- 确认主从库的
gtid_mode
参数都为ON
,且enforce_gtid_consistency
参数都为ON
。 - 检查主从库的
gtid_domain_id
是否一致,若不一致可能导致复制问题。
- 确认主从库的
6. 检查日志相关配置
- 思路:日志相关配置影响主从复制数据传输和应用。
- 方法:
- 在主库,确保
log-bin
参数已正确配置且二进制日志功能开启。检查binlog_format
参数,确保其为ROW
或MIXED
模式(基于GTID复制推荐ROW
模式)。 - 在从库,确保
relay_log
参数正确配置,中继日志能正常使用。
- 在主库,确保
7. 检查系统表
- 思路:系统表记录了复制相关的关键信息。
- 方法:
- 查看
mysql.slave_master_info
表,该表存储了从库连接主库的信息,如主库的IP、端口、账号密码、日志文件名和位置等。确保这些信息正确,若信息错误可能导致连接主库失败,进而出现同步延迟假象。 - 查看
mysql.slave_relay_log_info
表,该表记录了从库中继日志的相关信息,如当前正在使用的中继日志文件名和位置等。若该表信息异常,可能影响从库SQL线程对中继日志的应用。
- 查看