148 lines
3.9 KiB
Bash
Executable File
148 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Chat Database Export Script
|
|
# This script exports the chat database schema and data for migration
|
|
|
|
set -e # Exit on any error
|
|
|
|
echo "🚀 Starting chat database export..."
|
|
|
|
# Configuration - Update these values for your setup
|
|
DB_HOST="${CHAT_DB_HOST:-localhost}"
|
|
DB_PORT="${CHAT_DB_PORT:-5432}"
|
|
DB_NAME="${CHAT_DB_NAME:-rocketchat_converted}"
|
|
DB_USER="${CHAT_DB_USER:-rocketchat_user}"
|
|
|
|
# Check if database connection info is available
|
|
if [ -z "$CHAT_DB_PASSWORD" ]; then
|
|
echo "⚠️ CHAT_DB_PASSWORD environment variable not set"
|
|
echo "Please set it with: export CHAT_DB_PASSWORD='your_password'"
|
|
exit 1
|
|
fi
|
|
|
|
echo "📊 Database: $DB_NAME on $DB_HOST:$DB_PORT"
|
|
|
|
# Create export directory
|
|
EXPORT_DIR="chat-migration-$(date +%Y%m%d-%H%M%S)"
|
|
mkdir -p "$EXPORT_DIR"
|
|
|
|
echo "📁 Export directory: $EXPORT_DIR"
|
|
|
|
# Export database schema
|
|
echo "📋 Exporting database schema..."
|
|
PGPASSWORD="$CHAT_DB_PASSWORD" pg_dump \
|
|
-h "$DB_HOST" \
|
|
-p "$DB_PORT" \
|
|
-U "$DB_USER" \
|
|
-d "$DB_NAME" \
|
|
--schema-only \
|
|
--no-owner \
|
|
--no-privileges \
|
|
-f "$EXPORT_DIR/chat-schema.sql"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Schema exported successfully"
|
|
else
|
|
echo "❌ Schema export failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Export database data
|
|
echo "💾 Exporting database data..."
|
|
PGPASSWORD="$CHAT_DB_PASSWORD" pg_dump \
|
|
-h "$DB_HOST" \
|
|
-p "$DB_PORT" \
|
|
-U "$DB_USER" \
|
|
-d "$DB_NAME" \
|
|
--data-only \
|
|
--no-owner \
|
|
--no-privileges \
|
|
--disable-triggers \
|
|
--column-inserts \
|
|
-f "$EXPORT_DIR/chat-data.sql"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Data exported successfully"
|
|
else
|
|
echo "❌ Data export failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Export file uploads and avatars
|
|
echo "📎 Exporting chat files (uploads and avatars)..."
|
|
if [ -d "db-convert/db/files" ]; then
|
|
cd db-convert/db
|
|
tar -czf "../../$EXPORT_DIR/chat-files.tar.gz" files/
|
|
cd ../..
|
|
echo "✅ Files exported successfully"
|
|
else
|
|
echo "⚠️ No files directory found at db-convert/db/files"
|
|
echo " This is normal if you have no file uploads"
|
|
touch "$EXPORT_DIR/chat-files.tar.gz"
|
|
fi
|
|
|
|
# Get table statistics for verification
|
|
echo "📈 Generating export statistics..."
|
|
PGPASSWORD="$CHAT_DB_PASSWORD" psql \
|
|
-h "$DB_HOST" \
|
|
-p "$DB_PORT" \
|
|
-U "$DB_USER" \
|
|
-d "$DB_NAME" \
|
|
-c "
|
|
SELECT
|
|
schemaname,
|
|
tablename,
|
|
n_tup_ins as inserted_rows,
|
|
n_tup_upd as updated_rows,
|
|
n_tup_del as deleted_rows,
|
|
n_live_tup as live_rows,
|
|
n_dead_tup as dead_rows
|
|
FROM pg_stat_user_tables
|
|
ORDER BY n_live_tup DESC;
|
|
" > "$EXPORT_DIR/table-stats.txt"
|
|
|
|
# Create export summary
|
|
cat > "$EXPORT_DIR/export-summary.txt" << EOF
|
|
Chat Database Export Summary
|
|
===========================
|
|
|
|
Export Date: $(date)
|
|
Database: $DB_NAME
|
|
Host: $DB_HOST:$DB_PORT
|
|
User: $DB_USER
|
|
|
|
Files Generated:
|
|
- chat-schema.sql: Database schema (tables, indexes, constraints)
|
|
- chat-data.sql: All table data
|
|
- chat-files.tar.gz: Uploaded files and avatars
|
|
- table-stats.txt: Database statistics
|
|
- export-summary.txt: This summary
|
|
|
|
Next Steps:
|
|
1. Transfer these files to your new server
|
|
2. Run create-new-database.sql on the new server first
|
|
3. Run import-chat-data.sh on the new server
|
|
4. Update your application configuration
|
|
5. Run verify-migration.js to validate the migration
|
|
|
|
Important Notes:
|
|
- Keep these files secure as they contain your chat data
|
|
- Ensure the new server has enough disk space
|
|
- Plan for application downtime during the migration
|
|
EOF
|
|
|
|
echo ""
|
|
echo "🎉 Export completed successfully!"
|
|
echo "📁 Files are in: $EXPORT_DIR/"
|
|
echo ""
|
|
echo "📋 Export Summary:"
|
|
ls -lh "$EXPORT_DIR/"
|
|
echo ""
|
|
echo "🚚 Next steps:"
|
|
echo "1. Transfer the $EXPORT_DIR/ directory to your new server"
|
|
echo "2. Run create-new-database.sql on the new server (update password first!)"
|
|
echo "3. Run import-chat-data.sh on the new server"
|
|
echo ""
|
|
echo "💡 To transfer files to new server:"
|
|
echo " scp -r $EXPORT_DIR/ user@new-server:/tmp/"
|