Loop through all databases to copy from Prod to Dev
File: /usr/local/bin/sync_winnipeg.sh
Create Script:
sudo nano /usr/local/bin/sync_winnipeg.sh
#!/bin/bash
# Variables
PROD_HOST="erp-rds.cadorath.com"
PROD_USER="dev"
PROD_PASS="kR5bLoLOxsaFIBw"
DEV_USER="apps"
DEV_PASS="2jq63NLhJAFSjXHqyytE"
DATABASES=("winnipeg" "lafayette" "chrome" "specialty" "zinc")
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
# Create backup directory
mkdir -p $BACKUP_DIR
echo "========================================="
echo "Starting sync at $(date)"
echo "========================================="
# Loop through each database
for DB_NAME in "${DATABASES[@]}"; do
echo ""
echo "Syncing database: $DB_NAME"
# Dump from production
mysqldump -h $PROD_HOST -u $PROD_USER -p$PROD_PASS \
--single-transaction \
--quick \
--lock-tables=false \
--add-drop-table \
--routines \
--triggers \
--events \
$DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.sql
# Check if dump was successful
if [ $? -eq 0 ]; then
echo " ✓ Dump successful for $DB_NAME"
# Import to development
mysql -u $DEV_USER -p$DEV_PASS $DB_NAME < $BACKUP_DIR/${DB_NAME}_${DATE}.sql
if [ $? -eq 0 ]; then
echo " ✓ Import successful for $DB_NAME"
else
echo " ✗ ERROR: Import failed for $DB_NAME"
fi
else
echo " ✗ ERROR: Dump failed for $DB_NAME"
fi
done
echo ""
echo "Cleaning up old backups (keeping last 7 days)..."
find $BACKUP_DIR -name "*_${DATE}.sql" -mtime +7 -delete
echo "========================================="
echo "Sync completed at $(date)"
echo "========================================="Make it Executable:
sudo chmod +x /usr/local/bin/sync_winnipeg.sh
Run manually:
sudo /usr/local/bin/sync_winnipeg.sh
Cron job setting (Sunday at 10PM weekly)
File: sudo crontab -e
0 22 * * 0 /usr/local/bin/sync_winnipeg.sh >> /var/log/winnipeg_sync.log 2>&1
Check sync logs
tail -f /var/log/winnipeg_sync.log