变更数据同步模式
原生 PostgreSQL 流复制原理为备库不断从主库同步数据,并在备库应用每个 Wal 日志记录。主要包括异步流复制和同步流复制两种模式。
PostgreSQL 在 AppCenter 集群管理控制台支持变更主备库的数据同步模式,并定制半同步复制可自动切换同步流模式,确保业务运行流畅性。
-
异步流复制
异步留复制指主库在执行完事务后,立即返回结果,未判断备库是否接收和处理事务。在主库异常,而备库未接收到数据,强行主从切换后,可能造成数据丢失。
-
同步流复制
同步流复制指当主库执行完一个事务,且所有备库执行完事务后,才返回结果。若有多个备库,需要等待所有备库执行完事务才返回,保障数据完全同步,数据零丢失。
同步流复制模式下,若备库异常无法完成数据同步,将导致主库事务受阻,故同步流复制对业务正常运行有一定影响。
-
半同步复制
PostgreSQL 半同步复制指在开启同步流复制前提下,从节点异常无法完成数据同步时,主库将自动切换为异步流复制模式,确保业务不受阻塞。备库恢复正常后,主库恢复同步流复制。
说明
PostgreSQL 同步流复制中备库是指
standby
节点。
PostgreSQL 集群主实例和只读实例支持数据同步模式情况如下:
-
主实例支持半同步模式
- 2 主实例集群:半同步模式。允许一个节点故障,此时集群无法故障转移,不会影响 primary 节点读写。
- 3 主实例集群:增强半同步模式。允许一个节点宕机,为了保证数据的强一致性,两节点宕机会阻塞主节点写入,此时集群只读。
建议使用 3主实例集群。
-
只读实例,可以设置同步/异步
-
synchronous_readonly
参数控制只读实例同步模式sync
:只读实例同步。async
:只读实例异步(默认)。
建议设置只读实例为 async。
-
本小节主要介绍如何变更 PostgreSQL 节点数据同步模式。
前提条件
- 已获取管理控制台登录账号和密码,且已获取集群操作权限。
- 已升级至
PostgreSQL 高可用版-V2.0.0
及以上版本。
操作步骤
-
登录管理控制台。
-
选择产品与服务 > 数据库与缓存 > 关系型数据库 PostgreSQL,进入集群管理页面。
-
选择目标集群,点击目标集群 ID,进入集群详情页面。
-
点击配置参数页签,进入集群配置参数管理页面。
-
点击修改属性,公共参数值进入可编辑状态。
-
设置synchronous_readonly参数为
先写入内存,后写入硬盘
,fsync
参数设置为true
。async
:先写入内存,后写入硬盘,表示异步流复制模式。sync
:同步写入内存和硬盘,表示同步流复制模式。
设置同步流复制模式后,需开启半同步复制模式才生效。
-
确认参数信息无误后,点击保存,返回参数列表页面。