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
落盘