Migrating a live game server between dedicated hosting providers without losing players or progress is one of the most challenging operations a server admin faces. A poorly executed migration means corrupt world data, angry players, and lost community trust. This guide covers proven strategies for zero-downtime or near-zero-downtime migrations using rsync for world data, DNS cutover planning, thorough testing procedures, and backup verification that ensures nothing is lost.
Before starting your migration, compare dedicated server providers for gaming to ensure your new provider meets your hardware and latency requirements.
Pre-Migration: Audit and Backup
Before touching any live data, complete these three preparation steps:
- Document your current server configuration: Record the exact operating system version, kernel parameters, game server version, mod list (with versions), launch parameters, and any custom configuration files. Store this in a version-controlled document.
- Full backup of world data: Create a compressed archive of your entire game server directory. For Minecraft:
tar -czf pre-migration-backup-$(date +%Y%m%d).tar.gz /opt/minecraft/For ARK: backupShooterGame/Saved/and all map.arkfiles. Verify the archive is readable by listing its contents. - Set up monitoring on the new server: Install your monitoring tools (Prometheus node_exporter, MTR, htop) on the new server before migration begins. Establish baselines for CPU, RAM, and disk I/O.
Step 1: Rsync World Data (Live Sync Phase)
Rsync is the industry-standard tool for transferring game world data between servers. It handles large files efficiently by only transferring changed blocks. This phase keeps the source server running, players experience no interruption.
Initial Seed Transfer
Run this on the old server (source). Use the key-based SSH access you have already set up on the new server:
rsync -avz --progress --partial /path/to/game/world/ user@new-server:/path/to/game/world/
Flags explained: -a preserves permissions and symlinks (critical for game server files), -v verbose, -z compress during transfer, --partial keeps partially transferred files across connection drops. For initial sync over long distances, add --bwlimit=50000 to cap bandwidth at 50 Mbps and avoid saturating the game server network.
Incremental Sync Passes
After the initial transfer completes, run incremental passes every 5-10 minutes. Each pass is faster because only changed blocks are transferred:
while true; do
rsync -avz --delete --progress /path/to/game/world/ user@new-server:/path/to/game/world/
echo "Sync pass completed at $(date)"
sleep 300
done
The --delete flag ensures removed files on the source are also removed on the destination, preventing orphaned data buildup. Watch sync times, when each pass completes in under 30 seconds, your data is nearly synchronized.
Step 2: DNS Cutover Planning
For DNS-based migration (recommended for most game servers), you have two approaches:
Low-TTL Method (Near-Zero Downtime)
- Reduce TTL to 60-300 seconds on your game server DNS record at least 48 hours before migration. DNS TTL reduction propagates slowly.
- Final rsync pass with server in read-only mode (see Step 3).
- Change DNS A/AAAA record to point to the new server IP address.
- Wait TTL + buffer (typically 5-10 minutes).
- Verify new DNS resolution from multiple geographic locations using
dig +shortornslookup.
Expected downtime: 2-10 minutes (time for the final sync + DNS propagation). Players reconnecting during this window may hit the old or new server, but with sync-completed data, both serve the same world state.
IP Swap Method (Minimal Downtime)
If your provider supports floating/bring-your-own IP addresses, or if both old and new providers support BGP:
- Use a /32 IP announcement via BGP on the new server.
- Withdraw the BGP announcement from the old server after final sync.
- Propagation is typically 1-5 minutes on most networks.
Expected downtime: 30 seconds – 2 minutes. This is the lowest-downtime method but requires both providers to support BGP sessions.
Step 3: Final Migration Cutover
This is the critical window. Follow these steps in order:
- Stop the game server on the old host:
systemctl stop [game-server-name] - Run one final rsync to capture any data written in the last moments before the server stopped.
- Verify file integrity on the new server: check that critical files exist (world saves, player data, configs) and that file sizes match expectations.
- Update DNS or BGP to point to the new server.
- Start the game server on the new host:
systemctl start [game-server-name] - Verify server logs for any errors, check that the world loaded successfully, all mods initialized, and player connections accepted.
Step 4: Testing Procedures
Before announcing the migration to your community, run these tests:
- Connect test players: Have 3-5 trusted players join from different geographic locations. Verify: ping times, world interactions (breaking/placing blocks, taming dinos, shooting weapons), and chat functionality.
- Verify world integrity: Teleport to known build locations and confirm structures/items are intact.
- Stress test connection: Have all test players join simultaneously to ensure the server handles peak player load.
- Check game logs: Look for warnings or errors:
grep -i "error|warn|fail" /path/to/game/Logs/*.log - Monitor resource usage: Check CPU, RAM, and disk I/O on the new server. Compare to baseline metrics from your pre-migration monitoring.
Step 5: Backup Verification (The Most Overlooked Step)
A backup is only useful if it can actually restore your server. Verify before you declare the migration complete:
- Test-restore to a staging server: On a separate machine or directory, extract your pre-migration backup archive.
- Verify file count and structure: Compare the number of files and directory structure against the live server. File counts should match within 1-2% (minor differences from runtime logs are acceptable).
- Check critical file hashes: Verify that key world save files are not corrupted using sha256sum.
- Document the restore procedure: Write down the exact commands used to restore.
Post-Migration: Cleanup and Monitoring
After a successful migration:
- Keep the old server running for 48 hours as a fallback. If critical issues emerge on the new server, you can revert DNS and restart the old server quickly.
- Monitor player counts closely for the first week. A drop in concurrent players may indicate latency issues or connection problems.
- Collect feedback from your community. Ask players to report their ping before and after the migration.
- Document the migration, what worked, what did not, and what you would do differently. This is invaluable for future migrations.
- Set up automated backups on the new server immediately, ideally with off-site storage.
Troubleshooting Common Migration Issues
| Issue | Likely Cause | Solution |
|---|---|---|
| World fails to load on new server | Missing mods or wrong mod versions | Verify mod list matches exactly. Check game server version compatibility. |
| Players get Connection timed out | Firewall on new server blocking ports | Open game ports: ufw allow 7777/udp (example, check your game port list) |
| Structures missing or invisible | Partial world transfer | Run rsync again with --checksum to verify every block |
| Higher ping than expected | New data center not optimal | Check server location vs. player geography. Consider a different provider/data center. |
| Player data lost (tames, levels, inventories) | Corrupted or out-of-sync save files | Restore from pre-migration backup and verify integrity before re-migrating |
Migrating game servers between dedicated hosting providers is a high-stakes operation, but by following the rsync + DNS cutover method with proper testing and backup verification, you can achieve near-zero downtime and zero data loss. For help choosing the right dedicated server for your migrated game server, compare plans on our provider comparison table.



Leave a Reply
You must be logged in to post a comment.