feat: P0 backup system (WAL+snapshot+restore+verify), monitoring stack, admin health API
This commit is contained in:
35
scripts/backup/setup-wal.sh
Executable file
35
scripts/backup/setup-wal.sh
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user