面试题答案
一键面试主从数据不一致
- 排查思路:
- 检查主库的二进制日志是否正常记录。查看主库的日志文件,确认数据更改操作都被正确记录在二进制日志中。
- 查看从库的中继日志是否正确接收并应用。检查从库的中继日志文件,确认从库接收到了主库发送的日志内容。
- 确认主从库之间的同步延迟。使用
SHOW SLAVE STATUS \G
命令查看Seconds_Behind_Master
字段,如果该值较大,可能存在延迟导致的数据不一致。 - 检查主从库的数据修改操作。排查是否存在直接在从库上进行写操作,或主库上存在未被复制的操作(如某些特定函数操作在主从库执行结果不同)。
- 解决方法:
- 若主库二进制日志记录问题,检查主库配置参数
log_bin
是否开启,以及日志相关路径和权限是否正确。确保主库正常记录二进制日志。 - 对于从库中继日志问题,检查从库与主库的网络连接是否稳定,若存在网络波动可能导致日志接收不完整。可重启从库的I/O线程(
STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
)尝试重新接收日志。 - 若存在同步延迟,优化主从库的性能,减少主库负载,确保从库有足够资源快速应用中继日志。也可考虑增加从库数量分担复制压力。
- 如果在从库有写操作,停止从库写操作,重新配置从库同步。若因函数操作不一致,可尝试在主从库统一函数版本或使用确定性函数。
- 若主库二进制日志记录问题,检查主库配置参数
从库连接不上主库
- 排查思路:
- 网络层面检查。确认主从库之间的网络是否畅通,可通过
ping
命令以及检查防火墙设置,确保主库的复制端口(默认3306)对从库开放。 - 主库配置检查。查看主库是否正确配置了二进制日志,是否设置了
server-id
且唯一,是否授权了从库连接主库的权限。 - 从库配置检查。检查从库的
server-id
是否与主库不同且唯一,从库配置的主库连接信息(如主库IP、端口、用户名、密码)是否正确。
- 网络层面检查。确认主从库之间的网络是否畅通,可通过
- 解决方法:
- 若网络问题,开放主库的3306端口(或自定义的复制端口)给从库所在IP段。如果是云服务器,还需检查安全组规则配置。
- 主库配置有误时,正确配置
log_bin
参数开启二进制日志,确保server-id
唯一且合理。重新授权从库连接主库权限,如GRANT REPLICATION SLAVE ON *.* TO'slave_user'@'slave_ip' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
- 从库配置问题,修正
server-id
,确保与主库不同且唯一。仔细核对主库连接信息,可通过CHANGE MASTER TO
语句重新配置从库连接主库的参数。之后启动从库复制(START SLAVE;
)并使用SHOW SLAVE STATUS \G
检查连接状态。