【DB吐槽大会】第44期 - PG 同步复制不支持自动升降级

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 大家好,这里是DB吐槽大会,第44期 - PG 同步复制不支持自动升降级

背景


1、产品的问题点

  • PG 同步复制不支持自动升降级

2、问题点背后涉及的技术原理

  • PG 支持多种事务提交级别 (synchronous_commit):
  • 本地wal bufferio完成(异步, 未持久化)
  • 本地wal持久化
  • wal多副本: 远程wal bufferio完成
  • wal多副本: 远程wal持久化
  • wal多副本: 远程wal恢复完成

https://www.postgresql.org/docs/14/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-PRIMARY

synchronous_commit = local, remote_write, remote_apply, on, off  
synchronous_standby_names =   
[FIRST] num_sync ( standby_name [, ...] )  
ANY num_sync ( standby_name [, ...] )  
standby_name [, ...]  

3、这个问题将影响哪些行业以及业务场景

  • 使用PG 流复制作为高可用搭建基础, 并且开启了同步复制模式的场景.

4、会导致什么问题?

  • 如果用户的事务选择了wal多副本模式, 并且远程节点一直未响应(或者响应的节点数未凑够副本数), commit将在队列中死等, 客户端收不到事务结束信号, 导致事务提交hang的现象.

5、业务上应该如何避免这个坑

  • 主动cancel等待, 会收到一个warning, 表示事务在远程可能没有同步
  • 管理员修改PG的事务提交模式设置, 同时发信号给等待中的事务, 降级为异步提交

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 管理更加复杂
  • 改成异步模式后, 还需要改回来?
  • 人为的介入时间周期长, 响应不及时, 高峰期的抖动及其可能引起业务雪崩.

7、数据库未来产品迭代如何修复这个坑

  • 内核层支持同步模式自动升级、降级 (半同步, 自动升级, 自动降级)
  • 目前RDS PG支持, 期待polardb pg支持并开源



相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
9月前
|
存储 关系型数据库 Java
polardb有没有搞过pg 全量及增量备份管理的
【1月更文挑战第3天】【1月更文挑战第11篇】 polardb有没有搞过pg 全量及增量备份管理的
88 1
|
9月前
|
关系型数据库 测试技术 数据库
`pg_rewind` 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点
pg_rewind 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点。这对于恢复数据或解决某些问题非常有用。 简单来说,如果你有一个 PostgreSQL 数据库集群并且你知道在某个时间点它是健康的,但之后出现了问题,你可以使用 pg_rewind 来将数据库回退到那个时间点,从而恢复到已知的、健康的、一致的状态。 使用 pg_rewind 的基本步骤如下: 确定基准时间:首先,你需要确定一个基准时间点,知道在该时间点上数据库是健康的。 备份当前数据库:在执行 pg_rewind 之前,确保你已经备份了当前的数据库。 执行 pg_rewind:使用
257 1
|
存储 运维 负载均衡
PolarDB-X 全局Binlog解读之HA篇
本篇对PolarDB-X 全局binlog系统的高可用机制以及稳定性相关的内容进行介绍,主要以FAQ的方式展开,并对核心问题进行重点描述。
PolarDB-X 全局Binlog解读之HA篇
|
存储 SQL 缓存
PolarDB-X 全局Binlog解读之性能篇(下)
本篇为《PolarDB-X 全局Binlog解读之性能篇(上)》的姊妹篇,将从技术原理角度聊一聊PolarDB-X CDC的一些性能优化手段。
PolarDB-X 全局Binlog解读之性能篇(下)
|
SQL 弹性计算 Java
PolarDB-X 全局Binlog解读之性能篇(上)
本篇来介绍一下PolarDB-X全局binlog在性能方面的一些设计和思考,先通过几个实际的测试案例来展示全局binlog的性能情况,然后结合这些案例来深入讲解全局binlog关于优化的故事。
PolarDB-X 全局Binlog解读之性能篇(上)
|
9月前
|
SQL Oracle 关系型数据库
Oracle只读事务和PolarDB只读事务的差异
在交付PolarDB的过程中我们也遇到了只读事务造成的困扰,本文主要介绍Oracle只读事务和PolarDB只读事务的不同。
239 0
Oracle只读事务和PolarDB只读事务的差异
|
存储 Oracle NoSQL
【DB吐槽大会】第76期 - PG 不支持共享存储多活架构
大家好,这里是DB吐槽大会,第76期 - PG 不支持共享存储多活架构
|
SQL 存储 关系型数据库
【DB吐槽大会】第60期 - PG 只读实例不支持写操作
大家好,这里是DB吐槽大会,第60期 - PG 只读实例不支持写操作
|
运维 容灾 关系型数据库
【DB吐槽大会】第79期 - PG standby不支持配置多个上游节点
大家好,这里是DB吐槽大会,第79期 - PG standby不支持配置多个上游节点
|
存储 JSON 搜索推荐
【DB吐槽大会】第35期 - “富人”的烦恼?PG 不会自动选择索引类型
大家好,这里是DB吐槽大会,第35期 - “富人”的烦恼?PG 不会自动选择索引类型