面试题答案
一键面试1. 切换时机与触发条件
- 异步复制 -> 半同步复制:通常在主库开启半同步复制插件,并且至少有一个从库成功连接并开启半同步复制功能时,主库会从异步复制切换到半同步复制。当主库接收到从库发送的确认消息,表示从库已经接收到并写入中继日志时,主库才会确认事务提交。若从库长时间未发送确认消息(超过一定时间阈值),主库会暂时切回异步复制,以避免阻塞事务提交。
- 半同步复制 -> 异步复制:当所有配置为半同步复制的从库都出现故障,或者与主库的连接中断,导致主库无法在规定时间内收到从库的确认消息时,主库会自动切换回异步复制模式,保证主库的事务提交不受长时间阻塞。
2. 对系统性能的影响
- 异步复制 -> 半同步复制:切换到半同步复制后,系统性能可能会有一定程度的下降。因为主库在事务提交前需要等待从库的确认消息,这增加了事务提交的延迟。在网络延迟较高或者从库性能较差的情况下,这种延迟会更加明显。但同时,由于数据能更快地同步到至少一个从库,系统的读性能在一定程度上可以得到保障,特别是在配置了读写分离的架构中,从库能更快地提供最新数据。
- 半同步复制 -> 异步复制:切换回异步复制后,主库事务提交不再等待从库确认,事务提交速度加快,系统写性能会有所提升。但由于从库同步存在延迟,在从库上进行读操作时可能获取到旧数据,对于读一致性要求高的场景不太适用。
3. 对数据一致性的影响
- 异步复制 -> 半同步复制:数据一致性得到显著提升。半同步复制确保主库提交的事务至少已经被一个从库接收到并写入中继日志,减少了主从数据不一致的窗口。即使主库发生故障,已提交事务的数据也不会丢失,因为至少有一个从库保存了这些数据,有利于数据的安全性和一致性。
- 半同步复制 -> 异步复制:数据一致性降低。异步复制下,主库提交事务后不会等待从库确认,从库同步存在一定延迟,在主库故障时,可能导致部分已提交事务在从库上尚未同步,从而出现数据丢失或不一致的情况。