Skip to content

Replicate at the database layer, never at both

A database that replicates itself must sit on single-replica storage. The failure mode to avoid is stacking the database's own replication on top of Longhorn's, so the same bytes are mirrored twice by two layers that do not know about each other.

Count the copies for a three-instance database:

Layout DB instances Longhorn replicas/vol Total copies Real HA
single instance, normal Longhorn 1 3 storage-only, reattach with downtime
three instances, replica-1 Longhorn 3 1 yes, database-layer failover
three instances, normal Longhorn 3 3 yes, wastefully

The single-instance and three-instance-replica-1 layouts store the data the same 3×. The difference is only how those three copies are spent: three block-mirrors of one process, or three independent database replicas. For equal disk the second buys real HA — automatic failover instead of a volume reattach — so it is the choice. The 9× layout is the anti-pattern and is rejected outright.

The rule that falls out: database volumes go on a numberOfReplicas: 1 storage class, and the database owns its own redundancy. Losing a node takes one instance with it; the operator rebuilds a fresh replica from the survivors.