加载中...
半同步复制是介于异步复制与全同步复制之间的折中方案。主库提交事务前,至少等待一个从库确认已收到日志,再向客户端返回成功,从而在性能与数据安全之间取得平衡,常见于 MySQL 主从架构。

| 类型 | 数据复制策略 |
| 定位 | 异步与全同步之间 |
| 确认条件 | 至少一个从库应答 |
| 代表实现 | MySQL 半同步插件 |
半同步复制是一种主库在提交事务时需等待至少一个从库确认收到日志后才向客户端返回成功的复制策略。它位于纯异步复制与全同步复制之间,既避免了异步复制主库宕机可能丢数据的风险,又不像全同步那样等待所有从库回放。
在异步复制中,主库写完本地日志即返回,不关心从库是否收到,若主库随后崩溃,尚未传出的事务将丢失。半同步复制要求主库在返回前收到至少一个从库的应答(通常是收到并写入中继日志的确认),以此提升可靠性。MySQL 通过插件形式提供半同步复制能力。
半同步复制适用于对数据安全有较高要求、又不能承受全同步性能损耗的核心业务库,例如订单、支付等场景。它常与高可用切换组件配合,确保主库故障时被提升的从库尽量不丢已确认事务。
问:半同步能保证零丢失吗?答:不能绝对保证。在超时降级为异步、或从库仅确认收到而未刷盘等情形下,极端故障仍可能丢数据,需结合刷盘确认与增强模式降低风险。
问:半同步会不会显著拖慢写入?答:会增加一次网络往返的等待,延迟随主从网络质量而定,同机房内影响通常有限,跨地域则较明显。

| 类型 | 数据复制策略 |
| 定位 | 异步与全同步之间 |
| 确认条件 | 至少一个从库应答 |
| 代表实现 | MySQL 半同步插件 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧