Initial clean commit

This commit is contained in:
jlimolina 2026-01-13 13:39:51 +01:00
commit 6784d81c2c
141 changed files with 25219 additions and 0 deletions

53
init-replica/init-replica.sh Executable file
View file

@ -0,0 +1,53 @@
#!/bin/bash
# Initialization script for PostgreSQL streaming replica
# This script sets up the replica from the primary using pg_basebackup
set -e
PGDATA="${PGDATA:-/var/lib/postgresql/data/18/main}"
PRIMARY_HOST="${PRIMARY_HOST:-db}"
REPLICATION_USER="${REPLICATION_USER:-replicator}"
REPLICATION_PASSWORD="${REPLICATION_PASSWORD:-replica_password}"
echo "=== PostgreSQL Replica Initialization ==="
# Check if PGDATA already has data (replica already initialized)
if [ -f "$PGDATA/standby.signal" ]; then
echo "Replica already initialized (standby.signal exists). Skipping initialization."
exit 0
fi
if [ -f "$PGDATA/PG_VERSION" ]; then
echo "PGDATA already contains data. Checking if it's a replica..."
if [ -f "$PGDATA/standby.signal" ] || grep -q "primary_conninfo" "$PGDATA/postgresql.auto.conf" 2>/dev/null; then
echo "Already configured as replica. Skipping."
exit 0
else
echo "WARNING: PGDATA contains data but is NOT a replica."
echo "Cleaning up existing data to initialize replica..."
rm -rf "$PGDATA"/*
# Continue to basebackup
fi
fi
echo "Waiting for primary at $PRIMARY_HOST to be ready..."
until pg_isready -h "$PRIMARY_HOST" -p 5432 -U postgres; do
echo "Primary not ready yet. Waiting 2 seconds..."
sleep 2
done
echo "Primary is ready. Starting pg_basebackup..."
# Use pg_basebackup to copy data from primary
PGPASSWORD="$REPLICATION_PASSWORD" pg_basebackup \
-h "$PRIMARY_HOST" \
-p 5432 \
-U "$REPLICATION_USER" \
-D "$PGDATA" \
-Fp \
-Xs \
-P \
-R
echo "pg_basebackup complete. Replica initialized successfully."
echo "standby.signal and postgresql.auto.conf with primary_conninfo created."