19 min de leitura · Guia técnico
Checklist para migração de servidor Linux é um guia sistemático que organiza todas as etapas necessárias para transferir dados, configurações e serviços de um servidor Linux para outro com o mínimo de interrupção. Uma migração bem planejada previne perda de dados, reduz tempo de inatividade e mantém a integridade dos serviços. Este guia completo aborda desde o planejamento inicial até a verificação pós-migração, garantindo uma transição segura e eficiente.
Pré-requisitos
- Acesso root ou sudo aos servidores de origem e destino
- Conhecimento básico de comandos Linux e administração de sistemas
- Espaço em disco suficiente no servidor de destino (pelo menos 20% a mais que o utilizado no servidor atual)
- Acesso ao painel de controle DNS para modificar registros
- Backup completo do servidor atual antes de iniciar a migração
- Conexão SSH estável entre os servidores
Planejamento da migração de servidor
O planejamento adequado é a fase mais crítica de qualquer migração de servidor Linux. Um plano bem estruturado reduz significativamente o risco de problemas durante a transferência e minimiza o tempo de inatividade dos serviços.
Inventário de serviços e aplicações
Comece documentando todos os serviços em execução no servidor atual. Isso ajudará a garantir que nada seja esquecido durante a migração.
systemctl list-units --type=service --state=running
Para listar todos os pacotes instalados no servidor de origem (em sistemas baseados em Debian/Ubuntu):
dpkg -l > pacotes_instalados.txt
Para sistemas baseados em RHEL/CentOS:
rpm -qa > pacotes_instalados.txt
Verificação de versões e compatibilidade
Confirme se o sistema operacional de destino é compatível com suas aplicações. Idealmente, use a mesma distribuição e versão para evitar problemas de compatibilidade.
cat /etc/os-release
Verifique as versões dos principais serviços como banco de dados, servidor web e linguagens de programação:
mysql --version
apache2 -v # ou nginx -v
php -v
python3 --version
Estimativa de tempo e janela de manutenção
Calcule o tempo necessário para a migração com base no volume de dados e na complexidade dos serviços. Para servidores com muitos sites e bancos de dados grandes, reserve pelo menos 8-12 horas. Notifique os usuários sobre o período de manutenção programada com pelo menos 48 horas de antecedência.
Preparação do ambiente de destino
A preparação adequada do servidor de destino é fundamental para uma migração de servidor Linux bem-sucedida. Esta etapa envolve configurar o novo ambiente para receber os dados e serviços do servidor original.
Instalação do sistema operacional
Instale a mesma distribuição e versão do Linux no servidor de destino. Se estiver atualizando para uma versão mais recente, verifique a compatibilidade de todos os serviços críticos.
Configuração de rede
Configure as interfaces de rede no novo servidor. Se possível, mantenha as mesmas configurações de IP para facilitar a migração:
nano /etc/netplan/01-netcfg.yaml # Ubuntu 18.04+
Ou para sistemas baseados em RHEL/CentOS:
nano /etc/sysconfig/network-scripts/ifcfg-eth0
Instalação de pacotes e dependências
Instale os mesmos pacotes que estão no servidor de origem. Use o arquivo de inventário criado anteriormente:
Para sistemas Debian/Ubuntu:
apt update
cat pacotes_instalados.txt | awk '{print $2}' | xargs apt install -y
Para sistemas RHEL/CentOS:
yum update
yum install $(cat pacotes_instalados.txt)
Atenção: Este método pode não funcionar perfeitamente para todos os pacotes devido a dependências ou pacotes obsoletos. Esteja preparado para instalar manualmente alguns pacotes específicos.
Migração de dados e arquivos
A transferência de dados entre servidores Linux requer atenção especial para garantir que todos os arquivos sejam copiados com suas permissões e atributos intactos. Existem várias ferramentas que podem ser utilizadas para este processo.
Usando rsync para transferência de arquivos
O rsync é a ferramenta mais eficiente para transferir grandes volumes de dados, pois sincroniza apenas as diferenças entre os arquivos:
rsync -avzP -e "ssh -p 22" /caminho/origem/ usuario@ip-destino:/caminho/destino/
Para sincronizar todo o sistema de arquivos (excluindo diretórios virtuais):
rsync -avzP -e "ssh -p 22" --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / usuario@ip-destino:/
Atenção: Verifique cuidadosamente os caminhos antes de executar este comando, pois ele pode sobrescrever arquivos no destino.
Migração de bancos de dados
Para MySQL/MariaDB, exporte os bancos de dados no servidor de origem:
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full_backup.sql -u root -p
Transfira o arquivo de backup para o servidor de destino:
scp full_backup.sql usuario@ip-destino:/tmp/
Importe no servidor de destino:
mysql -u root -p < /tmp/full_backup.sql
Para PostgreSQL:
pg_dumpall -U postgres > postgres_backup.sql
scp postgres_backup.sql usuario@ip-destino:/tmp/
psql -U postgres -f /tmp/postgres_backup.sql postgres
Preservação de permissões e propriedade
Certifique-se de que as permissões e propriedades dos arquivos sejam mantidas durante a transferência. O rsync com a opção -a (archive) preserva estas informações, mas verifique manualmente arquivos críticos:
find /caminho/importante -type f -exec stat -c "%a %n" {} \; > permissoes_antes.txt
No servidor de destino, execute o mesmo comando e compare os resultados:
diff permissoes_antes.txt permissoes_depois.txt
Migração de configurações de serviços
A transferência das configurações de serviços é uma etapa crucial na migração de servidor Linux, pois garante que todas as aplicações funcionem corretamente no novo ambiente. Cada serviço tem suas particularidades que precisam ser consideradas.
Servidor web (Apache/Nginx)
Para o Apache, transfira os arquivos de configuração:
rsync -avz /etc/apache2/ usuario@ip-destino:/etc/apache2/
Para o Nginx:
rsync -avz /etc/nginx/ usuario@ip-destino:/etc/nginx/
Após a transferência, verifique a sintaxe das configurações no servidor de destino:
apache2ctl configtest # Para Apache
nginx -t # Para Nginx
Bancos de dados (MySQL/MariaDB/PostgreSQL)
Além dos dados, transfira também as configurações dos bancos de dados:
rsync -avz /etc/mysql/ usuario@ip-destino:/etc/mysql/ # MySQL/MariaDB
rsync -avz /etc/postgresql/ usuario@ip-destino:/etc/postgresql/ # PostgreSQL
Ajuste os parâmetros de desempenho conforme necessário para o novo hardware:
nano /etc/mysql/my.cnf # MySQL/MariaDB
nano /etc/postgresql/13/main/postgresql.conf # PostgreSQL
PHP e outras linguagens
Transfira as configurações do PHP e outras linguagens de programação:
rsync -avz /etc/php/ usuario@ip-destino:/etc/php/
Verifique se as extensões necessárias estão habilitadas no novo servidor:
php -m > php_modules.txt
Serviços de email (Postfix/Dovecot)
Para servidores de email, transfira as configurações e caixas de correio:
rsync -avz /etc/postfix/ usuario@ip-destino:/etc/postfix/
rsync -avz /etc/dovecot/ usuario@ip-destino:/etc/dovecot/
rsync -avz /var/mail/ usuario@ip-destino:/var/mail/
Migração de certificados SSL
A transferência segura de certificados SSL é essencial para manter a segurança dos sites e serviços no novo servidor Linux. Esta etapa requer atenção especial às permissões e à integridade dos arquivos de certificado.
Transferência de certificados comerciais
Para certificados comerciais, localize e transfira os arquivos de certificado:
rsync -avz /etc/ssl/certs/ usuario@ip-destino:/etc/ssl/certs/
rsync -avz /etc/ssl/private/ usuario@ip-destino:/etc/ssl/private/
Atenção: Verifique as permissões dos arquivos de chave privada. Eles devem ser legíveis apenas pelo usuário root ou pelo serviço que os utiliza:
chmod 600 /etc/ssl/private/*.key
Migração de certificados Let's Encrypt
Para certificados Let's Encrypt, você pode transferir toda a configuração:
rsync -avz /etc/letsencrypt/ usuario@ip-destino:/etc/letsencrypt/
Alternativamente, você pode emitir novos certificados no servidor de destino:
certbot --apache # Para Apache
certbot --nginx # Para Nginx
Atualização de configurações de serviços para novos caminhos
Após transferir os certificados, verifique se os caminhos nos arquivos de configuração dos serviços estão corretos:
grep -r "ssl_certificate" /etc/nginx/
grep -r "SSLCertificateFile" /etc/apache2/
Atualize os caminhos se necessário e reinicie os serviços para aplicar as alterações:
systemctl restart nginx # ou apache2
Migração de DNS e configurações de rede
A transição do DNS é uma das etapas mais delicadas da migração de servidor Linux, pois afeta diretamente a disponibilidade dos serviços para os usuários finais. Um planejamento cuidadoso minimiza o tempo de inatividade durante a migração.
Redução do TTL antes da migração
Dias antes da migração, reduza o TTL (Time To Live) dos registros DNS para minimizar o tempo de propagação:
; Exemplo de configuração de zona DNS
$TTL 300 ; Reduzir para 5 minutos (300 segundos)
@ IN SOA ns1.exemplo.com. admin.exemplo.com. (
2023042501 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
300 ; Minimum TTL
)
Estratégias para migração com mínimo downtime
Para minimizar o tempo de inatividade, considere estas estratégias:
- Mantenha ambos os servidores operacionais durante a transição
- Use sincronização contínua para manter os dados atualizados
- Implemente um proxy reverso temporário que possa alternar entre os servidores
- Considere o uso de balanceadores de carga se disponíveis
Para sincronização contínua:
while true; do
rsync -avz --delete /caminho/dados/ usuario@ip-destino:/caminho/dados/
sleep 300 # Sincroniza a cada 5 minutos
done
Atualização dos registros DNS
Quando estiver pronto para a transição, atualize os registros DNS para apontar para o novo servidor:
; Exemplo de atualização de registro A
exemplo.com. IN A 198.51.100.2 ; Novo IP (antes era 198.51.100.1)
Verifique a propagação DNS usando ferramentas online ou o comando dig:
dig exemplo.com +short
Configuração de redirecionamentos temporários
Para garantir que os usuários sejam redirecionados corretamente durante a transição, configure redirecionamentos no servidor antigo:
Para Apache:
<VirtualHost *:80>
ServerName exemplo.com
Redirect permanent / http://novo-servidor.exemplo.com/
</VirtualHost>
Para Nginx:
server {
listen 80;
server_name exemplo.com;
return 301 $scheme://novo-servidor.exemplo.com$request_uri;
}
Verificação e testes pós-migração
Após a migração de servidor Linux, é crucial realizar verificações abrangentes para garantir que todos os serviços estejam funcionando corretamente no novo ambiente. Esta fase de testes previne problemas que poderiam afetar os usuários.
Verificação de serviços e processos
Confirme se todos os serviços necessários estão em execução no novo servidor:
systemctl list-units --type=service --state=running
Compare com a lista do servidor original para identificar serviços ausentes:
diff servicos_origem.txt servicos_destino.txt
Verifique os logs do sistema em busca de erros:
journalctl -p err..emerg -b
Testes de funcionalidade de aplicações
Teste cada aplicação e site hospedado no servidor:
- Verifique se todos os sites carregam corretamente
- Teste formulários e funcionalidades interativas
- Confirme se os bancos de dados estão respondendo adequadamente
- Verifique se os certificados SSL estão funcionando (sem avisos de segurança)
Para testar sites antes da propagação DNS, use o arquivo hosts local ou o comando curl com o cabeçalho Host:
curl -H "Host: exemplo.com" http://198.51.100.2/
Monitoramento de desempenho
Compare o desempenho do novo servidor com o antigo:
top
htop
iostat -x 1
vmstat 1
Para monitoramento mais detalhado, considere ferramentas como:
- Netdata para monitoramento em tempo real
- Prometheus + Grafana para métricas de longo prazo
- Apache Benchmark (ab) ou wrk para testes de carga
ab -n 1000 -c 50 https://exemplo.com/
Verificação de backups
Confirme se os sistemas de backup estão configurados e funcionando no novo servidor:
systemctl status backup-service # Substitua pelo nome do seu serviço de backup
Realize um backup de teste e verifique se ele pode ser restaurado:
rsnapshot daily # Ou outro comando de backup que você utiliza
rsnapshot verify
Problemas comuns e como resolver
Mesmo com planejamento cuidadoso, problemas podem surgir durante a migração de servidor Linux. Conhecer os problemas mais comuns e suas soluções acelera o processo de resolução.
Sintoma: Permissões de arquivos incorretas
Causa: Durante a transferência, as permissões de arquivos podem ser alteradas, especialmente se a migração for feita entre sistemas com diferentes configurações de usuários e grupos.
Solução: Use o comando find para identificar e corrigir permissões críticas. Para diretórios web, por exemplo:
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
chown -R www-data:www-data /var/www
Sintoma: Serviços não iniciam após a migração
Causa: Configurações incompatíveis, dependências ausentes ou caminhos incorretos nos arquivos de configuração.
Solução: Verifique os logs de erro para identificar o problema específico:
journalctl -u nome-do-serviço
Corrija os caminhos nos arquivos de configuração e verifique se todas as dependências estão instaladas:
ldd /caminho/para/binario | grep "not found"
Sintoma: Bancos de dados corrompidos ou incompletos
Causa: Interrupção durante a transferência ou problemas de compatibilidade entre versões.
Solução: Restaure a partir do backup mais recente e verifique a integridade:
# Para MySQL/MariaDB
mysqlcheck --all-databases -u root -p
# Para PostgreSQL
vacuumdb --all --analyze
Sintoma: Certificados SSL não funcionam
Causa: Caminhos incorretos, permissões inadequadas ou certificados expirados.
Solução: Verifique a configuração e as permissões dos certificados:
openssl x509 -in /caminho/para/certificado.crt -text -noout | grep "Not After"
Corrija as permissões e caminhos nos arquivos de configuração do servidor web:
chmod 600 /etc/ssl/private/*.key
chmod 644 /etc/ssl/certs/*.crt
Sintoma: Problemas de DNS após a migração
Causa: Propagação DNS incompleta ou configurações incorretas.
Solução: Verifique se os registros DNS foram atualizados corretamente e aguarde a propagação completa:
dig +trace exemplo.com
Enquanto aguarda, você pode usar redirecionamentos temporários ou atualizar o arquivo hosts local para testes:
echo "198.51.100.2 exemplo.com www.exemplo.com" >> /etc/hosts
Perguntas frequentes sobre checklist para migração de servidor Linux
Quanto tempo leva uma migração completa de servidor Linux?
O tempo de migração varia conforme o volume de dados e a complexidade dos serviços. Para servidores pequenos, pode levar de 2 a 4 horas, enquanto servidores maiores com muitos sites e bancos de dados podem exigir de 8 a 24 horas, considerando o tempo de propagação DNS.
É possível migrar um servidor Linux sem downtime?
Sim, é possível realizar uma migração com downtime mínimo usando estratégias como sincronização contínua de dados com rsync, configuração prévia do novo servidor e ajuste de TTL DNS antes da migração. A técnica de DNS failover também permite uma transição quase imperceptível para os usuários.
Quais são os erros mais comuns durante a migração de servidores Linux?
Os erros mais comuns incluem permissões incorretas de arquivos, configurações incompatíveis entre versões de software, problemas de dependências, esquecimento de migrar bancos de dados, e falhas na configuração de DNS. Realizar testes completos antes de apontar o DNS para o novo servidor é essencial para evitar esses problemas.
É necessário ter o mesmo sistema operacional no servidor de destino?
Não é estritamente necessário, mas é altamente recomendado usar a mesma distribuição e versão para evitar problemas de compatibilidade. Migrar entre diferentes distribuições (como de CentOS para Ubuntu) ou entre versões muito distantes pode exigir ajustes significativos nas configurações e dependências de software.
Como migrar certificados SSL durante a transferência de servidor?
Para migrar certificados SSL, copie os arquivos de certificado (.crt), chave privada (.key) e cadeia de certificados (.ca-bundle) do servidor antigo para o novo, mantendo as permissões adequadas. Em servidores com Let's Encrypt, você pode reinstalar os certificados usando certbot no novo servidor ou transferir a configuração completa do /etc/letsencrypt.
Conclusão
A migração de servidor Linux é um processo complexo que requer planejamento cuidadoso e execução metódica. Seguindo este checklist completo, você pode minimizar riscos e garantir uma transição suave para o novo ambiente.
- Sempre faça backups completos antes de iniciar qualquer processo de migração
- Teste exaustivamente o novo servidor antes de apontar o DNS definitivamente
- Mantenha o servidor antigo operacional por pelo menos uma semana após a migração para facilitar a reversão em caso de problemas
Lembre-se que cada ambiente tem suas particularidades, portanto, adapte este checklist às necessidades específicas do seu servidor. Com planejamento adequado e testes rigorosos, você pode realizar uma migração bem-sucedida com mínimo impacto para os usuários finais.
Precisa de ajuda com migração de servidores Linux?
A AviraHost oferece serviços especializados de migração de servidores Linux com downtime mínimo e suporte técnico 24/7. Nossa equipe de especialistas pode gerenciar todo o processo, garantindo que seus dados e configurações sejam transferidos com segurança.