Skip to content

[toygres] Replica support - streaming replication #24

@affandar

Description

@affandar

Repository

affandar/toygres

Current State

Toygres currently manages single-instance Postgres deployments with no replication.

Proposed Features

Add Replica API

client.add_replica(AddReplicaRequest {
    instance_id: "pg-prod-1".into(),
    replica_id: "pg-prod-1-replica-1".into(),
    replica_config: ReplicaConfig {
        size: "small".into(),
        region: "us-east-1".into(),
        replication_mode: ReplicationMode::Async, // or Sync
    },
}).await?;

Orchestration Flow

  1. Provision replica VM/container
  2. Configure replica Postgres (recovery.conf, primary_conninfo)
  3. Take base backup from primary
  4. Start replica in standby mode
  5. Wait for initial sync
  6. Register replica in instance state
  7. Start replication lag monitoring

List Replicas

let instance = client.get_instance("pg-prod-1").await?;
for replica in &instance.replicas {
    println!("{}: lag={}ms, state={:?}", replica.id, replica.replication_lag_ms, replica.state);
}

See: proposals/toygres-improvements.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    toygresToygres test application

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions