赞
踩
关于PostgreSQL的流复制,相关概念在文档里已经说的很清楚,这里总结一下我的理解,包括一些不太容易注意到的地方:
要配置同步复制,关键在主库配置两个参数:synchronous_commit 和synchronous_standby_names
synchronous_commit = on
synchronous_standby_names = 'FIRST 1 (pg1, pg2)'或
synchronous_standby_names = 'ANY 1 (pg1, pg2)'
对于同步复制时,备库宕机导致主库不可用,反而降低可用性的问题,可以配置两个备库,一个与主库同步复制(sync),一个异步复制(async),如果同步复制的备库宕机,异步复制的备库立刻接替同步复制,这样就可避免同步复制反而降低可用性了。上面FIRST、ANY两种配置都可以实现这种策略。
对于我们的数据库系统,要求自动安装,自动切换,可以配置为不指定application_name:
synchronous_standby_names = 'ANY 1 (*)'
这种配置经过测试时可以的。
文档上有关于quorum的说明,但是这里说的更详细些:
Postgres 10 highlight - Quorum set of synchronous standbys (paquier.xyz)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。