Files
Momento/scripts/backup/setup-wal.sh
Antigravity 9c9b6fe362
Some checks failed
CI / Lint, Test & Build (push) Failing after 15m4s
CI / Deploy production (on server) (push) Has been cancelled
docs: complete production guide + fix WAL setup transaction error
2026-05-17 14:18:25 +00:00

35 lines
1.4 KiB
Bash
Executable File

#!/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" bash -c "mkdir -p /var/lib/postgresql/backups/wal"
docker exec "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB" -c "ALTER SYSTEM SET wal_level = replica;"
docker exec "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB" -c "ALTER SYSTEM SET archive_mode = on;"
docker exec "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB" -c "ALTER SYSTEM SET archive_command = 'cp %p /var/lib/postgresql/backups/wal/%f';"
docker exec "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB" -c "ALTER SYSTEM SET max_wal_senders = 3;"
docker exec "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB" -c "ALTER SYSTEM SET wal_keep_size = '1GB';"
log "Reloading PostgreSQL configuration..."
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"