Início › Guias › n8n-self-hosted
Guia

Como migrar o n8n do SQLite para Postgres (sem dor de cabeça)

Atualizado em 2026-10-07 · por Redação Automação Hoje
Profissional de TI migrando n8n do SQLite para Postgres em ambiente self-hosted
Resposta rápida: Para migrar o n8n do SQLite para Postgres com segurança, você precisa: congelar mudanças (pausar execuções), fazer backup completo (banco e dados do n8n), subir o Postgres, apontar o n8n para a nova base via variáveis de ambiente e validar workflows, credenciais e histórico. O ponto crítico é evitar escrita no SQLite durante a cópia/restore.
· espaço publicitário ·
Em resumo
  • SQLite funciona bem para testes; Postgres é mais previsível para produção e concorrência.
  • Migração segura começa com pausa de filas/executions e backup verificável.
  • Em n8n self-hosted, a troca de banco costuma ser feita por variáveis (DB_TYPE/DB_POSTGRESDB_*) e reinício controlado.
  • Valide pós-migração: credenciais, webhooks, execuções antigas e permissões.
  1. 1) Decida se é hora de sair do SQLite

    Sinais comuns: aumento de volume de execuções, mais de um usuário mexendo em workflows, travamentos intermitentes, restore demorado, ou necessidade de confiabilidade maior. SQLite é ótimo pela simplicidade; Postgres tende a lidar melhor com concorrência e manutenção em produção.

  2. 2) Faça um backup que você consegue restaurar

    Guarde: (a) o arquivo do SQLite (normalmente em volume persistente), (b) a pasta de dados do n8n (config e artefatos), e (c) o arquivo de deployment (docker-compose/variáveis). Se possível, teste o restore em um ambiente de homologação. Backup “feito” que não restaura é só sensação de segurança.

  3. 3) Congele escrita: pause execuções e mudanças

    Antes de copiar/transferir dados, reduza o risco: pause agendamentos, desative triggers temporariamente e evite edições em workflows. O objetivo é impedir que o SQLite mude enquanto você migra, evitando inconsistências difíceis de rastrear (ex.: credenciais “sumindo”, execuções duplicadas).

  4. 4) Suba o Postgres e confirme acesso

    Suba o Postgres com volume persistente e credenciais definidas. Confirme conexão (host/porta/usuário/senha/db). Dica prática: defina timezone e garanta persistência do volume; isso evita surpresas em logs e retenção de dados.

  5. 5) Aponte o n8n para Postgres (sem jogar o antigo fora)

    Ajuste as variáveis de ambiente do n8n para usar Postgres e reinicie de forma controlada. Mantenha o SQLite intacto até validar tudo. Em ambientes Docker, isso normalmente significa editar docker-compose e subir novamente, observando logs de migração/inicialização.

  6. 6) Migre dados e valide o que mais quebra

    O que merece validação manual: abertura do editor, lista de workflows, credenciais (principalmente integrações sensíveis), webhooks (rotas e respostas), execuções recentes e agendamentos. Rode 2–3 fluxos críticos de ponta a ponta e compare resultados com o período pré-migração.

  7. 7) Reative triggers e monitore por 24–72 horas

    Reative aos poucos (comece pelos fluxos menos críticos). Monitore erros, latência, duplicidade e filas. Se aparecer erro intermitente, volte para o básico: logs, variáveis e conectividade com o Postgres. Só depois desse período faz sentido considerar remover o SQLite antigo.

SQLite vs Postgres no n8n: qual é a diferença prática

Na vida real, a diferença não é “um é melhor”, e sim “um é mais tolerante ao crescimento”. SQLite reduz complexidade (um arquivo, pronto), mas tende a sofrer quando a automação vira operação: mais execuções simultâneas, mais escrita, mais concorrência.

Postgres adiciona uma peça a mais (um serviço de banco), porém melhora previsibilidade em cenários com volume e manutenção. Para muita gente, a migração é menos sobre performance bruta e mais sobre reduzir sustos e facilitar backup/restore estruturado.

PontoSQLitePostgres
SetupSimples (arquivo)Mais componentes (serviço + credenciais)
ConcorrênciaPode limitar em escrita concorrenteMais robusto para múltiplas conexões
Operação/backupCópia do arquivo (cuidado com consistência)Dump/restore e rotinas maduras
Quando faz sentidoTeste, PoC, baixa cargaProdução, times, volume crescente

Checklist rápido de migração (o que não dá para esquecer)

Se você só quer um checklist enxuto, use isso como “ordem de execução” para reduzir risco:

  • Anotar versão do n8n e método de deploy (Docker, VM, etc.).
  • Pausar execuções e evitar edições durante a janela.
  • Backup do SQLite + dados do n8n + configuração/variáveis.
  • Subir Postgres com volume persistente e conexão testada.
  • Apontar n8n para Postgres e reiniciar olhando logs.
  • Validar: workflows, credenciais, webhooks, agendamentos e execuções.
  • Reativar triggers gradualmente e monitorar por 24–72h.

Erros comuns que fazem a migração parecer “assombrada”

O que mais vejo dar trabalho não é Postgres “falhando”; é o processo ficando sem travas. Três armadilhas clássicas:

1) Migrar com o n8n ainda escrevendo no SQLite. Você copia um estado e, minutos depois, ele já mudou.

2) Confundir persistência: Postgres sem volume persistente parece funcionar… até reiniciar e “sumir tudo”.

3) Validar só o login no editor. O teste real é executar fluxos críticos, principalmente os que dependem de webhooks, filas e credenciais.

Perguntas frequentes

Preciso migrar para Postgres para rodar n8n em produção?
Não é obrigatório, mas costuma ser recomendado quando a automação deixa de ser experimento e vira operação contínua. Se você tem baixa carga e aceita simplicidade, SQLite pode segurar. Se há concorrência, crescimento e necessidade de restauração rápida, Postgres geralmente dá menos dor de cabeça.
Vou perder histórico de execuções ao trocar de banco?
Você só perde se não migrar/restaurar o conteúdo do banco com consistência. O cuidado principal é congelar escrita no SQLite e garantir que o procedimento de cópia/restore foi completo. Depois, valide se execuções antigas aparecem e se novas execuções estão sendo registradas.
Posso manter SQLite e Postgres ao mesmo tempo e alternar?
Dá para manter os dois (por exemplo, como “plano de rollback”), mas o n8n vai operar com um banco por vez. O mais seguro é: migrar, validar e só então decidir se remove o antigo. Alternar sem critério tende a gerar confusão operacional.
Quais sinais indicam que meu Postgres está mal configurado para o n8n?
Quedas após reinício (volume não persistente), erros intermitentes de conexão, lentidão em horários de pico e logs com falhas de autenticação/host. Em geral, os problemas são de rede, credenciais, persistência e recursos da máquina — não do n8n em si.

Leia também