#!/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 "========================================="