Browse Source

init

master
gsd 5 months ago
commit
b38b171116
  1. 1
      .gitignore
  2. 5
      Dockerfile
  3. 14
      README
  4. 20
      docker-compose.yaml
  5. 46
      reppoint

1
.gitignore

@ -0,0 +1 @@
.env

5
Dockerfile

@ -0,0 +1,5 @@
FROM docker.pblr-nyk.pro/postgres:16.4-bullseye
COPY reppoint /reppoint
RUN chmod +x /reppoint
ENTRYPOINT ["/reppoint"]
CMD []

14
README

@ -0,0 +1,14 @@
Делает полную копию бд посгресса в оперативку или любое другое место.
Че добавить на реплике:
-> .env
MASTER_ADDRESS=x.x.x.x #Ип бд
MASTER_USER=user #Юзер для реплики
TZ=Europe/Moscow #Я русский
Че добавить на мастере:
wal_level = hot_standby
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 8
hot_standby = on

20
docker-compose.yaml

@ -0,0 +1,20 @@
services:
postgres_db_mem_rep:
build: ./
container_name: postgress_db_mem_replica
#restart: unless-stopped
env_file: .env
tmpfs:
- /var/lib/postgresql/data
ports:
- 5442:5432
deploy:
resources:
limits:
cpus: "4.0"
memory: 16G
# networks:
# - postgres_db_default
#networks:
# postgres_db_default:
# external: true

46
reppoint

@ -0,0 +1,46 @@
#!/bin/bash
if [[ -z "${MASTER_ADDRESS}" ]]; then
echo "Cannot startup, need MASTER_ADDRESS"
else
MASTER_ADDRESS="${MASTER_ADDRESS}"
echo "copy from ${MASTER_ADDRESS}"
fi
echo "init default scripts"
export POSTGRES_PASSWORD="replica"
docker-entrypoint.sh postgres -v
echo "add user"
#add replication user
cat <<EOT >> /var/lib/postgresql/data/pg_hba.conf
host replication postgres $MASTER_ADDRESS/24 trust
host all all all md5
EOT
echo "add replica rules"
#add replica rules
cat <<EOT >> /var/lib/postgresql/data/postgresql.conf
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 8
hot_standby = on
max_connections = 1000
EOT
#create copy
mkdir /tmp/pg_copy
cp /var/lib/postgresql/data/*.conf /tmp/pg_copy
echo "copy from master"
rm -rf /var/lib/postgresql/data
mkdir /var/lib/postgresql/data
pg_basebackup -v -P -R -X stream -c fast -h ${MASTER_ADDRESS} -U ${MASTER_USER} -D /var/lib/postgresql/data
rm /var/lib/postgresql/data/*.conf
cp /tmp/pg_copy/*.conf /var/lib/postgresql/data/
chown postgres:postgres -R /var/lib/postgresql/data
echo "run postgres"
#run postgres
docker-entrypoint.sh postgres
Loading…
Cancel
Save