Files
2025-10-30 18:28:58 +00:00

89 lines
2.6 KiB
Bash
Executable File

#!/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 [email protected] "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 [email protected] "
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!"