一:synchronous_commit
1.synchronous_commit参数含义
这个参数用来设置事务提交返回客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘。合法的值是{local,remote_write,remote_apply,on,off}。默认设置是on。
2.各可选值含义
2.1 local
当事务提交时,写入本地磁盘即可,不用关心备机的情况。
2.2 remote_write
表示流复制主库提交事务时,需等待备库接收主库发送的wal日志流并写入备节点操作系统缓存中,之后向客户端返回成功,这种情况下备库出现异常关闭时不会有已传送的wal日志丢失风险,但备机操作系统异常宕机就有已传送的wal丢失风险
2.3 on
1 )为on且没有开启同步备库的时候,会当wal日志真正刷新到磁盘永久存储后才会返回客户端事务已提交成功,
2) 当为on且开启了同步备库的时候(设置了synchronous_standby_names),必须要等事务日志刷新到本地磁盘,并且还要等远程备库也提交到磁盘才能返回客户端已经提交.
2.4 remote_apply
表示流复制主库提交事务时,需等待备库接收主库发送的wal流并写入wal文件,同时备库已经完成回放,之后才向客户端返回成功,简单的说remote_apply 表示本地wal已落盘,备库wal已落盘并且已经完成回放,这个设置保证了拥有两份持久化的wal,同时备库也已经完成了回放。
2.5 off
当数据库事务提交时不需要等待本地 wal buffer 写入 wal 日志,立刻向客户端返回成功
二:synchronous_standby_names
1. synchronous_standby_names 参数含义
这个参数用来指定同步备机的列表,存放的是需要设置为同步备机的备机名称
2. 参数配置语法