Explanation
Storage Strategy¶
Why CNPG clusters use single-replica storage.
The Decision¶
PostgreSQL databases deployed with CNPG use the longhorn-redundant-app storage class:
storage:
size: 10Gi
storageClass: longhorn-redundant-app # 1 Longhorn replica
Rationale¶
PostgreSQL with N≥2 instances already provides application-level replication. Adding storage-level replication is redundant:
With 2-Instance Cluster¶
Single-replica storage (recommended):
2 PostgreSQL instances × 1 storage replica = 2 total copies
Cost: 1x storage per instance
Safety: Survives 1 node failure (via PostgreSQL failover)
Dual-replica storage (wasteful):
2 PostgreSQL instances × 2 storage replicas = 4 total copies
Cost: 2x storage per instance
Safety: Same as above (no additional benefit)
Result: Dual-replica wastes 50% storage for zero safety improvement.
When to Use Multi-Replica Storage¶
Single-instance databases (instances=1) should use longhorn (2 replicas):
No application-level replication
Storage replication provides safety
Example: Development/test databases
Storage Class Comparison¶
Storage Class |
Replicas |
Use Case |
|---|---|---|
|
1 |
Multi-instance databases (PostgreSQL N≥2) |
|
2 |
Single-instance databases, general workloads |
|
3 |
Mission-critical data (rarely needed) |