面试题答案
一键面试从库确认接收到主库二进制日志事件的过程
- 接收日志事件:主库在执行事务并将其写入二进制日志后,会将二进制日志事件发送给从库。从库的I/O线程负责接收这些事件,并将其写入到中继日志(Relay Log)中。
- 确认机制:从库在成功将接收到的二进制日志事件写入中继日志后,会向主库发送一个ACK(确认)消息,告知主库已成功接收。
确认流程的主要步骤
- 主库操作:
- 主库执行事务并记录到二进制日志。
- 主库将二进制日志事件发送给从库的I/O线程。
- 从库I/O线程操作:
- 从库I/O线程接收主库发送的二进制日志事件。
- 将接收到的事件写入中继日志。
- 向主库发送ACK消息确认接收。
- 主库等待确认:主库在发送二进制日志事件后,会等待至少一个从库发送ACK确认。只有在接收到确认后,主库才会将该事务标记为已提交。
涉及到的关键参数
- rpl_semi_sync_master_wait_for_slave_count:主库等待多少个从库的确认,默认为1。
- rpl_semi_sync_master_timeout:主库等待从库确认的超时时间,单位为毫秒,默认值是10000(10秒)。
- rpl_semi_sync_slave_enabled:从库是否启用半同步复制功能,ON表示启用,OFF表示禁用。