Net-Base Revista

27.08.2026

Atualização do PostgreSQL sem tempo de inatividade: Blue/Green, replicação e plano de rollback para bases de dados ERP em produção

Como atualizar PostgreSQL em ambientes ERP produtivos sem interrupção: abordagem Blue/Green, variantes de replicação, projeto de cutover e um plano de rollback robusto — com foco em operação, interfaces e consistência dos dados.

27.08.2026

Do tema da revista à prática do projeto

Páginas de serviços e técnicas correspondentes ao artigo

Uma atualização do PostgreSQL sem downtime soa à primeira vista como uma promessa do mundo cloud. Na realidade de um banco de dados ERP em produção é mais uma disciplina: é preciso fazer com que consistência de dados, comportamento das interfaces, execuções em lote, reporting, permissões e processos operacionais atuem em conjunto de forma que a mudança de versão em si seja apenas um momento de comutação controlado. Nesse contexto, „sem downtime“ raramente deve ser entendido de forma absoluta. Na prática significa: nenhuma interrupção perceptível para os usuários, nenhum rollback não planejado, nenhuma retenção de horas por bloqueios — e, acima de tudo, um caminho de retorno que realmente funcione.

Este artigo enquadra os trajetos típicos de upgrade do PostgreSQL em ambientes ERP – com Blue/Green, replicação (física e lógica) e um plano de fallback que não exista apenas no papel. O foco está deliberadamente em operação e em questões de decisão: qual arquitetura é necessária? Onde estão os riscos? Quais trabalhos preparatórios consomem tempo? E como evitar que um upgrade falhe por temas periféricos como drivers, cadeias de jobs ou uma autoridade de dados pouco clara?

Por que bancos de dados ERP são particularmente sensíveis em upgrades

Sistemas ERP são orientados a OLTP (Online Transaction Processing), ou seja, otimizados para muitas transações curtas: gravar registros, registrar movimentações de estoque, calcular preços, registrar pagamentos. Essas transações dependem de expectativas claras: a latência precisa ser estável, locks não devem escalar e o sistema deve permanecer previsível em picos de carga.

Um upgrade do PostgreSQL interfere exatamente nessa estabilidade — mesmo quando a aplicação permanece inalterada. Entre as causas estão, entre outras:

  • Alterações no Query-Optimizer (Planner): consultas podem passar a escolher planos de execução diferentes. Isso não é „errado“, mas sob carga pode gerar novos hotspots.
  • Alterações de parâmetros e defaults: valores de configuração ou seu comportamento padrão mudam entre versões major. Isso afeta, por exemplo, Autovacuum, WAL (Write-Ahead Log, o log de transações) ou parâmetros de memória como work_mem.
  • Drivers e temas de protocolo: versões de ODBC/JDBC/Npgsql, parâmetros SSL/TLS, autenticação (por exemplo SCRAM vs. MD5) e cadeias de certificados costumam ser bloqueadores ocultos.
  • Ecossistema de interfaces: ERP raramente é „apenas uma aplicação“. Reporting, EDI, webservices, ETL/BI, gestão documental e integrações em lote acessam o banco de dados — direta ou indiretamente.

Consequentemente: um upgrade não é apenas uma mudança de banco de dados. É um release coordenado entre aplicação, operação e sistemas adjacentes. É por isso que Blue/Green e replicação são tão valiosos: eles desacoplam a mudança técnica do risco de uma janela de manutenção longa.

Defina objetivos com clareza: „sem downtime“ não significa „sem comutação“

Antes de escolher a arquitetura, vale definir objetivos claros em termos de métricas operacionais:

  • RTO (Recovery Time Objective): Quão rápido o banco de dados ERP precisa voltar a estar acessível de forma estável após uma falha?
  • RPO (Recovery Point Objective): Quantos dados (intervalo de tempo) podem ser perdidos no pior caso? Em migrações realmente sem downtime o objetivo costuma ser RPO≈0.
  • Janela de manutenção: Existe uma janela „pequena“ (por exemplo, poucos minutos) para um Cutover, ou nenhuma? Em ERP a comutação geralmente é viável se for planejada (evitar troca de turnos, fechamento de mês).
  • Aceitação de fases somente leitura: Por vezes é aceitável, do ponto de vista funcional, uma fase curta de „leitura sim, escrita não“, desde que os lançamentos não sejam perdidos.
  • Esses objetivos determinam se você pode trabalhar com replicação mais Cutover ou se precisa adicionalmente de mecanismos para desacoplamento de escrita (por exemplo, enfileiramento em interfaces). Quem for impreciso aqui pagará depois com improvisação no Go-live.

    Blue/Green para PostgreSQL: Princípio, benefícios, armadilhas típicas

    Blue/Green significa: duas ambientes completos existem em paralelo. „Blue“ é a produção, „Green“ é a nova versão. A vantagem decisiva não é apenas a capacidade de alternância, mas a testabilidade em condições realistas: o Green pode ser verificado com dados próximos aos de produção, interfaces reais e monitoramento real antes que os usuários façam a alternância.

    Para PostgreSQL no contexto ERP, o Blue/Green tipicamente compreende:

    • um cluster PostgreSQL separado (Green) em novos Hosts/VMs ou em instâncias separadas
    • parâmetros de rede e segurança idênticos (Firewall, TLS, resolução DNS, contas de serviço)
    • uma migração de dados definida (cópia inicial + delta)
    • um mecanismo de Cutover (alternância DNS/VIP, troca do connection string, proxy)

    O que o Blue/Green realmente traz operacionalmente

    Na prática são três pontos que fazem a diferença:

    • Reversão rápida: Em caso de erro, você reverte, em vez de tentar reparar um upgrade „para trás“.
    • Redução de risco por validação prévia: O Green pode receber verificações de desempenho e de funcionalidade, incluindo cargas típicas de ERP (execuções em lote, impressão, ondas de lançamentos).
    • Separação clara entre risco de banco de dados e de aplicação: Quando o Green está em execução, muitas incógnitas já estão resolvidas (drivers, autenticação, extensões, parâmetros).

    Os cenários de erro Blue/Green mais comuns

    O Blue/Green raramente falha pela ideia, e sim por detalhes:

    • Dependências incompletas: Ferramentas de reporting ou integrações se conectam „de forma rígida“ ao host antigo (IP, alias, pinning de certificado). No Cutover elas travam.
    • Responsabilidade (ownership) das interfaces pouco clara: Ninguém se sente responsável por garantir que todos os consumidores façam a alternância ou, pelo menos, sejam testados.
    • Validação de dados ausente: „Os dados estão replicados“ não significa que tudo esteja correto do ponto de vista funcional (por exemplo, sequências/identidades, carimbos de data/hora, lógica de subledger).

    Replicação como ferramenta de upgrade: física vs. lógica

    Schematische Darstellung von physischer und logischer Replikation zwischen zwei Datenbankknoten
    Replicação física trabalha próxima ao WAL, replicação lógica transfere alterações de tabelas – importante para atualizações maiores.

    Para uma atualização do PostgreSQL sem tempo de inatividade, a replicação é geralmente o mecanismo central para manter os dados em paralelo. O PostgreSQL oferece várias abordagens, cada uma com trade-offs diferentes. Importante: ‚replicação‘ não é automaticamente ‚alta disponibilidade‘. Para atualizações, use a replicação como uma ponte de migração.

    Replicação física (Streaming Replication): rápida, próxima à máquina

    A replicação física opera ao nível do WAL: o Standby recebe o log de transações e o aplica. Isso é performático e estável, mas com uma limitação central para Major-Upgrades: em geral o Primary e o Standby devem corresponder à mesma versão major. Para um salto de versão, p.ex. do PostgreSQL 13 para o 16, a replicação física ajuda mais dentro de uma versão (HA, manutenção) do que como um caminho direto para um Major-Upgrade.

    Utilidade prática no projeto de upgrade ainda surge se você empregar a replicação física como rede de segurança no sistema Blue: antes do Cutover pode garantir que a produção existente está redundante enquanto constrói o ambiente Green em paralelo.

    Replicação lógica: aplicação de deltas via publications/subscriptions

    A replicação lógica transmite alterações ao nível de tabela (INSERT/UPDATE/DELETE) e é por isso adequada para Major-Upgrades, pois Publisher e Subscriber podem ter versões major diferentes (observadas as compatibilidades). Para bases ERP é frequentemente o caminho mais prático para uma janela de corte mínima.

    Características típicas que deve planear:

    • Snapshot inicial + alterações contínuas: o conjunto de dados é copiado inicialmente e depois as alterações são aplicadas.
    • DDL não é replicada automaticamente: alterações de esquema (DDL, i.e. tabelas/colunas/índices) não são replicadas como alterações de dados. Para upgrades isso é aceitável, porque o esquema normalmente permanece igual — mas extensions, roles e permissões têm de ser migrados intencionalmente.
    • Questões de Sequence/Identity: sequences (p.ex. para números de documentos) são críticas em ERP. Dependendo da configuração, deve garantir que os valores das sequences são adotados de forma consistente e continuados corretamente após o Cutover.
    • Liberdade de conflitos: durante a fase de replicação deve escrever-se apenas de um lado. Caso contrário surgem conflitos que são difíceis de resolver em operação ERP.

    O caminho de upgrade na prática: um modelo de procedimento robusto

    Betriebsteam plant Cutover-Schritte für eine Datenbankumschaltung mit Runbook und Statuschecks
    O Cutover funciona quando passos, pontos de verificação e critérios de abortamento são testados como um runbook.

    Independentemente da ferramenta exata, um upgrade minimizado em tempo de inatividade em ambientes ERP normalmente decorre em etapas claras. Uma estrutura prática é:

    1) Análise prévia: o que precisa realmente ser migrado?

    Aqui não se trata de ‚Instalar PostgreSQL X‘, mas de dependências:

    • Extensions (p.ex. para fulltext, jobs, tipos de dados especiais): quais estão ativas em produção e quais existem por legado?
    • Auth e funções: funções locais, integração LDAP/AD, SCRAM, autenticação por certificado. A exportação de funções e permissões é uma etapa de trabalho separada.
    • Tarefas e execuções em lote: O agendamento roda externamente (p. ex. via um jobserver) ou no banco de dados (p. ex. via extensões)? Quais jobs são críticos para o cutover (processamento noturno, faturamento, MRP)?
    • Paisagem de consumidores: Quem lê/escreve? ERP-Backend, portais web, serviços de integração, BI/ETL, integrações com parceiros, DMS, monitoramento.

    Um artefato simples, mas eficaz, é um Application-Map: banco de dados no centro, setas para todos os sistemas incluindo o owner e o método de comutação (DNS, configuração, Secret, Proxy). Isso evita que o cutover falhe por leitores “esquecidos” que de repente entram em timeout.

    2) Green aufbauen: nicht nur Datenbank, sondern Betriebsfähigkeit

    O Green só faz sentido quando é “operacionalmente real”. Isso inclui:

    • Monitoramento (métricas, logs, alarmes): mesma visibilidade que no Blue, caso contrário o Go-live fica às cegas.
    • Backup/RESTore: os backups no Green devem funcionar, incluindo teste de RESTore (pelo menos por amostragem). Só assim fica claro que, em caso de falha, você não perde duas vezes.
    • Paridade de segurança: configuração TLS, ciphers, cadeia de certificados, regras HBA (Host-Based Authentication), firewall. Deixar o hardening para depois complica a comutação.
    • Base de performance: latência de storage, IOPS, CPU, RAM. Um upgrade é um bom momento para corrigir classes de storage inadequadas ou perfis de VM obsoletos.

    3) Datenübernahme: initiale Kopie und Delta-Phase

    Para grandes bases de dados ERP, a cópia inicial costuma ser a etapa mais demorada. Ela não precisa ocorrer na janela de manutenção, se for bem desacoplada. O decisivo é que a fase delta (replicação) rode de forma estável e seja monitorada: lag, erros, alterações pendentes.

    Operacionalmente importante: defina limites a partir dos quais você inicia o cutover. Se o Green estiver constantemente atrás, a comutação pode ser possível, mas você transfere o problema para o sistema live.

    4) Validierung: fachlich und technisch, ohne Perfektionismus

    A validação não é um projeto de testes de meses, mas é mais do que „SELECT COUNT(*)“. Em ambientes ERP funcionam bem as seguintes verificações:

    • Amostragens em tabelas críticas: itens em aberto, níveis de estoque, cabeçalhos/posições de documentos, tabelas de determinação de preço, devedor/credor.
    • Comparações de agregados: somas sobre períodos definidos (faturamento, quantidades), para identificar rapidamente divergências grosseiras.
    • Métricas técnicas: estado de índices e estatísticas, atividade do autovacuum, lag de replicação, limites de conexão, latências de queries.

    O importante é decidir o que a aceitação realmente precisa. Um upgrade não é um release funcional. Você quer demonstrar: mesmos dados, mesmo comportamento, performance estável. Para isso bastam pontos de verificação confiáveis e reproduzíveis.

    5) Cutover: der Umschaltmoment muss wie ein Runbook funktionieren

    O cutover em si raramente é complexo, mas é crítico em tempo. Um bom runbook descreve não apenas passos, mas também pontos de verificação e critérios de interrupção. Elementos típicos:

    • Controlar a parada de escrita: ou via modo de manutenção da aplicação ou por um bloqueio técnico (p. ex. cortar conexões para papéis com permissão de escrita). Objetivo: nenhuma nova gravação no Blue na fase final.
    • Levar a replicação a „zero“: aguardar até que o Green tenha todas as alterações (RPO≈0).
    • Alternar a aplicação: Connection-Strings, DNS, VIP, regra de proxy. Decisivo: consistente para todos os componentes, não apenas para o ERP-Backend.
    • Smoke-Tests: login, abrir dados mestres, lançar documento, relatório típico, ping das interfaces. Curto, mas significativo.

    Plano de reversão (Rollback) sem ilusões: o que vocês realmente podem reverter

    Schematische Umschaltung zwischen Blue- und Green-Datenbank mit Rückschaltpfad
    Rollback é livre de conflitos apenas até fases claramente definidas – depois disso a consistência dos dados passa a ser a questão principal.

    O plano de reversão é a parte que se prefere ’não precisar‘. Exatamente por isso ele precisa ser concreto. Em Blue/Green-Setups, a reversão é, no essencial, uma alternância de volta para Blue. Mas: assim que, após o Cutover, ocorram Writes produtivos em Green, o ‚voltar‘ torna‑se um problema técnico se Blue, nesse meio tempo, não tiver recebido também todos os Writes.

    Variações de Rollback e suas consequências

    • Rollback imediato antes de Writes produtivos: caso ideal. Se, antes da liberação aos usuários, vocês detectarem que algo está fundamentalmente errado, podem reverter sem conflitos de dados.
    • Rollback após alguns Writes: possível, mas somente com estratégia clara: ou efetuar lançamentos manuais (funcional) ou uma contra-replicação/adoção de delta temporária (técnico), o que em processos ERP raramente é tranquilo.
    • Não um Rollback, mas um „Fix forward“: se o Green já estiver escrevendo em produção e o estado dos dados ali for a nova ‚Single Source of Truth‘, retornar geralmente é mais perigoso do que uma estabilização direcionada para frente. Isso deve ser aceito como opção antecipadamente.

    Um plano de reversão robusto especifica, portanto, explicitamente:

    • até quando o Rollback é ’seguro‘ (janela de tempo ou fase no Runbook)
    • quais critérios de interrupção se aplicam (p. ex. Smoke-Test falha, erro em interfaces, somas implausíveis)
    • como são os fluxos de comunicação e aprovações (quem decide, quem é informado)

    Mais importante que o Rollback: o „Notbetrieb“ para interfaces

    Em ambientes ERP, as interfaces são a causa mais frequente de situações caóticas após um Cutover. Se conexões com parceiros ou serviços de integração interna deixarem de entregar, vocês precisam de um Notbetrieb: buffers intermediários (Queues), regras de reinício, estratégias claras de Retry. „Retry“ deve ser idempotente (repetível sem duplicar lançamentos). Isso não é função do banco de dados, mas de design de aplicação e integração – e decide se vocês realmente conseguem um Upgrade sem paralisação.

    Performance e estabilidade após o Upgrade: por que as primeiras 48 horas são decisivas

    Muitas equipes consideram o Upgrade ‚concluído‘ assim que o Cutover é feito. Na prática começa então a fase em que perfis de carga, comportamento do cache e o Autovacuum ainda se estabilizam. Medidas típicas que se mostraram eficazes:

    • Monitoramento intenso nas primeiras 48 horas: latências de query, locks, tempos de espera de I/O, volume de WAL, execuções de Autovacuum.
    • Detectar regressões de plano: Consultas individuais que antes estavam „ok“ podem dominar após o upgrade. Aqui ajudam listas de top queries e uma escalada clara de quem pode tunar (DBA vs. equipe de aplicação).
    • Monitorar separadamente Reporting/ETL: Ferramentas com predominância de leitura costumam ser as primeiras a causar problemas (queries longas, novos planos). Read Replicas podem ajudar, mas precisam caber no conceito global.

    Para a direção de TI é importante: planeje essa estabilização como parte da mudança. Um upgrade sem downtime não é „sem esforço“, mas sim esforço no momento certo e com risco controlado.

    Decisões arquiteturais típicas em torno do ERP: DNS, Connection Strings, Proxies

    O Cutover será tanto mais limpo quanto mais claro for o ponto de comutação. Variações comuns:

    • DNS-Alias (p.ex. db-erp.prod): simples, mas TTL (Time To Live) e cache do cliente podem prolongar os tempos de comutação. Para alguns drivers, o cache DNS é surpreendentemente persistente.
    • Virtuelle IP / Load Balancer: a comutação é tecnicamente rápida, mas você precisa de um conceito claro de health checks; caso contrário você roteia para estados instáveis.
    • Connection-String por configuração/Secret: bem controlável se você tiver distribuição central de configuração. Risco: nem todos os componentes aplicam a nova configuração simultaneamente.
    • DB-Proxy: pode ajudar a centralizar a comutação, mas adiciona complexidade e introduz um novo serviço crítico na cadeia.

    Para software empresarial legado, frequentemente um mix é mais realista: serviços centrais comutam via configuração, „componentes antigos“ via DNS. O importante é que você o represente e teste no runbook — inclusive os jobs „esquecidos“ em um App-Server antigo.

    Segurança e conformidade: upgrade como oportunidade, mas não como pretexto para escopo descontrolado

    Upgrades do PostgreSQL são uma boa ocasião para fechar brechas de segurança: métodos de autenticação obsoletos, papéis demasiadamente amplos, permissões de rede pouco claras. Ao mesmo tempo, a segurança não deve se transformar em uma ampliação de escopo descontrolada.

    Abordagem pragmática:

    • Paridade de segurança no Cutover: Green deve ser pelo menos tão seguro quanto Blue, preferencialmente com pequenas melhorias claras (ex.: padrões TLS, SCRAM em vez de MD5, regras HBA mais RESTritivas).
    • Grandes alterações depois: refatoração de funções, segmentação rígida de rede ou rotação abrangente de segredos são valiosas, mas melhor tratadas como um pacote de mudança próprio após a estabilização.

    Avaliar o esforço realisticamente: onde projetos perdem tempo na prática

    Para planejamento e comunicação, uma estrutura honesta de esforço ajuda. Na prática, os maiores consumidores de tempo não são „instalar PostgreSQL“, mas:

    • Inventário de consumidores: encontrar todos os leitores/escritores, esclarecer proprietários, definir o caminho de comutação.
    • Dados de teste e ambiente de teste: dados próximos aos de produção (observando a proteção de dados) e carga realista são essenciais; caso contrário você testa sem reproduzir o problema.
    • Runbooks e aprovações: quem pode fazer o quê na janela de manutenção? Quem decide sobre rollback? Quem comunica? Sem clareza surgem atrasos no momento crítico.
    • Temas de drivers/TLS: pequenas incompatibilidades podem gerar grandes sintomas (desconexões esporádicas, erros de autenticação, timeouts).

    Se você tratar esses pontos desde o início como pacotes de trabalho separados, o „upgrade“ deixa de ser um final de semana nervoso e passa a ser um projeto controlável.

    Conclusão: A atualização do PostgreSQL sem tempo de inatividade é, acima de tudo, um design operacional

    Uma atualização do PostgreSQL sem tempo de inatividade não se obtém por um único truque, mas por uma arquitetura que torna a comutação e a reversão gerenciáveis. Blue/Green cria a separação necessária, a replicação fornece a ponte de dados, e um plano de reversão realista evita que a equipe, em caso de falha, tenha de escolher entre perda de dados e horas de interrupção.

    Se você inventariar de forma clara o panorama de consumidores, construir o Green como um ambiente operacional (monitoramento, Backups, segurança), monitorar a transferência de dados e ensaiar o Cutover como Runbook com critérios de interrupção, o salto de versão torna-se uma mudança controlada — mesmo em bases de dados ERP produtivas com muitas interfaces.

    Se desejar preparar de forma estruturada a atualização do seu banco de dados ERP e considerar conjuntamente arquitetura, interfaces e plano de reversão, fale conosco:

    Para este tema também são importantes Blue/Green Deployment e Cutover-Plan. O artigo contextualiza esses aspectos de forma compreensível e mostra o que importa na prática.

    Discutir projeto ou iniciativa de modernização com Net-Base.

    Próximo passo

    Quando o tema se tornar um projeto real, arquitetura, ambiente existente e operação devem ser considerados em conjunto desde o início.

    Não apenas apoiamos questões pontuais, mas também quando fragmentos de código-fonte, temas legados ou ideias de portais precisam evoluir para um projeto empresarial robusto.

    • Estado atual, estado-alvo e riscos técnicos são avaliados em conjunto.
    • REST, o acesso a dados, os portais e o Rollout não são adiados para fases posteriores.
    • Você identifica cedo qual caminho é viável econômica e operacionalmente.

    Partilhar publicação

    Compartilhar esta publicação diretamente

    LinkedIn, X, XING, Facebook, WhatsApp e E‑Mail estão disponíveis imediatamente. Para o Instagram, preparamos diretamente o link e o texto curto.

    E-mail

    O Instagram abre numa nova aba. O link e o texto curto são copiados previamente para a área de transferência.