Como Migrar o Postgres da Sua Instância Mastodon para um Serviço Gerenciado
🔍 WiseChecker

Como Migrar o Postgres da Sua Instância Mastodon para um Serviço Gerenciado

Gerenciar uma instância Mastodon exige administrar um banco de dados PostgreSQL que armazena todas as contas, postagens e relacionamentos dos usuários. Conforme sua instância cresce, hospedar o Postgres por conta própria pode se tornar um gargalo para desempenho, backups e disponibilidade. Migrar para um serviço de banco de dados gerenciado, como Amazon RDS, DigitalOcean Managed Databases ou um provedor dedicado de Postgres, transfere as tarefas de manutenção e melhora a confiabilidade. Este artigo explica o processo completo de migração do banco de dados Postgres da sua instância Mastodon para um serviço gerenciado sem perder dados ou causar downtime prolongado.

Principais Conclusões: Migrar Postgres do Mastodon para Serviço Gerenciado

  • pg_dump e pg_restore: Use essas ferramentas para exportar o banco de dados local e importá-lo no serviço gerenciado com zero perda de dados.
  • Alterações nas variáveis de ambiente no .env.production: Atualize DB_HOST, DB_NAME, DB_USER e DB_PASS para apontar para o endpoint do novo banco de dados gerenciado.
  • Reinicialização da aplicação e validação: Execute systemctl restart mastodon- e verifique os logs de conexão para confirmar que a migração foi bem-sucedida.

ADVERTISEMENT

Por Que Mover o Postgres do Mastodon para um Serviço Gerenciado

Uma instância Mastodon depende do PostgreSQL como seu armazenamento de dados principal. Hospedar o Postgres por conta própria significa que você precisa lidar com backups, replicação, atualizações e ajustes de desempenho. Um serviço gerenciado automatiza essas tarefas: ele fornece backups automatizados, recuperação pontual, réplicas de leitura e failover automático. Isso reduz o risco de perda de dados e libera seu tempo para a administração da instância.

Serviços gerenciados também oferecem melhores garantias de disponibilidade. Se o hardware do seu servidor falhar, o provedor gerenciado cria um novo nó de banco de dados a partir do backup mais recente. Configurações auto-hospedadas exigem que você restaure a partir de seus próprios arquivos de backup, o que pode levar horas. Para uma instância Mastodon com centenas ou milhares de usuários, a diferença na velocidade de recuperação é significativa.

Outro motivo é a escalabilidade. Conforme sua instância cresce, a carga do banco de dados aumenta. Serviços gerenciados permitem redimensionar a instância do banco de dados com alguns cliques ou chamadas de API. Escalar um servidor Postgres auto-hospedado requer migrar para hardware maior ou configurar replicação complexa manualmente.

O Que Você Precisa Antes de Iniciar a Migração

Antes de começar, você precisa do seguinte:

  • Acesso SSH ao servidor da aplicação Mastodon onde o banco de dados Postgres atual reside.
  • Credenciais e detalhes de conexão para o serviço Postgres gerenciado de destino, incluindo hostname, porta, nome do banco, usuário e senha.
  • O serviço gerenciado deve permitir conexões do endereço IP do servidor da aplicação Mastodon. Adicione uma regra de firewall de entrada ou entrada de grupo de segurança para esse IP.
  • Espaço em disco suficiente no servidor da aplicação para armazenar um dump compactado do banco de dados. Um banco de dados Mastodon típico com 10.000 usuários tem cerca de 2–5 GB descompactado.
  • Privilégios sudo ou ser o usuário mastodon para executar comandos Rails e reiniciar serviços.

Passos para Migrar o Postgres do Mastodon para um Serviço Gerenciado

Siga estes passos em ordem. A migração usa uma abordagem de dump lógico, que minimiza o downtime para apenas alguns minutos.

  1. Coloque o Mastodon em modo de manutenção
    Execute cd /home/mastodon/live && RAILS_ENV=production bin/tootctl maintenance mode enable. Isso impede novas postagens e interações durante o dump final. Esta etapa é opcional, mas recomendada para garantir a consistência dos dados.
  2. Crie um dump compactado do banco de dados atual
    Use pg_dump -U mastodon -h localhost mastodon_production -Fc -Z 9 -f /tmp/mastodon_dump.dump. Substitua mastodon_production pelo nome real do seu banco de dados. A flag -Fc cria um formato personalizado que é mais rápido de restaurar. A flag -Z 9 aplica compactação máxima.
  3. Restaure o dump no serviço gerenciado
    Execute pg_restore -U seu_usuario_gerenciado -h seu_host_gerenciado -d seu_banco_gerenciado -p 5432 -v /tmp/mastodon_dump.dump. Digite a senha quando solicitado. A flag -v mostra o progresso. Isso pode levar vários minutos para bancos de dados grandes. Monitore a saída em busca de erros.
  4. Atualize a configuração de ambiente do Mastodon
    Edite /home/mastodon/live/.env.production. Altere estes valores:
    DB_HOST=seu_host_gerenciado
    DB_PORT=5432
    DB_NAME=seu_banco_gerenciado
    DB_USER=seu_usuario_gerenciado
    DB_PASS=sua_senha_gerenciada. Salve o arquivo.
  5. Reinicie os serviços do Mastodon
    Execute systemctl restart mastodon-web mastodon-sidekiq mastodon-streaming. Isso faz com que a aplicação use a nova conexão de banco de dados.
  6. Verifique a conexão e os dados
    Confira os logs: journalctl -u mastodon-web -n 50. Procure por linhas que digam ActiveRecord::ConnectionAdapters::PostgreSQLAdapter sem erros. Em seguida, teste a instância publicando um toot e verificando se ele aparece no seu perfil.
  7. Desative o modo de manutenção
    Execute cd /home/mastodon/live && RAILS_ENV=production bin/tootctl maintenance mode disable. Sua instância agora está totalmente operacional no serviço gerenciado.

Método Alternativo: Replicação por Streaming para Downtime Quase Zero

Se sua instância não pode aceitar nem cinco minutos de downtime, use replicação por streaming. Este método requer que o serviço gerenciado suporte replicação a partir de um primário externo. Configure o serviço gerenciado como uma réplica do seu Postgres atual e depois promova-o a primário. Isso é mais complexo e requer configurar wal_level = logical e max_replication_slots no banco de dados de origem. Use este método apenas se você tiver experiência com replicação Postgres.

ADVERTISEMENT

Problemas Comuns Após Migrar o Postgres do Mastodon

Mastodon Não Consegue Conectar ao Novo Banco de Dados

A causa mais comum é um hostname ou porta incorretos no .env.production. Verifique novamente os valores. Também confirme que o firewall do serviço gerenciado permite conexões de entrada do endereço IP do servidor Mastodon. Execute psql -h seu_host_gerenciado -U seu_usuario_gerenciado -d seu_banco_gerenciado -c 'SELECT 1' a partir do servidor da aplicação. Se isso falhar, a rede ou as credenciais estão erradas.

Índices ou Extensões Ausentes Após a Restauração

O pg_restore nem sempre recria extensões como pg_trgm ou btree_gin que o Mastodon requer. Faça login no banco de dados gerenciado e execute CREATE EXTENSION IF NOT EXISTS pg_trgm e CREATE EXTENSION IF NOT EXISTS btree_gin. Em seguida, execute cd /home/mastodon/live && RAILS_ENV=production bundle exec rails db:migrate para atualizar os índices.

Desempenho Mais Lento do Que o Auto-Hospedado

Serviços gerenciados geralmente têm configuração padrão que não é otimizada para o Mastodon. Verifique as configurações de work_mem e shared_buffers. Para uma instância Mastodon com 10.000 usuários ativos, defina shared_buffers para 25% da RAM disponível. Entre em contato com seu provedor para ajustar esses parâmetros.

Item Postgres Auto-Hospedado Serviço Postgres Gerenciado
Responsabilidade pelo backup Tarefas cron ou scripts manuais Backups automatizados diários com recuperação pontual
Atualizações e patches Manual apt upgrade ou similar Provedor gerencia atualizações menores e maiores
Alta disponibilidade Requer configuração manual de replicação Failover automático integrado para réplica de espera
Escalabilidade Requer migração de hardware ou replicação manual Redimensione o tipo de instância com alguns cliques
Custo Apenas custo do servidor Custo do servidor mais taxa do serviço gerenciado

Migrar o banco de dados Postgres da sua instância Mastodon para um serviço gerenciado remove o fardo da administração do banco de dados e melhora a confiabilidade. Agora você tem um banco de dados que faz backup automaticamente e pode fazer failover sem intervenção manual. Após a migração, monitore os logs do mastodon-sidekiq em busca de jobs atrasados que possam indicar problemas de conexão. Para uma camada extra de segurança, configure uma réplica de leitura no serviço gerenciado e aponte suas ferramentas de monitoramento para ela para consultas analíticas sem afetar o banco de dados primário.

ADVERTISEMENT