<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>HA 集群 on pgcli</title>
    <link>https://pgcli.pages.dev/zh/docs/ha-cluster/</link>
    <description>Recent content in HA 集群 on pgcli</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    
    
    
      <lastBuildDate>Fri, 25 Sep 2026 11:29:56 +0800</lastBuildDate>
    
    
      <atom:link href="https://pgcli.pages.dev/zh/docs/ha-cluster/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Patroni 高可用</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://patroni.readthedocs.io&#34;&gt;Patroni&lt;/a&gt; 是 PostgreSQL 高可用的事实标准：它&#xA;管理每个 postmaster 的生命周期、在成员间流式复制，并在 leader 失联时执行&#xA;&lt;strong&gt;自动故障切换&lt;/strong&gt;。pgcli 将 Patroni 作为独立的模式暴露 —— &lt;code&gt;pg ha&lt;/code&gt; —— 而不是&#xA;把它揉进普通的 &lt;code&gt;pg&lt;/code&gt; 实例管理路径。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni 动态配置</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-dynamic/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-dynamic/</guid>
        <description>&lt;p&gt;这些参数存储在 DCS（etcd）的 &lt;code&gt;/service/&amp;lt;scope&amp;gt;/config&lt;/code&gt; 下，应用于集群的&lt;strong&gt;所有&lt;/strong&gt;成员。使用 &lt;code&gt;pg ha edit-config&lt;/code&gt; 修改：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fd1b15a0-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fd1b15a0-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg ha edit-config app -- -s &lt;span class=&#34;nv&#34;&gt;loop_wait&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg ha edit-config app -- -s &lt;span class=&#34;s1&#34;&gt;&amp;#39;postgresql.parameters.max_connections=200&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg ha edit-config app --show          &lt;span class=&#34;c1&#34;&gt;# 查看当前配置&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;参考：&lt;a href=&#34;https://patroni.readthedocs.io/en/latest/dynamic_configuration.html&#34;&gt;Patroni 官方文档&lt;/a&gt;、&#xA;&lt;a href=&#34;https://pigsty.cc/docs/patroni/config/dynamic/&#34;&gt;Pigsty 动态配置&lt;/a&gt;。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni REST API</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-rest-api/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-rest-api/</guid>
        <description>&lt;p&gt;Patroni 在每个成员上暴露一个 HTTP REST API，提供健康检查端点（供负载均衡器和&#xA;Kubernetes 探针使用）、监控数据（含 Prometheus 指标）以及集群管理操作。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;参考：&lt;a href=&#34;https://patroni.readthedocs.io/en/latest/rest_api.html&#34;&gt;Patroni 官方文档&lt;/a&gt;、&#xA;&lt;a href=&#34;https://pigsty.cc/docs/patroni/rest_api/&#34;&gt;Pigsty REST API&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;查找-rest-api&#34;&gt;查找 REST API&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;每个成员的 REST API 端口由 pgcli 自动分配，存储在 &lt;code&gt;pg.yaml&lt;/code&gt; 的&#xA;&lt;code&gt;addons.patroni.&amp;lt;scope&amp;gt;.members.&amp;lt;name&amp;gt;.restapi_port&lt;/code&gt; 下。端口也写入渲染后的&#xA;&lt;code&gt;patroni.yml&lt;/code&gt; 的 &lt;code&gt;restapi.connect_address&lt;/code&gt;。&lt;/p&gt;</description>
      </item>
    <item>
        <title>HA 集群扩展安装</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-extensions/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-extensions/</guid>
        <description>&lt;p&gt;在 Patroni 管理的 HA 集群中安装 PostgreSQL 扩展，与单节点实例有本质区别。&#xA;本页解释原因，并介绍 &lt;code&gt;pg ha extension&lt;/code&gt; 命令子树。&lt;/p&gt;&#xA;&lt;h2 id=&#34;为什么不能用-pg-extension-install&#34;&gt;为什么不能用 &lt;code&gt;pg extension install&lt;/code&gt;？&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;单节点流程（&lt;code&gt;pg extension install &amp;lt;instance&amp;gt; &amp;lt;ext&amp;gt;&lt;/code&gt;）的工作方式是：&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni 集群备份</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-backup/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-backup/</guid>
        <description>&lt;p&gt;本页给出 &lt;strong&gt;Patroni HA 集群备份的完整操作流程&lt;/strong&gt;：从 &lt;code&gt;pg backup setup&lt;/code&gt; 打通备份&#xA;基础设施，到 &lt;code&gt;pg ha snapshot&lt;/code&gt; 做全量/增量/差异备份，再到一个运行态坑——副本&#xA;&lt;code&gt;Replay LSN&lt;/code&gt; 卡住导致 &lt;code&gt;pg ha status&lt;/code&gt; 显示成员 LSN 不一致时，如何用&#xA;&lt;code&gt;patronictl reinit&lt;/code&gt; 拉回。命令与前置机制的参考细节见&#xA;&lt;a href=&#34;../ha/#%E5%A4%87%E4%BB%BD%E8%B7%A8%E4%B8%BB%E6%9C%BA-leader&#34;&gt;Patroni HA&lt;/a&gt; 与&#xA;&lt;a href=&#34;../../backup/#s3-%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E4%BB%93%E5%BA%93&#34;&gt;备份&lt;/a&gt;；本页把它们串成一条能照着跑完的路径。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni 集群恢复</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-restore/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-restore/</guid>
        <description>&lt;p&gt;本页是 &lt;strong&gt;&lt;a href=&#34;../ha-backup/&#34;&gt;Patroni 集群备份&lt;/a&gt;&lt;/strong&gt; 的恢复侧姊妹页。集群一旦有了带 WAL&#xA;归档的 stanza（&lt;code&gt;pg backup setup&lt;/code&gt; + &lt;code&gt;pg ha snapshot&lt;/code&gt;），&lt;code&gt;pg ha restore&lt;/code&gt; 就能把整个集群&#xA;回到某个时间点——它是单实例 &lt;a href=&#34;../../restore/&#34;&gt;&lt;code&gt;pg restore&lt;/code&gt;&lt;/a&gt; 的 Patroni 集群对应物。本页&#xA;讲清机制（为什么集群 PITR 不是简单跑一次 &lt;code&gt;pgbackrest restore&lt;/code&gt;）、关于 leader 所在主机&#xA;的安全性预检、端到端操作流程，以及恢复之后必须做的重新基线步骤。命令 / flag 细节同时见&#xA;&lt;a href=&#34;../../restore/#patroni-%E9%9B%86%E7%BE%A4&#34;&gt;恢复 → Patroni 集群&lt;/a&gt;；本页把它们串成一条可照着跑的流程。&lt;/p&gt;</description>
      </item>
    <item>
        <title>HA Exec / psql</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-exec/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-exec/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg ha exec&lt;/code&gt; 和 &lt;code&gt;pg ha psql&lt;/code&gt; 是对 Patroni 集群直接跑 SQL 的方式。它们是单实例&#xA;&lt;a href=&#34;../../exec-psql/&#34;&gt;&lt;code&gt;pg exec&lt;/code&gt;&lt;/a&gt; / &lt;a href=&#34;../../exec-psql/&#34;&gt;&lt;code&gt;pg psql&lt;/code&gt;&lt;/a&gt; 的集群对应物：你只给一个&#xA;scope，工具负责解析目标并连上去。不用手拼 &lt;code&gt;--dsn&lt;/code&gt;、不用 &lt;code&gt;podman exec&lt;/code&gt; 钻进成员容器，&#xA;而且因为走的是普通 TCP，&lt;strong&gt;另一台主机&lt;/strong&gt;上的 leader 或副本和本机成员一样可达。&lt;/p&gt;</description>
      </item>
    <item>
        <title>示例：HA 集群 &#43; 自签 CA 的 MinIO</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-example-minio/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-example-minio/</guid>
        <description>&lt;p&gt;这是一页&lt;strong&gt;实操示例&lt;/strong&gt;，每一步都真实跑通并验证过：创建 Patroni HA 集群，架一台&#xA;对外服务&lt;strong&gt;自带域名证书&lt;/strong&gt;的 MinIO 插件（这里用我们自己造的自签 CA——与公共&#xA;CA、企业 CA 证书同一种形态，只是没去买），并把集群的 pgBackRest 备份与 WAL&#xA;归档指向它。下面每条命令都是实跑过的命令；只有主机名、端口、密码和证书材料&#xA;做了泛化处理。&lt;/p&gt;</description>
      </item>
    <item>
        <title>生成证书 —— pg cert</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-cert/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-cert/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg cert&lt;/code&gt; 签发一张&lt;strong&gt;自签证书&lt;/strong&gt;——SubjectAltNames 覆盖你要求的任意域名 / IP&#xA;组合——适用于任何不想走 CA 又需要 TLS 的场合：开发或测试服务器、内部端点、&#xA;客户端归你可控的服务。它写出的就是一张普通的 TLS 服务端叶证书，哪里都能用。&lt;/p&gt;</description>
      </item>
    <item>
        <title>S3 存储高可用方案</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-s3-storage/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-s3-storage/</guid>
        <description>&lt;p&gt;Patroni 集群能扛住一个节点失联；它的 WAL 与备份流向的那个 S3 仓库却必须同&#xA;样扛得住，否则&amp;quot;高可用&amp;quot;在备份这条路上悄无声息地就断了。store 是一个&#xA;&lt;a href=&#34;https://pgcli.pages.dev/zh/docs/addon/minio/&#34;&gt;MinIO&lt;/a&gt; 或 &lt;a href=&#34;https://pgcli.pages.dev/zh/docs/addon/silo/&#34;&gt;silo&lt;/a&gt; 插件（两者可互换——silo 是&#xA;Pigsty 的 MinIO 分支，功能面完全一致）。这里真正要紧的是两个&lt;strong&gt;互相正交&lt;/strong&gt;的&#xA;故障域：&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
