89 lines
2.6 KiB
Bash
Executable File
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!" |