面试题答案
一键面试排查故障步骤
- 检查中继日志状态
- 使用
SHOW SLAVE STATUS \G
命令查看中继日志相关信息,重点关注Relay_Log_File
和Relay_Log_Pos
等字段,确认当前中继日志的使用情况。
- 使用
- 检查错误日志
- 查看MySQL从服务器的错误日志(通常在MySQL数据目录下,文件名类似
hostname.err
),查找与中继日志损坏相关的错误信息,例如“Relay log read failure”等提示,这能帮助定位损坏发生的具体时间和可能原因。
- 查看MySQL从服务器的错误日志(通常在MySQL数据目录下,文件名类似
- 备份当前中继日志
- 在进行任何修复操作前,先备份当前损坏的中继日志文件,以防后续分析或数据恢复需要。可使用操作系统命令(如
cp
命令在Linux系统下)将中继日志文件复制到安全的位置。
- 在进行任何修复操作前,先备份当前损坏的中继日志文件,以防后续分析或数据恢复需要。可使用操作系统命令(如
恢复复制功能步骤
- 获取主服务器二进制日志位置
- 在主服务器上执行
SHOW MASTER STATUS
命令,记录下File
和Position
字段的值,这是从服务器需要同步的主服务器二进制日志位置。
- 在主服务器上执行
- 跳过损坏的中继日志事件
- 在从服务器上,通过设置
sql_slave_skip_counter
系统变量来跳过损坏的中继日志事件。例如,如果确定中继日志在某个位置开始损坏,可以先停止复制:
STOP SLAVE; SET GLOBAL sql_slave_skip_counter = 1; # 根据实际情况调整跳过的事件数 START SLAVE;
- 然后再次使用
SHOW SLAVE STATUS \G
命令查看复制状态,确保Slave_IO_Running
和Slave_SQL_Running
都为Yes
,且Seconds_Behind_Master
逐渐减小,表明复制正在恢复。
- 在从服务器上,通过设置
- 重新配置从服务器
- 如果跳过事件无法解决问题,可以考虑重新配置从服务器。
- 首先停止从服务器复制:
STOP SLAVE;
- 然后重置从服务器:
RESET SLAVE;
- 接着使用
CHANGE MASTER TO
命令重新配置从服务器连接到主服务器,并指定之前记录的主服务器二进制日志位置:
CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='复制用户', MASTER_PASSWORD='复制用户密码', MASTER_LOG_FILE='主服务器二进制日志文件名', MASTER_LOG_POS=主服务器二进制日志位置;
- 最后启动从服务器复制:
START SLAVE;
- 验证复制状态
- 持续使用
SHOW SLAVE STATUS \G
命令监控从服务器复制状态,确保数据同步正常进行,并且没有新的错误出现。同时,可以对比主从服务器上的数据一致性,例如通过查询关键表的记录数和校验和等方式验证数据完整性。
- 持续使用