1.异步:服务发起数据更新操作请求,主库执行更新操作完成后立即向服务发起响应,然后再向从库发起数据同步。主库执行更新操作不需要等待从库的响应,因此主库对于服务的响应较快,但是数据同步到从库并不是实时同步的,所以主从延迟情况下,主库发生故障可能会导致主从数据不一致。
2.半同步:服务发起数据更新操作请求,主库执行更新操作完成后立即向从库复制数据,从库接受到数据写入rely log 后才向主库返回ack 确认,然后主库收到从库的ack 确认后向服务发起响应。复制发生异常时复制会降为异步复制,复制恢复时会自动切换为半同步。
3.增强型半同步:服务发起数据更新操作请求,主库执行更新操作完成后立即向从库复制数据,从库接受到数据执行完成后才向主库返回ack 确认,主库必须接收到从库的ack 确认后向服务发起响应。应主从库复制是实时进行的,所以在很大程度上保证了主从数据的一致性,但主库的每次操作依赖于从库的操作成功写入,影响主库的正常操作。一般是一主两从,避免一台故障影响主库的正常操作。