PostgreSQL集群主备复制方式
复制方式
一主一备是同步物理流复制
RO是异步流复制
当备机宕机后,如果此时主库有写操作,会写等待,此时管控会降为异步流复制模式,并重做备库
设置synchronous_commit参数
这个参数用来设置事务提交返回客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘。合法的值是{local,remote_write,remote_apply,on,off}
off级别最低当数据库事务提交时不需要等待本地
wal buffer写入wal日志,立刻向客户端返回成功
local当事务提交时,写入本地磁盘即可
remote_write表示流复制主库提交事务时,需等待备库接收主库发送的wal日志流并写入备节点操作系统缓存中,之后向客户端返回成功,这种情况下备库出现异常关闭时不会有已传送的wal日志丢失风险,但备机
OS异常宕机就有已传送的wal丢失风险备机只需写入缓存,不需要落盘
remote_apply级别最高表示流复制主库提交事务时,需等待备库接收主库发送的wal流并写入wal文件,同时备库已经完成回放,之后才向客户端返回成功,简单的说
remote_apply表示本地wal已落盘,备库wal已落盘并且已经完成回放,这个设置保证了拥有两份持久化的wal,同时备库也已经完成了回放备机要
wal回放完on(默认)1 为
on且没有开启同步备库的时候,会当wal日志真正刷新到磁盘永久存储后才会返回客户端事务已提交成功,2 当为
on且开启了同步备库的时候(设置了synchronous_standby_names),必须要等事务日志刷新到本地磁盘,并且还要等远程备库也提交到磁盘才能返回客户端已经提交.主备都要
wal落盘

