mirror of
https://github.com/toast-ts/Daggerbot-TS.git
synced 2024-11-17 16: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:
|
||||
- 6379:6379/tcp
|
||||
db:
|
||||
container_name: postgres-db
|
||||
container_name: postgres-master
|
||||
image: postgres:16.1-alpine3.19
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 5432:5432/tcp
|
||||
volumes:
|
||||
- /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:
|
||||
POSTGRES_USER: ${POSTGRES_USER}
|
||||
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",
|
||||
"module": "ESNext",
|
||||
"baseUrl": "./",
|
||||
"rootDir": "src/",
|
||||
"outDir": "dist/",
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
"moduleResolution": "bundler",
|
||||
"typeRoots": [ "./src/interfaces.d.ts" ]
|
||||
},
|
||||
"include": [ "src/" ],
|
||||
"exclude": [ ".yarn/cache", ".yarn/unplugged", ".git", "src/errorBlocklist.json", "src/config.json", "src/DB-Beta.config.json" ]
|
||||
"include": [ "src" ],
|
||||
"exclude": [ ".yarn/cache", ".yarn/unplugged", ".git", "src/*.json", "postgres-replica-stuff" ]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user