PostgreSQL Master-Slave Synchronization

本来一直在用 Supabase,但是苦于 Free Plan 只能创建两个 Database,所以不得不寻找其他方案。 最初的想法是,在我美国的不同地区的 Servers 上部署 PG Instance,并且实现 HA (High Availability) 和 Replication。但是我发现如果要实现 HA,至少需要三个 Servers,而且需要保证三个 Servers 之间的优秀的网络。我又没有那么多 Servers,所以最后放弃了 HA。仅保留了主从 Replication,也就是说只要我在 Master 上创建了 Database,那么从数据库也会自动创建一个相同的 Database,并且自动同步数据。 我找到了一个相对来说比较简单的方案,就是使用 bitnami/postgresql 这个 Docker Image。 部署 Master Instance services: postgres-primary: image: bitnami/postgresql:latest env_file: - .env restart: always volumes: - ./data/primary:/bitnami/postgresql ports: - "5432:5432" # .env POSTGRESQL_REPLICATION_MODE=master POSTGRESQL_REPLICATION_USER=replicator POSTGRESQL_REPLICATION_PASSWORD=password_hard_to_guess POSTGRESQL_USERNAME=postgres POSTGRESQL_PASSWORD=password_hard_to_guess POSTGRESQL_DATABASE=mydb Slave Instance services: postgres-replica: image: bitnami/postgresql:latest env_file: - .env restart: always volumes: - ....

Sunday, May 4, 2025 · Vincent Young