From ab5ec59eb85825d23ea9fd7d486acaa0f76ad8da Mon Sep 17 00:00:00 2001 From: marcel-dempers Date: Wed, 26 Oct 2022 16:55:54 +1100 Subject: [PATCH] replication wip --- .../postgres/3-replication/README.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/storage/databases/postgres/3-replication/README.md b/storage/databases/postgres/3-replication/README.md index e69de29..0a4befd 100644 --- a/storage/databases/postgres/3-replication/README.md +++ b/storage/databases/postgres/3-replication/README.md @@ -0,0 +1,62 @@ +# How to replicate PostgreSQL + +So far we've learnt how to run PostgreSQL as per [chapter 1](../1-introduction/README.md).
+We've also learnt how to configure PostgreSQL with our custom configuration file as per [chapter 2](../2-configuration/README.md).
+ +In this chapter we will setup a second PostgreSQL instance.
+Then we will learn how to configure our first PostgreSQL instance to replicate its data to the new second instance.
+This will essentially give us a primary and a secondary server for better availability in case we lose our primary server.
+ + +* Documentation on HA \ replication \ failover modes + + +## Get our Primary PostgreSQL up and running + +Let's start by running our PostgreSQL in docker
+ +Few things to note here:
+* We start our instance with a different name to identify it as the first instance with the `--name postgres-1` flag and `2` for the second instance +* Set unique data volumes for data between instances +* Set unique config files for each instance +* Create and run our docker containers on the same network + +Create a new network so our instances can talk with each other: + +``` +docker network create postgres +``` + +Start with instance 1: + +``` +cd storage/databases/postgres/3-replication + +docker run -it --rm --name postgres-1 ` +--net postgres ` +-e POSTGRES_USER=postgresadmin ` +-e POSTGRES_PASSWORD=admin123 ` +-e POSTGRES_DB=postgresdb ` +-e PGDATA="/data" ` +-v ${PWD}/postgres-1/pgdata:/data ` +-v ${PWD}/postgres-1/config:/config ` +-p 5000:5432 ` +postgres:15.0 -c 'config_file=/config/postgresql.conf' +``` + +Start instance 2: + +``` +cd storage/databases/postgres/3-replication + +docker run -it --rm --name postgres-2 ` +--net postgres ` +-e POSTGRES_USER=postgresadmin ` +-e POSTGRES_PASSWORD=admin123 ` +-e POSTGRES_DB=postgresdb ` +-e PGDATA="/data" ` +-v ${PWD}/postgres-2/pgdata:/data ` +-v ${PWD}/postgres-2/config:/config ` +-p 5000:5432 ` +postgres:15.0 -c 'config_file=/config/postgresql.conf' +``` \ No newline at end of file