面试题答案
一键面试主要组件
- 主库(Master):负责处理客户端的写操作,将写操作记录到二进制日志(Binary Log)中,并向从库(Slave)发送日志事件。
- 从库(Slave):接收主库发送的日志事件,将其应用到自己的数据副本上,保持与主库的数据同步。
- 半同步复制插件:在主库和从库上都需要安装半同步复制插件,负责处理半同步复制相关的消息交互和状态管理。
消息交互过程
- 主库写操作:
- 客户端向主库发起写操作,主库将写操作记录到二进制日志中。
- 主库通过半同步复制插件,将日志事件发送给从库,并等待从库的确认。
- 从库接收与确认:
- 从库的半同步复制插件接收到主库发送的日志事件。
- 从库将接收到的日志事件写入到中继日志(Relay Log)中,并通过半同步复制插件向主库发送确认消息,表示已成功接收日志事件。
- 主库响应:
- 主库在收到至少一个从库的确认消息后,才会向客户端返回写操作成功的响应。如果在一定时间内没有收到从库的确认消息,主库会切换回异步复制模式,以避免写操作长时间阻塞。
- 从库应用日志:
- 从库在向主库发送确认消息后,会按照中继日志中的记录,将日志事件应用到自己的数据副本上,完成数据同步。