You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
proxysql/test/infra/infra-pgsql17-repl/bin/docker-pgsql-post.bash

43 lines
1.5 KiB

#!/bin/bash
set -e
set -o pipefail
[ -f .env ] && . .env
PRIMARY_CONTAINER="${COMPOSE_PROJECT}-pgdb1-1"
# Standard CI replication credentials
REPLICATION_USER="repluser"
REPLICATION_PASSWORD="${ROOT_PASSWORD}"
PGUSERS="testuser monitor"
echo "[$(date)] PgSQL Primary Provisioning (${PRIMARY_CONTAINER}) ..."
# Helper for docker exec psql
run_psql() {
docker exec "${PRIMARY_CONTAINER}" env PGPASSWORD="${ROOT_PASSWORD}" psql -h127.0.0.1 -p5432 -Upostgres "$@"
}
# 1. Create replication user on primary
echo "[$(date)] Creating replication user '${REPLICATION_USER}' ..."
run_psql -c "DROP USER IF EXISTS ${REPLICATION_USER}; CREATE USER ${REPLICATION_USER} WITH REPLICATION ENCRYPTED PASSWORD '${REPLICATION_PASSWORD}';" > /dev/null
# 2. Create replication slots for each replica
echo "[$(date)] Creating replication slots ..."
for i in 2; do
SLOT_NAME="replica_slot_${i}"
run_psql -c "SELECT pg_drop_replication_slot('${SLOT_NAME}');" > /dev/null 2>&1 || true
run_psql -c "SELECT pg_create_physical_replication_slot('${SLOT_NAME}');" > /dev/null
done
# 3. Create application users
echo "[$(date)] Creating application users ..."
for PGUSER in ${PGUSERS}; do
run_psql -c "DROP USER IF EXISTS $PGUSER; CREATE USER $PGUSER WITH PASSWORD '$PGUSER';" > /dev/null
run_psql -c "CREATE DATABASE $PGUSER;" > /dev/null 2>&1 || true
run_psql -c "GRANT ALL PRIVILEGES ON DATABASE $PGUSER TO $PGUSER;" > /dev/null
run_psql -c "GRANT ALL ON SCHEMA public TO $PGUSER;" > /dev/null 2>&1 || true
done
echo "[$(date)] PgSQL Provisioning COMPLETE!"