在PostgreSQL中,主库(Primary)和备库(Standby)之间的数据同步是通过传递WAL(Write-Ahead Log,预写式日志)来实现的。 同步复制(Synchronous Replication)和异步复制(Asynchronous Replication)最根本的区别在于:当客户端发起 (提交事务)时,主库是否需要等待备库的确认才向客户端返回成功。 以下是两者的详细对比和原理解析: --- 1. 核心机制对比 异步复制(Asynchronous Replication)- 默认模式 工作流程: 1. 客户端向主库发起 。 2. 主库将事务写入本地的 WAL 日志并落盘。 3. 主库立即向客户端返回“提交成功”。 4. 主库在后台将 WAL 日志通过网络异步发送给备库。 5. 备库接收并应用这些日志。 特点:主库的事务提交完全不依赖于备库的状态。 同步复制(Synchronous Replication) 工作流程: 1. 客户端向主库发起 。 2. 主库将事务写入本地的 WAL 日志并落盘。 3. 主库将 WAL 日志发送给备库。 4. 主库进入等待状态(...