PgCluster

From PostgreSQL wiki
Jump to navigationJump to search

Project Overview

PGCluster is a multi-master and synchronous replication tool of PostgreSQL based on shared-nothing architecture, developed by Atsushi Mitani and PGCluster developer's team.

Project Status

Status: Production/Retired

The lead developer of pgCluster has moved on to pgCluster2, and all development on pgCluster has halted. While pgCluster's code is not fully mature, it is being used in production at a few sites.

Archived project code is available in PgFoundry archives

Project Contacts

  • Atsushi Mitani, original developer.

General Information

  • Scalability: 3-6
  • Read Scaling: some
  • Write Scaling: negative scaling
  • Triggers/procedures: Yes
  • Parallel Query: No
  • Failover/HA: Yes
  • Online Provisioning: with issues
  • PostgreSQL Upgrades: No
  • Detached Node/WAN: No
  • PostgreSQL Core Modifications Required: Yes
  • Programming Languages: C
  • Licensing: OSS, BSD license
  • Complete Cluster: Yes

Clustering Model

General Model: Synchronous multi-master binary replication with load-balancing and automated failover

Use Case

  • Multimaster: all nodes appear identical, without lag
  • Rapid failover
  • No single point of failure (when fully implemented)

The primary feature of pgCluster is preventing data loss or the system going offline. All nodes are synchronous, and in a 6-server configuration any machine may be lost with no loss of data. It is intended to supply some read scaling as well, but does not in practice for most users.

Intended Features:

  1. HA
    • DB Service does not stop during fail over, auto recovery, dynamic add and upgrade server etc.
    • No Single point of failure.
    • Auto adjust data transfer speed based on network bandwidth.
    • Load balance server and monitoring server are including.
  2. Synchronous multi‐master configuration
    • Any update to any master is visible from other masters immediately.
    • No change in transaction handling.
    • Value of now() and random() are replicated.
  3. Based upon PostgreSQL
  4. Same API to Apps. as PostgreSQL

Drawbacks

  • Solution not mature
  • Negative scalability
  • Lack of online provisioning
  • Expense/complexity of setup
  • Fork of PostgreSQL

pgCluster had a number of architectural issues which caused its primary developer to start over with a new approach before it ever reached real maturity. Thus, a large number of issues and corner cases are simply not handled, and and many major features such as online provisioning were never completed.

A complete pgcluster requires at least 6 machines (3 database servers, 2 load balancers and a monitoring/failover controller). Also, it requires modifications to PostgreSQL core, so the Postgres version of pgCluster is always behind the mainstream version.

Project Sponsors

Support

Cybertec.at offers support for pgCluster through their "CyberCluster" product.

Other Information