45 lines
1.4 KiB
Bash
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 "========================================="
|