Skip to main content

Module replication

Module replication 

Source
Expand description

Replication Module

Implements single-primary, multi-replica replication via WAL streaming.

§Architecture

  • Primary: accepts writes and streams WAL records to replicas
  • Replica: read-only, connects to primary for WAL streaming
  • Initial sync via snapshot transfer, then incremental WAL

§Usage

// Primary
let options = RedDBOptions::persistent("./primary-data")
    .with_replication(ReplicationConfig::primary());

// Replica
let options = RedDBOptions::persistent("./replica-data")
    .with_replication(ReplicationConfig::replica("http://primary:55055"));

Re-exports§

pub use cascade::plan_upstream;
pub use cascade::CascadeRefusal;
pub use cascade::CascadeRelay;
pub use cascade::CascadeUpstream;
pub use cascade::DownstreamSlot;
pub use cascade::ReplicaClass;
pub use cascade::UpstreamChoice;
pub use commit_policy::CommitPolicy;
pub use commit_waiter::AwaitOutcome;
pub use commit_waiter::CommitWaiter;
pub use control_plane::ControlPlaneConsensus;
pub use control_plane::ControlPlaneEntry;
pub use control_plane::ControlPlaneEntryKind;
pub use control_plane::ControlPlaneLogIndex;
pub use control_plane::ControlPlanePayload;
pub use control_plane::ControlPlaneRole;
pub use control_plane::MemberId;
pub use control_plane::ProposeRefusal;
pub use election::quorum_threshold;
pub use election::randomized_election_timeout;
pub use election::ElectionCoordinator;
pub use election::ElectionOutcome;
pub use election::ElectionRequest;
pub use election::ElectionTransport;
pub use election::LastVote;
pub use election::LastVoteError;
pub use election::LastVoteStore;
pub use election::Member;
pub use election::MemberKind;
pub use election::MemoryLastVoteStore;
pub use election::RefusalReason;
pub use election::VoteDecision;
pub use election::VoteRequest;
pub use election::Voter;
pub use election::VotingState;
pub use failover::FailoverCoordinator;
pub use failover::FailoverError;
pub use failover::FailoverMode;
pub use failover::FailoverNode;
pub use failover::FailoverOutcome;
pub use failover::FailoverRequest;
pub use failover::FailoverTransport;
pub use failover::NodeRole;
pub use failover::RoleAssignment;
pub use fence::term_is_stale;
pub use fence::FenceBoundary;
pub use fence::FenceVerdict;
pub use fence::MemoryTermStore;
pub use fence::StaleTermFenced;
pub use fence::StaleTermRejection;
pub use fence::StreamHandshake;
pub use fence::TermFence;
pub use fence::TermStore;
pub use fence::TermStoreError;
pub use flow_control::Admission;
pub use flow_control::FlowController;
pub use lease::LeaseError;
pub use lease::LeaseStore;
pub use quorum::QuorumConfig;
pub use quorum::QuorumCoordinator;
pub use quorum::QuorumError;
pub use rollback::DivergentTail;
pub use rollback::RollbackCoordinator;
pub use rollback::RollbackError;
pub use rollback::RollbackEvent;
pub use rollback::RollbackOutcome;
pub use rollback::RollbackPlan;
pub use rollback::RollbackRequest;
pub use rollback::RollbackTransport;
pub use rollback::TailRecord;
pub use signal_plane::CatalogVersionHint;
pub use signal_plane::IntraClusterSignalBus;
pub use signal_plane::LivenessObservation;
pub use signal_plane::LivenessStatus;
pub use signal_plane::LoadBucket;
pub use signal_plane::LoadMetricSample;
pub use signal_plane::MemberHealthInput;
pub use signal_plane::ReceivedSignal;
pub use signal_plane::SharedSignalTransport;
pub use signal_plane::SignalFrame;
pub use signal_plane::SignalPlane;
pub use signal_plane::SignalPlaneLimits;
pub use signal_plane::SignalPlaneMessage;
pub use signal_plane::SignalPlaneMetrics;
pub use signal_plane::SignalPlaneSchedule;
pub use signal_plane::SignalTransportError;
pub use signal_plane::SimulatedSignalPlane;
pub use signal_plane::TopologyHint;
pub use signal_plane::TransportSignalPlane;
pub use swap_db::RebootstrapInProgress;
pub use swap_db::SwapDb;
pub use topology_advertiser::LagConfig;
pub use topology_advertiser::TopologyAdvertiser;
pub use topology_advertiser::TopologyAuthGate;
pub use topology_advertiser::DEFAULT_REPLICA_TIMEOUT_MS;
pub use topology_advertiser::TOPOLOGY_READ_CAPABILITY;
pub use witness::RuntimeProfile;
pub use witness::WitnessSupervisor;

Modules§

bookmark
Compatibility reexport for causal bookmark wire tokens.
cascade
Cascading replication for async read-replicas (issue #838, PRD #819).
cdc
Change Data Capture (CDC) — stream of database change events.
commit_policy
Primary commit policies (PLAN.md Phase 11.4).
commit_waiter
Synchronous commit waiter (PLAN.md Phase 11.4 — ack_n).
control_plane
Control-plane consensus seam (issue #996, parent #987, ADR 0052).
dst
Deterministic simulation testing helpers for the replication control plane.
election
Term-based, quorum-gated automatic election (issue #834, PRD #819, ADR 0030).
failover
Coordinated zero-RPO failover (issue #833, PRD #819).
fence
Stale-term fencing for a returning ex-primary (issue #835, PRD #819, ADR 0030).
flow_control
Write-admission flow control keyed on in-quorum replica lag (issue #826).
lease
Serverless writer lease (PLAN.md Phase 5 / W6).
logical
Logical replication helpers shared by replica apply and point-in-time restore.
primary
Primary-side replication: WAL record production and snapshot serving.
quorum
Quorum-based commit coordination (Phase 2.6 multi-region PG parity).
reconnect
Primary↔replica reconnect telemetry (issue #1243, PRD #1237 Phase B).
replica
Replica-side replication: connects to primary, consumes WAL records.
rollback
Auto-rollback of a deposed primary to the common point (issue #840, PRD #819, ADR 0030).
scheduler
Backup Scheduler — automatic periodic snapshots with optional remote upload.
signal_plane
Signal-plane dissemination seam (issue #1842, parent #1832, ADR 0073).
swap_db
Stay-readable re-bootstrap with an atomic dataset swap (issue #837, PRD #819).
topology_advertiser
Server-side TopologyAdvertiser (issue #167).
witness
Witness runtime profile (issue #836, PRD #819, ADR 0030).

Structs§

CausalBookmark
FailoverProfile
Tuned failover constants over the existing lease, health, and grace mechanisms.
FileLastVoteStore
FileTermStore
ReplicationConfig
Configuration for replication.
WriterLease

Enums§

BookmarkDecodeError
FailoverProfileName
Named failover timing posture.
ReplicationRole
Role of this RedDB instance in a replication cluster.

Constants§

DEFAULT_REPLICATION_TERM
DEFAULT_SLOT_IDLE_TIMEOUT_MS
DEFAULT_SLOT_RETENTION_MAX_LAG_LSN
SHIPPED_FAILOVER_PROFILES