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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
5月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之数据库处于只读状态,如何恢复其读写功能
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之数据库处于只读状态,如何恢复其读写功能
|
7月前
|
关系型数据库 测试技术 数据库
`pg_rewind` 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点
pg_rewind 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点。这对于恢复数据或解决某些问题非常有用。 简单来说,如果你有一个 PostgreSQL 数据库集群并且你知道在某个时间点它是健康的,但之后出现了问题,你可以使用 pg_rewind 来将数据库回退到那个时间点,从而恢复到已知的、健康的、一致的状态。 使用 pg_rewind 的基本步骤如下: 确定基准时间:首先,你需要确定一个基准时间点,知道在该时间点上数据库是健康的。 备份当前数据库:在执行 pg_rewind 之前,确保你已经备份了当前的数据库。 执行 pg_rewind:使用
225 1
|
7月前
|
SQL Oracle 关系型数据库
Oracle只读事务和PolarDB只读事务的差异
在交付PolarDB的过程中我们也遇到了只读事务造成的困扰,本文主要介绍Oracle只读事务和PolarDB只读事务的不同。
223 0
Oracle只读事务和PolarDB只读事务的差异
|
存储 Oracle NoSQL
【DB吐槽大会】第76期 - PG 不支持共享存储多活架构
大家好,这里是DB吐槽大会,第76期 - PG 不支持共享存储多活架构
|
关系型数据库 数据库 PostgreSQL
【DB吐槽大会】第38期 - PG 不能自动创建(扩展)分区
大家好,这里是DB吐槽大会,第38期 - PG 不能自动创建(扩展)分区
|
SQL 存储 关系型数据库
【DB吐槽大会】第60期 - PG 只读实例不支持写操作
大家好,这里是DB吐槽大会,第60期 - PG 只读实例不支持写操作
|
运维 容灾 关系型数据库
【DB吐槽大会】第79期 - PG standby不支持配置多个上游节点
大家好,这里是DB吐槽大会,第79期 - PG standby不支持配置多个上游节点
|
SQL 关系型数据库 数据库
【DB吐槽大会】第20期 - PG pg_upgrade大版本升级不支持增量
大家好,这里是DB吐槽大会,第20期 - PG pg_upgrade大版本升级不支持增量
|
存储 JSON 搜索推荐
【DB吐槽大会】第35期 - “富人”的烦恼?PG 不会自动选择索引类型
大家好,这里是DB吐槽大会,第35期 - “富人”的烦恼?PG 不会自动选择索引类型
|
SQL 关系型数据库 数据库
【DB吐槽大会】第75期 - PG 不支持索引失效功能
大家好,这里是DB吐槽大会,第75期 - PG 不支持索引失效功能

热门文章

最新文章