47 lines
1.9 KiB
Bash
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'
|