A maioria das migrações dolorosas se deve a erros de ordem, não a problemas técnicos. As pessoas mudam o DNS primeiro e só depois descobrem que o banco de dados está desatualizado. Siga a ordem abaixo e os visitantes não vão notar a mudança.
Passo 1: reduza o TTL do DNS com antecedência
Pelo menos um dia antes da migração, defina o TTL dos seus registros A e AAAA para 300 segundos. Os caches que já guardam o valor antigo precisam de tempo para expirar, então esse passo não pode ser feito às pressas no dia.
Passo 2: monte o novo servidor primeiro
Crie o novo VPS, aplique a lista de verificação de segurança e instale a mesma stack: servidor web, versão do PHP ou do Node, mecanismo de banco de dados. Versões iguais eliminam a maioria das surpresas. Copie a configuração, não apenas o conteúdo.
Passo 3: copie os arquivos
rsync -aHAX --info=progress2 -e ssh /var/www/ user@NEW_IP:/var/www/
Execute uma vez agora. Na primeira vez é lento e na repetição é rápido, e é justamente essa a ideia.
Passo 4: copie o banco de dados
# on the old server
mysqldump --single-transaction --routines --triggers mydb | gzip > mydb.sql.gz
scp mydb.sql.gz user@NEW_IP:~/
# on the new server
gunzip < mydb.sql.gz | mysql mydb
Isto é um ensaio. Ele dá a você uma cópia funcional para testar.
Passo 5: teste antes de enviar qualquer pessoa para lá
Aponte o seu próprio computador para o novo servidor editando o arquivo hosts: adicione NEW_IP example.com www.example.com. Navegue pelo site, faça login, envie um formulário e faça um pedido de teste. Corrija o que quebrar enquanto o público ainda vê o servidor antigo. Instale o certificado TLS com um desafio DNS para que funcione antes da virada.
Passo 6: congele, faça a sincronização final e troque
- Coloque o site antigo em modo de manutenção ou somente leitura.
- Repita o
rsynce o dump e a importação do banco de dados. - Altere os registros DNS para o novo IP.
- Remova a entrada do arquivo hosts e verifique a partir de outra rede.
A janela de somente leitura costuma durar minutos. Para uma loja ou um site com login, agende para um horário de pouco movimento.
Passo 7: acompanhe e depois desative o servidor antigo
Mantenha a máquina antiga por vários dias. Alguns resolvedores ignoram o TTL, então ainda chegará um fio de tráfego. Encaminhe ou faça proxy desse tráfego para o novo IP, se puder, confira seus logs e depois volte o TTL a um valor normal. Faça um backup novo do servidor novo antes de apagar o antigo.
Vai mudar de jurisdição ao mesmo tempo? Compare as opções em jurisdições de hospedagem offshore comparadas primeiro.