BDR 项目

来自 PostgreSQL Wiki
跳转至导航栏跳转至搜索

本页是对 BDR 开发项目的历史讨论。请查阅官方 BDR 页面以获取有关 Postgres-BDR® 的更多信息。


设计工作始于 2011 年底,研究如何向 PostgreSQL 内核添加新功能,以支持基于 9.1-9.2 版本新增流式复制功能构建和增强灵活的新复制基础设施。最初的设计和项目规划由 2ndQuadrant 的首席执行官 Simon Riggs 负责。他也是当前的产品负责人。其他 2ndQuadrant 团队成员还提供了各种补充开发工作,并得到了社区其他开发人员的审查和意见。

PgCon2012CanadaInCoreReplicationMeeting会上,展示了设计的初始版本。包含导致当前设计的原因和一个原型(包括初步性能结果)的演示稿已在此处提供

项目概述和计划

项目目标

  • 被纳入 PostgreSQL 开源发行版的主要部分
  • 快速
  • 其他项目(slony,...)可使用的可重复使用的单个部件
  • 构建更简单的分片/写入可伸缩性的基础
  • 已复制节点广泛的地理分布

Postgres-BDR® 的各个方面

BDR 涵盖一系列相关功能

  • AlwaysOn 可用性:通过使用数据库和模式的快速切换和滚动升级,为你的 PostgreSQL 数据库提供高达 99.9999%(六个 9)的可用性。
  • 全球集群:它支持分布在不同地理位置的集群,包括地理围栏的功能,并且旨在最大程度地降低节点之间的延迟。
  • 云原生:它专为云部署而设计。使用自我修复的 Kubernetes 运营商,BDR 可以在可信配置中快速部署。
  • 多主复制:多主复制允许使用自动冲突解决来对 DDL 和 DML 复制. 此外,它还提供了无冲突的复制数据类型(CRDT).

请注意,这些特性在 Oracle RAC 使用术语的意义上并不是“集群”。没有分布式锁管理器、全局事务协调程序等。此处的愿景是互连但仍独立的服务器,从而允许每个服务器具有截然不同的工作负载并仍共同操作,甚至可跨全球规模和广阔的地理环境。

其他术语

(物理)流复制讨论主服务器和备用服务器,因此我们也可以讨论主服务器及物理备用服务器,然后使用主服务器和逻辑备用服务器来描述 LLSR。当我们考虑复制可能是双向的,或未来可以按此方式重新配置时,该术语无效。

类似地,源、供应商和订户这些术语仅适用于单一源。

调优

由于架构的缘故,解决物理调优参数很少。随着实现成熟,物理调优参数可能增长,但增幅不会很大。

没有用于调优传输延迟的参数。

可能唯一的可调优参数是在将更改发送到下游之前用于积累更改的内存量。在许多方面与设置类似shared_buffers,且应在大机器上增加。

的变体hot_standby_feedback也可以实现,尽管可能需要重命名。

在读取 WAL 时进行 CRC 检查在该上下文中无效且可能存在跳过逻辑解码的选项,因为这可能是 CPU 瓶颈。

操作

BDR 用户指南中描述 BDR 用法。

选择性复制(表级/行级筛选)

LLSR 还不能支持在表或行级别选择数据,只能在数据库级别。将来能够支持此特性是一个设计目标。

DDL 复制

使用事件触发器和 DDL deparse 支持 DDL 复制,这将提交到 9.5。

BDR 限制一些 DDL。请参阅BDR 命令限制

核心更改

逻辑更改集提取

已并入 9.4。