EDB Postgres Distributed 6.0.1 release notes v6.0.1
Released: 9 June 2025
PGD 6 delivers simpler, more resilient high availability for Postgres. Traditional streaming replication often requires downtime for upgrades and routine maintenance—and depends on complex tooling. PGD solves these challenges with a built-in, logical replication-based architecture that enables online upgrades and maintenance without disrupting applications, helping teams keep services running smoothly even during operational changes. It also provides seamless failover and eliminates the need for external proxies, load balancers, or consensus systems.
Highlights
- New built-in Connection Manager: Automatically routes client connections to the correct node, simplifies application architecture, supports dynamic topology changes, and includes a built-in session pooler and dedicated read/write and read-only ports, all without external software or complex configuration. This new component replaces PGD Proxy, which is no longer available starting with PGD 6.
- Predefined Commit Scopes: Simplify consistency choices with built-in transaction durability profiles—no complicated setup needed. Choose the right balance of performance and protection, with scopes defined in system catalogs and ready to use out of the box.
- New CLI command for Cluster Setup: The pgd node setup command now enables initial cluster creation and node addition directly from the command line. This gives users more flexibility in how they deploy PGD and allows deployment tools to standardize on a consistent method.
Features
Description | Addresses |
---|---|
Built-in connection managerNew built-in connection manager which handles routing of connections automatically and allows enforcing of read-only connections to non-leader. | |
CLI cluster setupThe PGD CLI now allows initial cluster setup as well as adding nodes from command-line using | |
Set sequence kind on group create/joinTransform the sequences in distributed based on the | |
Set startvalue for distributed sequences automaticallySet the startvalue for galloc sequences to the following valid number after the last used by the local sequence. With this change, when creating distributed sequences and specifically galloc, there is no need to adjust the startvalue based on what might be already used. | |
Enabling of automatic sync and reconciliationAutomatic synchronization and reconciliation of node states is now enabled by default. This means that nodes will automatically synchronize their state with the leader node and reconcile any differences without requiring manual intervention. Read more in the documentation. | |
Add node_uuid column to bdr.node and bdr.local_nodeThe node_uuid uniquely identifies instance of a node of a given name. Random node_uuid is generated when node is created and remains constant for the lifetime of the node. The node_id column is now derived from node_uuid instead of node name. For the time being a node needs to be fully parted before before node of the same name can be rejoined, this may be relaxed in future releases to permit rejoin as soon as part_node process for the old instance has commenced and before it completed. For the time being upgrades from older PGD versions and mixed-version operation in clusters with older PGD nodes are not supported. This limitation will be addressed in future releases. | |
Change replication origin and slot naming schemeReplication origin and slot names now use node uuid and thus correspond to particular incarnation of a node of a given name. Similarly node group uuid is used instead of group name. Hash of database name is used in lieu of database name. Please note that origin and node names should be treated as opaque identifiers from user's perspective, one shouldn't rely on the structure of these names nor expect these to be particularly meaningful to a human operator. The new naming scheme is as follows: Slots Naming Convention
Origins Naming Convention:
| |
Limit on the number of node groups allowed in the system for PGD Essential.Ensure that no more than three node groups (one top group and two subgroups) can exist at any given time. If the limit is exceeded, an error is raised. | |
Enforced PGD Essential limits - data node countDon't allow PGD Essential clusters to join more than 4 data nodes. | |
Added | |
Subscriber-only nodes can now be added to data node groupsIn previous versions, subscriber-only nodes could only be added to node groups of type "subscriber-only". In PGD 6, a subscriber-only node can be also be added to a data node group by specifying node_kind='subscriber_only' when using create_node. The join_node_group can then be done using a data node group. | |
Add | |
Add node_uuid column to |
Enhancements
Description | Addresses |
---|---|
Multiple conflicting rows resolutionBoth | |
Improved | |
The PARTED node is removed automatically from all nodes in the cluster.From PGD 6.0.0, bdr.part_node functionality is enhanced to remove the parted node’s metadata automatically from all nodes in the cluster.
| |
The | |
More GUCs verfied in | |
Table rewriting | |
Restrictions on non-immutable | |
Synchronize roles and tablespaces during logical joinRoles and tablespaces are now synchronized before the schema is restored from the join source node. If there are already existing roles or tablespaces (or EPAS profiles, they will be updated to have the same settings, passwords etc. as the ones from the join source node. System roles (i.e. the ones created by initdb) are not synchronized. | |
Introduce | |
Leader DML lockNew lock type leader DML lock is used by default for locking DDL statements that need to block DML. This lock locks on write-leaders only, no requiring all nodes to participate in the locking operation. Old behavior can be restored by adjusting | |
Disabling bdr.xact_replication in run_on_* functionsFunctions | |
Replica Identity full by defaultThe When the PGD group is created and the database of the initial PGD node is not empty (i.e. has some tables with data) the REPLICA IDENTITY of all tables will be set according to | |
Tablespace replication as a DDL operation is supported.Tablespace operations | |
Improve the CLI debug messages.Improve the formating of the log messages to be more readable and symmetrical with Postgres log messages. | |
New column for | |
Display sorted output for CLI.The output for the commands with tabular output are now sorted by the resource name. Commands that display more than one resource will sort output by each resource column in order. | |
Subscriber-only nodes replication.Subscriber-only nodes now receive data only after it has been replicated to majority of data nodes. This does not require any special configuration. Subsequently bdr.standby_slot_names and bdr.standby_slots_min_confirmed options are removed as similar physical standby functionality is provided in pg_failover_slots extension and in PG17+. | |
automatic node sync and reconciliation is enabled by default.The GUC | |
Remove the deprecated legacy CLI commands.Remove the old (PGD 5 and below) CLI commands, which were deprecated but supported for backward compatibility. | |
Commit scope logic is now only run on data nodes.Previously, non-data nodes would attempt to handle, but not process commit scope logic, which could lead to confusing, albeit harmless log messages. | |
Explicitly log the start and stop of dump and restore operations.This provides greater visibility into the node cloning process and assists with debugging possible issues. |
Changes
Description | Addresses |
---|---|
Routing is now enabled by default on subgroupsRouting (and by extension raft) is now enabled by default on data-groups (subgroups with data nodes). | |
Function | |
Deprecated | |
BDR global sequences can no longer created as or set to |
Bug Fixes
Description | Addresses |
---|---|
Fix the CLI | |
Fix the CLI | |
Fixed the timestamp parsing issue for | |
Fixed issue where parting node may belong to a non-existing groupWhen parting a given node, that same node may have subscriptions whose origin was already parted and the group dropped. Previously this would break PGD, and has since been fixed. | |
num_writers should be positive or -1The num_writers option, used in bdr.alter_node_group_option() and bdr.alter_node_group_config() should be positive or -1. | |
Fix replication breakage with updates to non-unique indexesFixes the case where an update to a table with non-unique indexes results in the ERROR | 43523,43802,45244,47815 |
Fix Raft leader election timeout/failure after upgradeEnsure that any custom value set in the deprecated GUC | |
Ensure that disables subscriptions on subscriber-only nodes are not re-enabledDuring subscription reconfiguration, if there is no change required to a subscription, do not enable it since it could have been disabled explicitly by the user. Skip reconfiguring subscriptions if there are no leadership changes. | 46519 |
Subscriber-only nodes will not take a lock when running DDLSubscriber-only nodes will no longer attempt to take a lock on the cluster when running DDL. The DDL will be executed locally and not replicated to other nodes. | 47233 |
Fixed hang in database system shutdown.Fixed non-transactional WAL message acknowledgment by downstream that could cause a WAL sender to never exit during fast database system shutdown. | 49022 |
Fixed deadlock issue in bdr_init_physical.Fixed deadlock between bdr_init_physical cleaning unwanted node data and concurrent monitoring queries. | 46952 |
Fixed new cluster node consistency issue.Fixed an issue when new node joining the cluster finishes CATCHUP phase before getting its replication progress against all data nodes. This may cause new node being out of sync with the cluster. | |
Ensure correct sequence type is displayed in CREATE SEQUENCE warningsIn some cases, warning messages referred to |
- On this page
- Highlights
- Features
- Enhancements
- Changes
- Bug Fixes