I'm reimplementing Oracle RAC on PostgreSQL — in the open.
PostgreSQL has never had a shared-disk, multi-active cluster (its HA is shared-nothing replication). pgrac brings the Oracle RAC model — many nodes, one shared database, Cache Fusion / SCN / GES — to PostgreSQL 16.13.
First stable MVP: v0.130.0.
The CI-qualified MVP now has four valid four-node point-update samples with 32 clients per node, complete million-row data comparisons, health and outstanding-work checks, and normal shutdown. It also retains the earlier 8/16-client, soak, block-transfer and same-data normal-restart acceptance.
Stable within the tested MVP scope, not production certified. This does not certify crash recovery, failover, rolling upgrades, all SQL features or performance targets. See the release notes for the exact scope and limitations.
Releases use immutable annotated tags. Read the version policy to identify a build or select a frozen source baseline. Detailed feature status remains at pgrac.dev/features.
Two PostgreSQL nodes, one cluster, a live TCP heartbeat interconnect — the per-peer heartbeat counters climb in real time:
Reproduce it locally in about a minute — see Multi-node cluster in the bootstrap guide.
Project site: pgrac.dev — architecture deep-dives, the full feature catalog, and a side-by-side comparison with Oracle RAC (coming online).
pgrac targets the full Oracle RAC model. Part of it runs today; much is still being built (see the status above) — these diagrams show the design.
Cluster topology — shared storage, interconnect, Cache Fusion, Active DG standby:
The stack — which layers are stock PostgreSQL vs. pgrac additions:
Cache Fusion — conceptual GRD/block-transfer flow; see the MVP capability guide for the current validated scope:
Cluster MVCC — conceptual global-SCN visibility and per-node undo:
More diagrams and deep-dives at pgrac.dev.
Start with the stable MVP guide and single-host Linux Quick Start. The guide links the parameter, system-view and capability references, and distinguishes tested single-host operation from unqualified multi-host/failover deployment. The historical prerelease manual remains available unchanged.
User-facing manual:
| Topic | File |
|---|---|
| Installation | docs/user-guide/install.md |
| Bootstrap a node | docs/user-guide/bootstrap.md |
Configuration (cluster.* GUCs + pgrac.conf) |
docs/user-guide/configuration.md |
| System views reference | docs/reference/system-views.md |
| Wait events reference | docs/reference/wait-events.md |
| Cross-node transaction safety | docs/reference/cluster-transaction-safety.md |
| Architecture overview | docs/architecture/overview.md |
PostgreSQL upstream documentation lives under doc/ and is shipped unchanged
from the upstream tree.
For the stable MVP, follow the single-host Linux guide. This is a source release, not a turnkey production installer.
git clone --branch v0.130.0 --single-branch \
https://github.com/sqlrush/pgrac.git pgrac-mvp1
cd pgrac-mvp1
git rev-parse HEAD
cat PGRAC_VERSIONFollow the guide for compilation, initialization and the explicit four-host deployment-validation boundary. Do not independently initialize four databases or share one PGDATA among four postmasters.
The build follows the standard PostgreSQL configure + make + make install
flow. Two extra flags are pgrac-specific:
--enable-clusteractivates the cluster subsystem.--enable-tap-testsenables the TAP test suites (Perl).
See docs/user-guide/install.md for the complete dependency list and step-by-step instructions on macOS and Linux.
pgrac is built in public and early — testing, feedback, and patches all help.
See CONTRIBUTING.md and the good first issue label.
pgrac's cluster code is original work by WangYingJie sqlrush@gmail.com,
licensed under the PostgreSQL License (BSD-style) — the same terms as
PostgreSQL itself. See LICENSE and COPYRIGHT.
File issues at https://github.com/sqlrush/pgrac/issues.
Forked from PostgreSQL 16.13 (https://www.postgresql.org).
