#!/bin/bash set -euo pipefail BACKUP_DIR="/opt/memento/backups" WAL_DIR="$BACKUP_DIR/wal" PG_CONTAINER="memento-postgres" PG_USER="${POSTGRES_USER:-memento}" PG_DB="${POSTGRES_DB:-memento}" PG_PASSWORD="${POSTGRES_PASSWORD:-}" LOG_FILE="$BACKUP_DIR/backup.log" mkdir -p "$WAL_DIR" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } log "=== Setting up WAL archiving ===" docker exec "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB" -c " ALTER SYSTEM SET wal_level = replica; ALTER SYSTEM SET archive_mode = on; ALTER SYSTEM SET archive_command = 'cp %p /var/lib/postgresql/backups/wal/%f'; ALTER SYSTEM SET max_wal_senders = 3; ALTER SYSTEM SET wal_keep_size = '1GB'; " docker exec "$PG_CONTAINER" mkdir -p /var/lib/postgresql/backups/wal docker exec "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB" -c "SELECT pg_reload_conf();" log "WAL archiving enabled. Archives stored in /var/lib/postgresql/backups/wal/" WAL_COUNT=$(docker exec "$PG_CONTAINER" ls /var/lib/postgresql/backups/wal/ 2>/dev/null | wc -l) log "Existing WAL segments: $WAL_COUNT"