mirror of
https://github.com/toast-ts/Daggerbot-TS.git
synced 2024-11-17 20:30:58 -05:00
Setup a master/slave replication in Postgres
This commit is contained in:
parent
1210a84e55
commit
11ab143609
@ -6,13 +6,15 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 6379:6379/tcp
|
- 6379:6379/tcp
|
||||||
db:
|
db:
|
||||||
container_name: postgres-db
|
container_name: postgres-master
|
||||||
image: postgres:16.1-alpine3.19
|
image: postgres:16.1-alpine3.19
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432/tcp
|
- 5432:5432/tcp
|
||||||
volumes:
|
volumes:
|
||||||
- /var/lib/docker/volumes/daggerbot-db:/var/lib/postgresql/data:rw
|
- /var/lib/docker/volumes/daggerbot-db:/var/lib/postgresql/data:rw
|
||||||
|
- ./postgres-replica-stuff/configs/postgres-hba.conf:/var/lib/postgresql/data/pg_hba.conf:rw
|
||||||
|
- ./postgres-replica-stuff/configs/postgres.conf:/var/lib/postgresql/data/postgresql.conf:rw
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: ${POSTGRES_USER}
|
POSTGRES_USER: ${POSTGRES_USER}
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
|
11
postgres-replica-stuff/configs/postgres-hba.conf
Normal file
11
postgres-replica-stuff/configs/postgres-hba.conf
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# TYPE DATABASE USER ADDRESS METHOD
|
||||||
|
# "local" is for Unix domain socket connections only
|
||||||
|
local all all trust
|
||||||
|
# IPv4 local connections:
|
||||||
|
host all all 127.0.0.1/32 trust
|
||||||
|
# Allow replication connections from localhost, by a user with the
|
||||||
|
# replication privilege.
|
||||||
|
local replication all trust
|
||||||
|
host replication replicator 0.0.0.0/0 trust
|
||||||
|
|
||||||
|
host all all all scram-sha-256
|
23
postgres-replica-stuff/configs/postgres.conf
Normal file
23
postgres-replica-stuff/configs/postgres.conf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
listen_addresses = '*'
|
||||||
|
|
||||||
|
max_connections = 128
|
||||||
|
shared_buffers = 256MB
|
||||||
|
effective_cache_size = 4GB
|
||||||
|
maintenance_work_mem = 128MB
|
||||||
|
work_mem = 8MB
|
||||||
|
checkpoint_completion_target = 0.9
|
||||||
|
wal_buffers = 16MB
|
||||||
|
default_statistics_target = 100
|
||||||
|
random_page_cost = 2.5
|
||||||
|
effective_io_concurrency = 1
|
||||||
|
min_wal_size = 64MB
|
||||||
|
max_wal_size = 2GB
|
||||||
|
max_worker_processes = 6
|
||||||
|
max_parallel_workers_per_gather = 4
|
||||||
|
|
||||||
|
# Standby replication setup
|
||||||
|
wal_level = replica
|
||||||
|
max_wal_senders = 12
|
||||||
|
max_replication_slots = 12
|
||||||
|
hot_standby = on
|
||||||
|
hot_standby_feedback = on
|
15
postgres-replica-stuff/docker-compose.yml
Normal file
15
postgres-replica-stuff/docker-compose.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# This is for the Slave node, Master node is in the root directory of the same file.
|
||||||
|
services:
|
||||||
|
db-slave:
|
||||||
|
container_name: postgres-slave
|
||||||
|
image: postgres:16.1-alpine3.19
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 5433:5432/tcp
|
||||||
|
volumes:
|
||||||
|
- /var/lib/docker/volumes/daggerbot-db-slave:/var/lib/postgresql/data:rw
|
||||||
|
- ./configs/postgres-hba.conf:/var/lib/postgresql/data/pg_hba.conf:rw
|
||||||
|
- ./configs/postgres.conf:/var/lib/postgresql/data/postgresql.conf:rw
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
|
POSTGRES_DB: ${POSTGRES_DB}
|
8
postgres-replica-stuff/postgres-setup-replica.sql
Normal file
8
postgres-replica-stuff/postgres-setup-replica.sql
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-- This is for the slave.
|
||||||
|
CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD '<password_here>';
|
||||||
|
|
||||||
|
-- This is for the master.
|
||||||
|
SELECT * FROM pg_create_physical_replication_slot('replication_slot_slave');
|
||||||
|
SELECT * FROM pg_replication_slots;
|
||||||
|
|
||||||
|
-- https://medium.com/swlh/postgresql-replication-with-docker-c6a904becf77
|
@ -12,11 +12,11 @@
|
|||||||
"target": "ES2022",
|
"target": "ES2022",
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
"baseUrl": "./",
|
"baseUrl": "./",
|
||||||
"rootDir": "src/",
|
"rootDir": "src",
|
||||||
"outDir": "dist/",
|
"outDir": "dist",
|
||||||
"moduleResolution": "bundler",
|
"moduleResolution": "bundler",
|
||||||
"typeRoots": [ "./src/interfaces.d.ts" ]
|
"typeRoots": [ "./src/interfaces.d.ts" ]
|
||||||
},
|
},
|
||||||
"include": [ "src/" ],
|
"include": [ "src" ],
|
||||||
"exclude": [ ".yarn/cache", ".yarn/unplugged", ".git", "src/errorBlocklist.json", "src/config.json", "src/DB-Beta.config.json" ]
|
"exclude": [ ".yarn/cache", ".yarn/unplugged", ".git", "src/*.json", "postgres-replica-stuff" ]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user