Moving hosts suena aterrador y es principalmente rsync, DNS y paciencia. El truco es dos pases: uno lento mientras el viejo servidor sigue funcionando, y un final rápido que toma segundos.
Orden a Buran VPS, instalar la misma versión OS que el servidor antiguo, y hacer los conceptos básicos: SSH llaves y cortafuegos. Instalar los mismos servicios (nginx, PostgreSQL, Docker) en las mismas versiones, pero todavía no se inician.
Desde el nuevo servidor, tire los datos. Este pase puede tardar tanto como quiera; nadie lo nota.
rsync -avz --delete \
--exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp \
--exclude=/var/lib/postgresql \
root@OLD_SERVER_IP:/etc /etc
rsync -avz --delete root@OLD_SERVER_IP:/var/www /var/www
rsync -avz --delete root@OLD_SERVER_IP:/root /root
Los directorios de datos de bases de datos están excluidos a propósito: un PostgreSQL en vivo o MySQL dir copiado archivo por archivo está roto. Las bases de datos se mueven como basuras.
En el antiguo servidor:
pg_dumpall -U postgres > /root/all-databases.sql
# or per database, compressed:
pg_dump -Fc -U postgres appdb > /root/appdb.dump
Tire los vertederos al nuevo servidor e importarlos:
rsync -avz root@OLD_SERVER_IP:/root/all-databases.sql /root/
sudo -u postgres psql < /root/all-databases.sql
Ponga la aplicación en modo de mantenimiento, ejecute la sincronización final y comience los servicios:
# on the old server
pg_dumpall -U postgres > /root/final.sql
# on the new server
rsync -avz --delete root@OLD_SERVER_IP:/var/www /var/www
rsync -avz root@OLD_SERVER_IP:/root/final.sql /root/
sudo -u postgres psql < /root/final.sql
systemctl enable --now nginx postgresql myapp
Prueba localmente primero - antes de tocar DNS:
curl -H "Host: example.com" http://127.0.0.1
Cambia el registro A al nuevo IP y baja el TTL a 300 segundos al día antes — el valor antiguo expira rápidamente. En pocos minutos la mayoría de los visitantes están en el nuevo servidor; los traficantes llegan a las próximas horas.
Certificados: ejecutar certbot --nginx en el nuevo servidor después de DNS resuelve allí. Si utilizas el proxy Cloudflare, voltea el registro y vuelve a registrar como de costumbre, los comandos están en el Guía Nginx.
Check from several places: website, API, mail, cron jobs, backups. Vea los registros del antiguo servidor durante una hora: cualquier tráfico quede allí significa algo que aún apunta en la vieja IP.
tail -f /var/log/nginx/access.log
crontab -l
systemctl list-timers
Mantenga el antiguo servidor durante una semana después del interruptor. Luego cancelarlo, sin drama, y una vuelta fácil si te perdiste algo.
Con el método de dos pasos rsync, el tiempo de inactividad es sólo la sincronización final más la propagación DNS — típicamente de 2 a 10 minutos. Una página de mantenimiento en el antiguo servidor lo hace invisible.
Cualquier IP vieja y codificada tiene que cambiar: nginx upstreams, app configs, firewall allowlists. Busque los configs con grep para el antiguo IP antes del sincronizado final.
El suministro es totalmente automático, y el panel le da consola y acceso de reinstalación; la migración es un trabajo rsync estándar que se puede ejecutar en media hora. Si algo no encaja, [email protected] responde dentro de 30 minutos.