postgres/bk/init/init-slave.sh
2025-02-18 16:17:21 +03:00

47 lines
1.9 KiB
Bash

#!/bin/bash
set -e
export POSTGRES_USER="qa_postgres"
export POSTGRES_PASSWORD="xM9A4!exJbQNhqJ"
export POSTGRES_DB="qa_simfony_billing"
export MASTER_PASSWORD="pP5UUJM0mj5b7rZMU5C6"
# Ensure the data directory exists
mkdir -p /var/lib/postgresql/data/pgdata
# Ensure proper ownership
chown -R postgres:postgres /var/lib/postgresql/data
chmod 750 /var/lib/postgresql/data/pgdata
# Wait for the master to be ready
until pg_isready --host=master --username=$POSTGRES_USER --dbname=$POSTGRES_DB; do
echo "waiting for master to be ready"
sleep 2
done
# Stop the PostgreSQL server if it is running
su postgres -c 'pg_ctl -D /var/lib/postgresql/data/pgdata -m fast -w stop || true'
# Clean the data directory
su postgres -c 'rm -rf /var/lib/postgresql/data/pgdata/*'
# Perform base backup
su postgres -c 'pg_basebackup -h master -D /var/lib/postgresql/data/pgdata -U $POSTGRES_USER -v -P --wal-method=stream'
# Copy pg_hba.conf to pgdata
su postgres -c 'cp /var/lib/postgresql/data/pg_hba.conf /var/lib/postgresql/data/pgdata/pg_hba.conf'
su postgres -c 'cp /var/lib/postgresql/data/postgresql.conf /var/lib/postgresql/data/pgdata/postgresql.conf'
su postgres -c 'cp /var/lib/postgresql/data/server.crt /var/lib/postgresql/data/pgdata/server.crt'
su postgres -c 'cp /var/lib/postgresql/data/server.key /var/lib/postgresql/data/pgdata/server.key'
# Create the standby.signal file
su postgres -c 'touch /var/lib/postgresql/data/pgdata/standby.signal'
# Write primary_conninfo to postgresql.auto.conf
echo "primary_conninfo = 'host=master port=5432 user=$POSTGRES_USER password=${MASTER_PASSWORD}'" > /var/lib/postgresql/data/pgdata/postgresql.auto.conf
# Ensure proper ownership again
chown -R postgres:postgres /var/lib/postgresql/data
# Start PostgreSQL server
su postgres -c 'pg_ctl -D /var/lib/postgresql/data/pgdata -l /var/lib/postgresql/data/pgdata/logfile -o "-c listen_addresses='*'" -w start'