• off

提交动作不会等待transaction record刷新到硬盘就完成。

  • local

提交动作会等到transaction record flush到本地硬盘后再完成。

  • on (默认)

如果该参数设置为on,并且通过synchronous_standby_names配置了同步备库,那么COMMITs将等待同步备库确认数据被flush到硬盘后才会完成。目的是确保数据被保存在了两个或更多的地方。

但是如果备库停止响应,那么主库的COMMITs将会hang住,直到手动处理这种故障。为了防止这种情况,可以添加第三个数据库作为同步备库,当第一个备库发生故障,主库可以使用第二个备库。

  • remote_write

此参数值表示,主库事务将等待备库上数据写入到disk cache后才会完成。如果持久化这个数据,应该将这个data cache flush到硬盘。所以,这个参数配置存在一定的丢失数据风险。

不建议配置此参数,除非对性能的要求大于丢失数据的风险。

  • remote_apply

此参数表示,COMMITs等待同步备库将事务写入到硬盘,并且applied后才会完成。绝对安全、绝对同步。


https://www.enterprisedb.com/blog/cheat-sheet-configuring-streaming-synchronous-replication-postgresql

  • No labels