[{"data":1,"prerenderedAt":563},["ShallowReactive",2],{"article-\u002Fblog\u002Fpostgresql-em-alta-disponibilidade-patroni-vs-gerenciados":3,"content-query-g8DAwsqPuD":334},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"author":14,"authorType":15,"authorUrl":16,"cover":17,"readingTime":20,"body":21,"_type":328,"_id":329,"_source":330,"_file":331,"_stem":332,"_extension":333},"\u002Fblog\u002Fpostgresql-em-alta-disponibilidade-patroni-vs-gerenciados","blog",false,"","PostgreSQL: Patroni ou banco gerenciado?","Uma comparação de responsabilidade operacional, recuperação e custo total para escolher uma arquitetura de alta disponibilidade.","2026-10-19",[12,13],"PostgreSQL","SRE","Solluzi","Organization","\u002F#responsavel",{"src":18,"alt":19},"\u002Fimages\u002Fblog\u002Fpostgresql-ha.png","Diagrama de três servidores PostgreSQL conectados, com um nó primário e duas réplicas.",5,{"type":22,"children":23,"toc":320},"root",[24,32,39,59,64,70,75,80,85,125,130,136,141,146,251,257,262,267,273,314],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","Escolher entre PostgreSQL com Patroni e um serviço gerenciado exige mais do que comparar o preço mensal das máquinas. A decisão envolve plantão, testes de recuperação, atualizações e o custo de uma interrupção.",{"type":25,"tag":33,"props":34,"children":36},"h2",{"id":35},"defina-o-que-a-operação-precisa-recuperar",[37],{"type":30,"value":38},"Defina o que a operação precisa recuperar",{"type":25,"tag":26,"props":40,"children":41},{},[42,44,50,52,57],{"type":30,"value":43},"Dois objetivos orientam o desenho: ",{"type":25,"tag":45,"props":46,"children":47},"strong",{},[48],{"type":30,"value":49},"RPO",{"type":30,"value":51},", a perda de dados tolerável, e ",{"type":25,"tag":45,"props":53,"children":54},{},[55],{"type":30,"value":56},"RTO",{"type":30,"value":58},", o tempo aceitável para recuperar o serviço. Eles precisam refletir processos reais do negócio e ser validados em testes.",{"type":25,"tag":26,"props":60,"children":61},{},[62],{"type":30,"value":63},"Uma réplica não substitui backup. Exclusões acidentais e alterações incorretas podem ser replicadas rapidamente. Mantenha cópias independentes e um procedimento testado de recuperação para um ponto no tempo.",{"type":25,"tag":33,"props":65,"children":67},{"id":66},"o-que-o-patroni-assume",[68],{"type":30,"value":69},"O que o Patroni assume",{"type":25,"tag":26,"props":71,"children":72},{},[73],{"type":30,"value":74},"Patroni coordena o papel dos nós PostgreSQL usando um mecanismo de consenso externo. O desenho também precisa considerar a disponibilidade desse mecanismo, o encaminhamento das conexões e a prevenção de duas instâncias primárias concorrentes.",{"type":25,"tag":26,"props":76,"children":77},{},[78],{"type":30,"value":79},"HAProxy pode encaminhar conexões de escrita de acordo com a verificação de papel dos nós. A aplicação precisa tratar reconexões e decidir como repetir transações com segurança.",{"type":25,"tag":26,"props":81,"children":82},{},[83],{"type":30,"value":84},"Este comando é um exemplo de inspeção de um cluster já configurado:",{"type":25,"tag":86,"props":87,"children":91},"pre",{"className":88,"code":89,"language":90,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","patronictl -c \u002Fetc\u002Fpatroni\u002Fpatroni.yml list\n","bash",[92],{"type":25,"tag":93,"props":94,"children":95},"code",{"__ignoreMap":7},[96],{"type":25,"tag":97,"props":98,"children":101},"span",{"class":99,"line":100},"line",1,[102,108,114,120],{"type":25,"tag":97,"props":103,"children":105},{"style":104},"--shiki-default:#B392F0",[106],{"type":30,"value":107},"patronictl",{"type":25,"tag":97,"props":109,"children":111},{"style":110},"--shiki-default:#79B8FF",[112],{"type":30,"value":113}," -c",{"type":25,"tag":97,"props":115,"children":117},{"style":116},"--shiki-default:#9ECBFF",[118],{"type":30,"value":119}," \u002Fetc\u002Fpatroni\u002Fpatroni.yml",{"type":25,"tag":97,"props":121,"children":122},{"style":116},[123],{"type":30,"value":124}," list\n",{"type":25,"tag":26,"props":126,"children":127},{},[128],{"type":30,"value":129},"Ele não instala nem valida o cluster. O resultado deve ser combinado com métricas de replicação, testes da aplicação e verificação dos backups.",{"type":25,"tag":33,"props":131,"children":133},{"id":132},"o-que-um-serviço-gerenciado-assume",[134],{"type":30,"value":135},"O que um serviço gerenciado assume",{"type":25,"tag":26,"props":137,"children":138},{},[139],{"type":30,"value":140},"Um serviço gerenciado pode assumir partes de atualização, backup e failover. O escopo varia por produto e plano. Leia as condições de recuperação, exportação, manutenção e custos de armazenamento e tráfego.",{"type":25,"tag":26,"props":142,"children":143},{},[144],{"type":30,"value":145},"A equipe continua responsável por modelagem, permissões, consultas, conexões e validação da recuperação do negócio.",{"type":25,"tag":147,"props":148,"children":149},"table",{},[150,174],{"type":25,"tag":151,"props":152,"children":153},"thead",{},[154],{"type":25,"tag":155,"props":156,"children":157},"tr",{},[158,164,169],{"type":25,"tag":159,"props":160,"children":161},"th",{},[162],{"type":30,"value":163},"Critério",{"type":25,"tag":159,"props":165,"children":166},{},[167],{"type":30,"value":168},"PostgreSQL com Patroni",{"type":25,"tag":159,"props":170,"children":171},{},[172],{"type":30,"value":173},"Serviço gerenciado",{"type":25,"tag":175,"props":176,"children":177},"tbody",{},[178,197,215,233],{"type":25,"tag":155,"props":179,"children":180},{},[181,187,192],{"type":25,"tag":182,"props":183,"children":184},"td",{},[185],{"type":30,"value":186},"Controle da plataforma",{"type":25,"tag":182,"props":188,"children":189},{},[190],{"type":30,"value":191},"Amplo, com responsabilidade técnica",{"type":25,"tag":182,"props":193,"children":194},{},[195],{"type":30,"value":196},"Limitado às opções do serviço",{"type":25,"tag":155,"props":198,"children":199},{},[200,205,210],{"type":25,"tag":182,"props":201,"children":202},{},[203],{"type":30,"value":204},"Atualizações",{"type":25,"tag":182,"props":206,"children":207},{},[208],{"type":30,"value":209},"Planejadas e executadas pela operação",{"type":25,"tag":182,"props":211,"children":212},{},[213],{"type":30,"value":214},"Conforme as políticas do fornecedor",{"type":25,"tag":155,"props":216,"children":217},{},[218,223,228],{"type":25,"tag":182,"props":219,"children":220},{},[221],{"type":30,"value":222},"Custo total",{"type":25,"tag":182,"props":224,"children":225},{},[226],{"type":30,"value":227},"Infraestrutura, equipe e suporte",{"type":25,"tag":182,"props":229,"children":230},{},[231],{"type":30,"value":232},"Serviço, consumo e operação residual",{"type":25,"tag":155,"props":234,"children":235},{},[236,241,246],{"type":25,"tag":182,"props":237,"children":238},{},[239],{"type":30,"value":240},"Recuperação",{"type":25,"tag":182,"props":242,"children":243},{},[244],{"type":30,"value":245},"Precisa de projeto e ensaios",{"type":25,"tag":182,"props":247,"children":248},{},[249],{"type":30,"value":250},"Precisa de validação do plano contratado",{"type":25,"tag":33,"props":252,"children":254},{"id":253},"escolha-pelo-custo-de-operar",[255],{"type":30,"value":256},"Escolha pelo custo de operar",{"type":25,"tag":26,"props":258,"children":259},{},[260],{"type":30,"value":261},"Um ambiente próprio pode fazer sentido quando existe capacidade operacional, necessidade de controle ou restrições de dados. Um serviço gerenciado pode reduzir o trabalho de plataforma quando suas limitações são aceitáveis.",{"type":25,"tag":26,"props":263,"children":264},{},[265],{"type":30,"value":266},"Antes de decidir, simule a perda de um nó, a falha de rede e uma restauração completa. A arquitetura só entrega continuidade quando a aplicação e a equipe sabem responder à falha.",{"type":25,"tag":33,"props":268,"children":270},{"id":269},"referências",[271],{"type":30,"value":272},"Referências",{"type":25,"tag":274,"props":275,"children":276},"ul",{},[277,292,303],{"type":25,"tag":278,"props":279,"children":280},"li",{},[281,290],{"type":25,"tag":282,"props":283,"children":287},"a",{"href":284,"rel":285},"https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002F17\u002Fwarm-standby.html",[286],"nofollow",[288],{"type":30,"value":289},"PostgreSQL: replicação e servidores standby",{"type":30,"value":291},".",{"type":25,"tag":278,"props":293,"children":294},{},[295,302],{"type":25,"tag":282,"props":296,"children":299},{"href":297,"rel":298},"https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002F17\u002Fcontinuous-archiving.html",[286],[300],{"type":30,"value":301},"PostgreSQL: arquivamento contínuo e recuperação para um ponto no tempo",{"type":30,"value":291},{"type":25,"tag":278,"props":304,"children":305},{},[306,313],{"type":25,"tag":282,"props":307,"children":310},{"href":308,"rel":309},"https:\u002F\u002Fgithub.com\u002Fpatroni\u002Fpatroni",[286],[311],{"type":30,"value":312},"Patroni: projeto e documentação oficial",{"type":30,"value":291},{"type":25,"tag":315,"props":316,"children":317},"style",{},[318],{"type":30,"value":319},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":321,"depth":321,"links":322},2,[323,324,325,326,327],{"id":35,"depth":321,"text":38},{"id":66,"depth":321,"text":69},{"id":132,"depth":321,"text":135},{"id":253,"depth":321,"text":256},{"id":269,"depth":321,"text":272},"markdown","content:blog:postgresql-em-alta-disponibilidade-patroni-vs-gerenciados.md","content","blog\u002Fpostgresql-em-alta-disponibilidade-patroni-vs-gerenciados.md","blog\u002Fpostgresql-em-alta-disponibilidade-patroni-vs-gerenciados","md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":335,"author":14,"authorType":15,"authorUrl":16,"cover":336,"readingTime":20,"body":337,"_type":328,"_id":329,"_source":330,"_file":331,"_stem":332,"_extension":333},[12,13],{"src":18,"alt":19},{"type":22,"children":338,"toc":556},[339,343,347,361,365,369,373,377,381,406,410,414,418,422,506,510,514,518,522,552],{"type":25,"tag":26,"props":340,"children":341},{},[342],{"type":30,"value":31},{"type":25,"tag":33,"props":344,"children":345},{"id":35},[346],{"type":30,"value":38},{"type":25,"tag":26,"props":348,"children":349},{},[350,351,355,356,360],{"type":30,"value":43},{"type":25,"tag":45,"props":352,"children":353},{},[354],{"type":30,"value":49},{"type":30,"value":51},{"type":25,"tag":45,"props":357,"children":358},{},[359],{"type":30,"value":56},{"type":30,"value":58},{"type":25,"tag":26,"props":362,"children":363},{},[364],{"type":30,"value":63},{"type":25,"tag":33,"props":366,"children":367},{"id":66},[368],{"type":30,"value":69},{"type":25,"tag":26,"props":370,"children":371},{},[372],{"type":30,"value":74},{"type":25,"tag":26,"props":374,"children":375},{},[376],{"type":30,"value":79},{"type":25,"tag":26,"props":378,"children":379},{},[380],{"type":30,"value":84},{"type":25,"tag":86,"props":382,"children":383},{"className":88,"code":89,"language":90,"meta":7,"style":7},[384],{"type":25,"tag":93,"props":385,"children":386},{"__ignoreMap":7},[387],{"type":25,"tag":97,"props":388,"children":389},{"class":99,"line":100},[390,394,398,402],{"type":25,"tag":97,"props":391,"children":392},{"style":104},[393],{"type":30,"value":107},{"type":25,"tag":97,"props":395,"children":396},{"style":110},[397],{"type":30,"value":113},{"type":25,"tag":97,"props":399,"children":400},{"style":116},[401],{"type":30,"value":119},{"type":25,"tag":97,"props":403,"children":404},{"style":116},[405],{"type":30,"value":124},{"type":25,"tag":26,"props":407,"children":408},{},[409],{"type":30,"value":129},{"type":25,"tag":33,"props":411,"children":412},{"id":132},[413],{"type":30,"value":135},{"type":25,"tag":26,"props":415,"children":416},{},[417],{"type":30,"value":140},{"type":25,"tag":26,"props":419,"children":420},{},[421],{"type":30,"value":145},{"type":25,"tag":147,"props":423,"children":424},{},[425,443],{"type":25,"tag":151,"props":426,"children":427},{},[428],{"type":25,"tag":155,"props":429,"children":430},{},[431,435,439],{"type":25,"tag":159,"props":432,"children":433},{},[434],{"type":30,"value":163},{"type":25,"tag":159,"props":436,"children":437},{},[438],{"type":30,"value":168},{"type":25,"tag":159,"props":440,"children":441},{},[442],{"type":30,"value":173},{"type":25,"tag":175,"props":444,"children":445},{},[446,461,476,491],{"type":25,"tag":155,"props":447,"children":448},{},[449,453,457],{"type":25,"tag":182,"props":450,"children":451},{},[452],{"type":30,"value":186},{"type":25,"tag":182,"props":454,"children":455},{},[456],{"type":30,"value":191},{"type":25,"tag":182,"props":458,"children":459},{},[460],{"type":30,"value":196},{"type":25,"tag":155,"props":462,"children":463},{},[464,468,472],{"type":25,"tag":182,"props":465,"children":466},{},[467],{"type":30,"value":204},{"type":25,"tag":182,"props":469,"children":470},{},[471],{"type":30,"value":209},{"type":25,"tag":182,"props":473,"children":474},{},[475],{"type":30,"value":214},{"type":25,"tag":155,"props":477,"children":478},{},[479,483,487],{"type":25,"tag":182,"props":480,"children":481},{},[482],{"type":30,"value":222},{"type":25,"tag":182,"props":484,"children":485},{},[486],{"type":30,"value":227},{"type":25,"tag":182,"props":488,"children":489},{},[490],{"type":30,"value":232},{"type":25,"tag":155,"props":492,"children":493},{},[494,498,502],{"type":25,"tag":182,"props":495,"children":496},{},[497],{"type":30,"value":240},{"type":25,"tag":182,"props":499,"children":500},{},[501],{"type":30,"value":245},{"type":25,"tag":182,"props":503,"children":504},{},[505],{"type":30,"value":250},{"type":25,"tag":33,"props":507,"children":508},{"id":253},[509],{"type":30,"value":256},{"type":25,"tag":26,"props":511,"children":512},{},[513],{"type":30,"value":261},{"type":25,"tag":26,"props":515,"children":516},{},[517],{"type":30,"value":266},{"type":25,"tag":33,"props":519,"children":520},{"id":269},[521],{"type":30,"value":272},{"type":25,"tag":274,"props":523,"children":524},{},[525,534,543],{"type":25,"tag":278,"props":526,"children":527},{},[528,533],{"type":25,"tag":282,"props":529,"children":531},{"href":284,"rel":530},[286],[532],{"type":30,"value":289},{"type":30,"value":291},{"type":25,"tag":278,"props":535,"children":536},{},[537,542],{"type":25,"tag":282,"props":538,"children":540},{"href":297,"rel":539},[286],[541],{"type":30,"value":301},{"type":30,"value":291},{"type":25,"tag":278,"props":544,"children":545},{},[546,551],{"type":25,"tag":282,"props":547,"children":549},{"href":308,"rel":548},[286],[550],{"type":30,"value":312},{"type":30,"value":291},{"type":25,"tag":315,"props":553,"children":554},{},[555],{"type":30,"value":319},{"title":7,"searchDepth":321,"depth":321,"links":557},[558,559,560,561,562],{"id":35,"depth":321,"text":38},{"id":66,"depth":321,"text":69},{"id":132,"depth":321,"text":135},{"id":253,"depth":321,"text":256},{"id":269,"depth":321,"text":272},1793741324547]