postgresql主备热备
同步复制配置
指定用逗号分隔的备用名称列表,可以支持同步复制。 任何一个时间将至多有一个活跃同步备用(在最新的pg9.6中已经支持同个同步备); 这个备用服务器确认收到他们的数据后,等待提交事务将被允许进行,同步待机是此列表中第一个备用。 之后出现在此列表中的其它备用服务器带来潜在的同步备用。 如果无论出于何种原因当前同步待机断开,那么它会立即被下一个最高优先级的替换。 指定多个备用名可以有非常高的可用性
synchronous_commit
如果设置synchronous_standby_names, 该参数控制是否事务提交将等待它的WAL记录被复制到备用服务器。 当设置on的时候, 提交将等待直到回复当前同步备库表明它已收到事务提交记录,并刷新到磁盘。 这确保事务不会丢失,除非主库和备库遭受他们的数据库存储崩溃。 当设置为remote_write,事务将等待 直到当前同步备库的答复表明它已经收到事务的提交记录,并且写入到备用操作系统, 但是数据并不一定在备库中达到稳定存储。 即使PostgreSQL备库实例崩溃,但并非备库遭受操作系统级的崩溃,此设置足以 确保数据的保存。
当同步复制使用时, 通常是明智的,要么等待本地刷新到磁盘和WAL记录的复制,要么 允许异步提交事务。然而,该设置local可用于 希望等待本地刷新到磁盘上的事务,而不是同步复制。 如果不设置synchronous_standby_names, 设置on,remote_write和local 提供相同的同步级别:事务提交只能等待本地刷新到磁盘。
该参数可以在任何时候被改变;对于任何事务的行为 是由该设置提交生效时确定的。 因此,它是可能的,并且有用的, 有一些事务同步提交,其他的异步提交。 例如,为了使单一多语句事务异步提交,缺省是相反的, 在事务中发出SET LOCAL synchronous_commit TO OFF命令。
同步复制的代码,相对比较简单,在后面的博客中将分别介绍,同步复制的实现方式,以及在最新的PG9.6版本中支持多个同步备机的代码。