#!/bin/bash # Complete 1:1 Database Migration Script set -e # Database credentials from .env DB_USER="tilbudgivern_service" DB_PASS="REDACTED_PASSWORD" DB_NAME="tilbudgivern" echo "🔄 Starting COMPLETE 1:1 database migration from s.alw.dk..." # Test connections echo "Testing connections..." ssh -p 55555 alex@s.alw.dk "echo 'SSH OK'" mysql -u "$DB_USER" -p"$DB_PASS" -e "SELECT 'Local DB OK' as status;" # Create backup directory mkdir -p /tmp/db_backup_complete cd /tmp/db_backup_complete echo "📥 Exporting COMPLETE database from remote server..." # Get complete database dump with all data and structure # This will be a perfect replica ssh -p 55555 alex@s.alw.dk " sudo mysqldump tilbudgivern \ --single-transaction \ --routines=false \ --triggers=false \ --events=false \ --add-drop-table \ --complete-insert \ --extended-insert=false \ --hex-blob \ --default-character-set=utf8mb4 \ --set-gtid-purged=OFF " > tilbudgivern_complete.sql 2>/dev/null # Check export success if [ -s tilbudgivern_complete.sql ]; then SIZE=$(du -h tilbudgivern_complete.sql | cut -f1) LINES=$(wc -l < tilbudgivern_complete.sql) echo "✅ Complete database exported successfully ($SIZE, $LINES lines)" else echo "❌ Database export failed" exit 1 fi echo "📤 Importing complete database to local server..." # Drop and recreate database for clean import mysql -u "$DB_USER" -p"$DB_PASS" -e "DROP DATABASE IF EXISTS $DB_NAME;" mysql -u "$DB_USER" -p"$DB_PASS" -e "CREATE DATABASE $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # Import complete database mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" < tilbudgivern_complete.sql if [ $? -eq 0 ]; then echo "✅ Complete database migration successful!" # Verify migration with detailed stats echo "📊 Migration Verification:" # Table count TABLE_COUNT=$(mysql -u "$DB_USER" -p"$DB_PASS" -e "USE $DB_NAME; SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$DB_NAME';" --skip-column-names) echo " 📋 Total Tables: $TABLE_COUNT" # Show all tables with row counts echo " 📈 Table Data Summary:" mysql -u "$DB_USER" -p"$DB_PASS" -e " USE $DB_NAME; SELECT table_name as 'Table Name', table_rows as 'Estimated Rows' FROM information_schema.tables WHERE table_schema = '$DB_NAME' AND table_type = 'BASE TABLE' ORDER BY table_rows DESC; " | head -20 echo "✅ Database is now a perfect 1:1 replica!" else echo "❌ Database import failed" exit 1 fi echo "🎉 Complete migration finished!"