odoo_c2c/scripts/backup_drill.sh

45 lines
1.4 KiB
Bash

#!/bin/bash
# Backup Drill Script for C2C ERP
# Goal: Setup automated daily backups and conduct restore test on staging
# Config
CONTAINER_NAME="odoo_clickstocart_db"
DB_USER="odoo"
DB_NAME="Clickstocart"
BACKUP_DIR="/var/lib/postgresql/data/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${TIMESTAMP}.sql"
# 1. Execute Backup inside the postgres container
echo "Starting database backup for ${DB_NAME}..."
docker exec -i ${CONTAINER_NAME} mkdir -p ${BACKUP_DIR}
docker exec -i ${CONTAINER_NAME} pg_dump -U ${DB_USER} -d ${DB_NAME} -F c -f ${BACKUP_FILE}
if [ $? -eq 0 ]; then
echo "✅ Backup successfully created at: ${BACKUP_FILE}"
else
echo "❌ Backup failed!"
exit 1
fi
# 2. Simulate Restore Test (Staging database)
STAGING_DB="${DB_NAME}_staging_test"
echo "Starting RESTORE DRILL to staging database: ${STAGING_DB}"
# Create staging database
docker exec -i ${CONTAINER_NAME} psql -U ${DB_USER} -d postgres -c "CREATE DATABASE \"${STAGING_DB}\";"
# Restore the dump into the new staging database
docker exec -i ${CONTAINER_NAME} pg_restore -U ${DB_USER} -d ${STAGING_DB} -1 ${BACKUP_FILE}
if [ $? -eq 0 ]; then
echo "✅ Restore Drill successfully validated on ${STAGING_DB}!"
else
echo "❌ Restore Drill failed!"
exit 1
fi
echo "========================================="
echo "✅ Performance + Backup Drill Completed! "
echo "========================================="