Deep Dive# Node types and capabilities An overview of PGD Node types Data nodes Witness nodes Logical standby nodes Subscriber-only nodes Witness nodes Witness nodes within PGD groups or regions Witness node outside regions Logical standby nodes Subscriber-only nodes and groups An overview of Subscriber-only nodes Creating Subscriber-only groups and nodes Joining nodes to a Subscriber-only group Optimizing subscriber-only groups Node management Creating PGD nodes It’s just Postgres Which Postgres version? Installing Postgres Installing the BDR extension Setting up the replicated database Next steps Groups and subgroups Groups Sub-groups Creating and joining PGD groups Creating and joining PGD groups Viewing PGD topology Listing PGD groups Listing nodes in a PGD group Removing nodes and groups Removing a node from a PGD group Automatically evicting lagging nodes Removing a whole PGD group Node restart and down node recovery Automatic synchronization Auto-triggering the Sync Cancellation Sync Request Life Cycle GUC Node UUIDs Why UUIDs? How are UUIDs generated? What happens if a node is removed and a replacement added? UUID-related changes in PGD 6 Replication slots created by PGD Other slot names Connection Manager Connection Manager overview About Connection Manager Using Connection Manager Authentication Connection pooling Load balancing Configuration Monitoring Connection Manager Authentication Connection Manager connection types Connection Manager authentication methods Connection Manager authentication options Unsupported pg_hba.conf rules LDAP authentication notes and constraints Connection pooling Configuring the pool mode Configuring the reset mode Managing session parameters Using prepared statements Reusing connections Unsupported features Load Balancing with Connection Manager Connection Manager routing Direct routing Configuring Connection Manager Configuring Connection Manager Monitoring the Connection Manager Available SQL tables and views Available HTTP/HTTPS endpoints Logging Postgres configuration Postgres settings Max prepared transactions max_prepared_transactions Considerations for global configuration AutoPartition in PGD Auto creation of partitions AutoPartition examples RANGE-partitioned tables Stopping automatic creation of partitions Waiting for partition creation Finding a partition Enabling or disabling autopartitioning Dropping or detaching a partition Working with Introducing Commit scope kinds Working with commit scopes Overview of durability options Durability terminology Commit scopes Predefined commit scopes Commit scope groups Commit scope rules Comparing durability options Degrading commit scope rules Commit Scope Kinds Administering Legacy synchronous replication using PGD Internal timing of operations Conflict Management Conflicts Overview Types of Conflict Conflict detection Conflict resolution Conflict logging Data verification with LiveCompare Column-level conflict detection Overview Enabling and disabling column-level conflict resolution Timestamps in column-level conflict resolution Conflict-free replicated data types CRDTs Overview Using CRDTs Operation-based and state-based CRDTs CRDT Disk-space requirements CRDTs vs conflict handling/reporting Resetting CRDT values Implemented CRDTs Advanced functionality DDL replication DDL overview DDL replication options DDL locking details Managing DDL with PGD replication DDL command handling matrix DDL and role manipulation statements Workarounds for DDL restrictions PGD functions that behave like DDL Application use DML and DDL replication and nonreplication Nodes with differences Timing considerations and synchronous replication Using extensions with PGD Use of table access methods (TAMs) in PGD Feature compatibility Decoding worker Enabling Disabling CDC Failover support Background CDC Failover support Enabling CDC Failover support CDC Failover support with Postgres 17+ Obtaining Initial Consistent Snapshot Failing Over to Newly Joined Nodes Tracking Per-Origin Progress Limitations Parallel Apply What is Parallel Apply? Replication sets Using replication sets Behavior of partitioned tables Behavior with foreign keys Replication set membership Listing replication sets DDL replication filtering Selective replication example Security and roles Roles Role management PGD predefined roles Roles and replication Access control Sequences Automatic sequence conversion UUIDs, KSUUIDs, and other approaches KSUUID v2 functions See also Replicated large objects Using replicated large objects How large objects are stored Limitations Stream triggers Trigger execution during apply Terminology of row-types Conflict triggers Transform triggers Row contents Execution order Stream triggers examples Transaction streaming PGD enhancements Configuration Monitoring Explicit two-phase commit (2PC) Use