Files
oam/knowledge base/pg_flo.md
2024-11-05 08:51:16 +01:00

2.6 KiB

pg_flo

Move and transform data between PostgreSQL databases using Logical Replication.

  1. TL;DR
  2. Further readings
    1. Sources

TL;DR

Setup
Check requirements
sourceDb=> SELECT name,setting FROM pg_settings WHERE name IN ('wal_level','rds.logical_replication');
          name           | setting
-------------------------+---------
 rds.logical_replication | on
 wal_level               | logical
(2 rows)
docker pull 'nats' && docker pull 'shayonj/pg_flo'
Configuration file

Reference

# Replicator settings
host: "localhost"
port: 5432
dbname: "myapp"
user: "replicator"
password: "secret"
group: "users"
tables:
  - "users"

# Worker settings (postgres sink)
target-host: "dest-db"
target-dbname: "myapp"
target-user: "writer"
target-password: "secret"

# Common settings
nats-url: "nats://localhost:4222"
Usage
# Start NATS server
docker run -d --name 'pg_flo_nats' --network 'host' -v "$PWD/config/nats-server.conf:/etc/nats/nats-server.conf" \
  'nats' -c '/etc/nats/nats-server.conf'

# Start replicator (using config file)
docker run -d --name 'pg_flo_replicator' --network 'host' -v "$PWD/config/pg_flo.yaml:/etc/pg_flo/config.yaml" \
  'shayonj/pg_flo' replicator --config '/etc/pg_flo/config.yaml'

# Start worker
docker run -d --name 'pg_flo_worker' --network 'host' -v "$PWD/config/pg_flo.yaml:/etc/pg_flo/config.yaml" \
  'shayonj/pg_flo' worker postgres --config '/etc/pg_flo/config.yaml'

Further readings

Sources