Overview
A successful server migration requires careful planning and methodical execution. Use this checklist when moving workloads to a new Breeze to ensure nothing is missed.
Phase 1: Discovery and Planning
- Inventory all running services:
systemctl list-units --type=service --state=running - Document listening ports:
ss -tlnp - List installed packages:
dpkg -l > packages.txtorrpm -qa > packages.txt - Map all cron jobs:
crontab -land check/etc/cron.d/ - Record DNS records for all domains
- Identify database sizes:
du -sh /var/lib/mysql/* - Note all custom kernel parameters:
sysctl -a > sysctl-current.txt
Phase 2: Preparation
- Provision the new Breeze with adequate resources
- Install the same OS version and required packages
- Replicate firewall rules:
iptables-save > firewall-rules.txt - Set up SSH keys for passwordless access between servers
- Create a full backup and verify it can be restored
- Lower DNS TTL to 60 seconds at least 24 hours in advance
Phase 3: Data Migration
# Sync application files
rsync -avzP /var/www/ root@new-breeze-ip:/var/www/
# Export and transfer databases
mysqldump --all-databases --single-transaction > all-databases.sql
scp all-databases.sql root@new-breeze-ip:/tmp/
# Transfer SSL certificates
rsync -avz /etc/letsencrypt/ root@new-breeze-ip:/etc/letsencrypt/Phase 4: Testing
- Add a hosts file entry to test the new server before DNS cutover
- Verify all sites load correctly
- Test form submissions, logins, and API endpoints
- Run performance benchmarks and compare
Phase 5: Cutover
- Perform a final data sync
- Update DNS A records
- Monitor error logs on both servers
- Keep the old server available for at least 48 hours as a rollback option
Phase 6: Post-Migration
- Update monitoring and alerting endpoints
- Verify automated backups are running
- Remove the old server once confident in the migration
- Document the migration for future reference