44 lines
1.7 KiB
YAML
44 lines
1.7 KiB
YAML
|
apiVersion: v1
|
||
|
kind: ConfigMap
|
||
|
metadata:
|
||
|
name: todo-db-scripts
|
||
|
labels:
|
||
|
kiamol: ch09
|
||
|
data:
|
||
|
wait-service.sh: |-
|
||
|
#!/bin/sh
|
||
|
if [ "$HOSTNAME" == "$POSTGRES_PRIMARY_NAME" ]; then
|
||
|
echo '** Postgres primary **'
|
||
|
else
|
||
|
echo '** Postgres standby - waiting on DNS for primary **'
|
||
|
until nslookup ${POSTGRES_PRIMARY_FQDN}; do echo Waiting for ${POSTGRES_PRIMARY_FQDN}; sleep 1; done
|
||
|
fi
|
||
|
initialize-replication.sh: |-
|
||
|
#!/bin/bash
|
||
|
if [ "$HOSTNAME" == "$POSTGRES_PRIMARY_NAME" ]; then
|
||
|
echo '** Postgres primary - creating replication user script **'
|
||
|
cp /scripts/create-replica-user.sh /docker-entrypoint-initdb.d/create-replica-user.sh
|
||
|
ls -l /docker-entrypoint-initdb.d
|
||
|
else
|
||
|
echo '** Postgres standby - waiting on primary **'
|
||
|
until pg_isready -h "$POSTGRES_PRIMARY_FQDN"; do echo Waiting for db to be ready; sleep 1; done
|
||
|
fi
|
||
|
create-replica-user.sh: |-
|
||
|
#!/bin/bash
|
||
|
set -e
|
||
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||
|
CREATE ROLE replication WITH REPLICATION PASSWORD '$PGPASSWORD' LOGIN
|
||
|
EOSQL
|
||
|
startup.sh: |-
|
||
|
#!/bin/sh
|
||
|
if [ "$HOSTNAME" == "$POSTGRES_PRIMARY_NAME" ]; then
|
||
|
echo '** Postgres primary **'
|
||
|
/docker-entrypoint.sh postgres -c config_file=/conf/primary.conf -c hba_file=/conf/pg_hba.conf
|
||
|
else
|
||
|
echo '** Postgres standby - initializing replication**'
|
||
|
if [ -z "$(ls -A ${PGDATA})" ]; then
|
||
|
pg_basebackup -R -h "$POSTGRES_PRIMARY_FQDN" -D "$PGDATA" -P -U replication
|
||
|
chown -R postgres:postgres $PGDATA
|
||
|
fi
|
||
|
/docker-entrypoint.sh postgres -c config_file=/conf/standby.conf
|
||
|
fi
|