🗄️ Database

Read Replicas

Configure read replicas for database scaling.

Overview

Read replicas offload read queries from the primary database, improving performance for read-heavy workloads.

Diagram; its source is available below
Diagram source
graph LR
    API[API Write Requests] --> Primary[(Primary DB)]
    API2[API Read Requests] --> Replica[(Read Replica)]
    Primary -->|Replication| Replica

PostgreSQL Streaming Replication

Primary Configuration

# postgresql.conf
wal_level = replica
max_wal_senders = 5
wal_keep_size = '1GB'

Replica Configuration

# Create replica from primary
pg_basebackup -h primary-host -D /var/lib/postgresql/data -U replication -P

# recovery.conf (or standby.signal in PG12+)
primary_conninfo = 'host=primary-host port=5432 user=replication password=secret'

TypeORM Configuration

// ormconfig.ts
{
  type: 'postgres',
  replication: {
    master: {
      host: process.env.DB_HOST,
      port: 5432,
      username: process.env.DB_USER,
      password: process.env.DB_PASS,
      database: process.env.DB_NAME,
    },
    slaves: [
      {
        host: process.env.DB_REPLICA_HOST,
        port: 5432,
        username: process.env.DB_USER,
        password: process.env.DB_PASS,
        database: process.env.DB_NAME,
      },
    ],
  },
}

Query Routing

TypeORM automatically routes:

  • Writes (INSERT, UPDATE, DELETE) → Primary
  • Reads (SELECT) → Replicas (round-robin)

Edit this page

Copyright © 2023-Present Ever Co. LTD.Docs by Sourcey