<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PGEXT.CLOUD – 命令参考</title>
    <link>https://ext.pgsty.com/zh/pig/cmd/</link>
    <description>Recent content in 命令参考 on PGEXT.CLOUD</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    
	  <atom:link href="https://ext.pgsty.com/zh/pig/cmd/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>命令：repo</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/repo/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/repo/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;pig repo&lt;/code&gt; 命令是一个综合性的软件包仓库管理工具。它提供了添加、移除、创建和管理软件仓库的功能，支持 RPM 系统（RHEL/CentOS/Rocky/Alma）和 Debian 系统（Debian/Ubuntu）。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;22&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-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;pig repo - Manage Linux APT/YUM Repo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo list                    &lt;span class=&#34;c1&#34;&gt;# available repo list             (info)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo info   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;repo&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;module...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# show repo info                  (info)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo status                  &lt;span class=&#34;c1&#34;&gt;# show current repo status        (info)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo add    &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;repo&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;module...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# add repo and modules            (root)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo rm     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;repo&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;module...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# remove repo &amp;amp; modules           (root)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo update                  &lt;span class=&#34;c1&#34;&gt;# update repo pkg cache           (root)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo create                  &lt;span class=&#34;c1&#34;&gt;# create repo on current system   (root)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo boot                    &lt;span class=&#34;c1&#34;&gt;# boot repo from offline package  (root)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo cache                   &lt;span class=&#34;c1&#34;&gt;# cache repo as offline package   (root)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Examples:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo add -ru                 &lt;span class=&#34;c1&#34;&gt;# add all repo and update cache (brute but effective)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo add pigsty -u           &lt;span class=&#34;c1&#34;&gt;# gentle version, only add pigsty repo and update cache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo add node pgdg pigsty    &lt;span class=&#34;c1&#34;&gt;# essential repo to install postgres packages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo add all                 &lt;span class=&#34;c1&#34;&gt;# all = node + pgdg + pigsty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo add all extra           &lt;span class=&#34;c1&#34;&gt;# extra module has non-free and some 3rd repo for certain extensions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo update                  &lt;span class=&#34;c1&#34;&gt;# update repo cache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo create                  &lt;span class=&#34;c1&#34;&gt;# update local repo /www/pigsty meta&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo boot                    &lt;span class=&#34;c1&#34;&gt;# extract /tmp/pkg.tgz to /www/pigsty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo cache                   &lt;span class=&#34;c1&#34;&gt;# cache /www/pigsty into /tmp/pkg.tgz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo list&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;打印可用仓库与模块列表&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo info&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;获取仓库详细信息&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo status&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示当前仓库状态&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo add&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;添加新仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo set&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;清空、覆盖并更新仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo rm&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;移除仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo update&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;更新仓库缓存&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo create&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;创建本地 YUM/APT 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo cache&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;从本地仓库创建离线包&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo boot&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;从离线包引导仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;repo reload&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;刷新仓库目录&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;15&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-1-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;&lt;span class=&#34;c1&#34;&gt;# 方法 1：清理干净现有仓库，添加所有必要仓库并更新缓存（推荐）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add all --remove --update    &lt;span class=&#34;c1&#34;&gt;# 移除旧仓库，添加所有必要仓库，更新缓存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 方法 1 变体：一步到位&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;                          &lt;span class=&#34;c1&#34;&gt;# = pig repo add all --remove --update&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 方法 2：温和方式 - 仅添加所需仓库，保留你目前的仓库配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add pgsql                    &lt;span class=&#34;c1&#34;&gt;# 添加 PGDG 和 Pigsty PGSQL 仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add pigsty --region&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;china    &lt;span class=&#34;c1&#34;&gt;# 添加 Pigsty 仓库，指定使用中国区域&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add pgdg   --region&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;europe   &lt;span class=&#34;c1&#34;&gt;# 添加 PGDG 仓库，指定使用欧洲区域&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add pgdg   --mirror          &lt;span class=&#34;c1&#34;&gt;# PGDG 优先使用腾讯云镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add infra  --region&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;default  &lt;span class=&#34;c1&#34;&gt;# 添加 INFRA 仓库 ，指定使用默认区域&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 如果上面没有-u|--update 选项一步到位，请额外执行此命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo update                       &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;模块&#34;&gt;模块&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%a8%a1%e5%9d%97&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;在 pig 中，APT/YUM 仓库被组织为 &lt;strong&gt;模块&lt;/strong&gt; —— 服务于特定目的的一组仓库。&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;模块&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;仓库列表&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;all&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;安装 PG 所需的全部核心模块&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;node&lt;/code&gt; + &lt;code&gt;infra&lt;/code&gt; + &lt;code&gt;pgsql&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;pgsql&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PGDG + Pigsty PG 扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pigsty-pgsql&lt;/code&gt; + &lt;code&gt;pgdg&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;pigsty&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Pigsty Infra + PGSQL 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pigsty-infra, pigsty-pgsql&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;pgdg&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PGDG 官方仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgdg-common, pgdg14-18&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;node&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Linux 系统仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;base, updates, extras, epel, baseos, appstream&amp;hellip;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;infra&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;基础设施组件仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pigsty-infra, nginx, docker-ce&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;docker&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Docker 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;docker-ce&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;beta&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL 19 Beta 版本&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgdg19-beta, pgdg-beta&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;extra&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PGDG Non-Free 与三方扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgdg-extras, timescaledb, citus&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;groonga&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PGroonga 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;groonga&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;mssql&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Wiltondb 仓库（已弃用）&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;babelfish&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;percona&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Percona PG + PG_TDE&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;percona&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;llvm&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;LLVM 工具链仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;llvm&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;kube&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Kubernetes 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;kubernetes&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;grafana&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Grafana 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;grafana&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;haproxy&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;HAProxy 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;haproxyd, haproxyu&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;redis&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Redis 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;redis&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;mongo&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;MongoDB 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;mongo&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;mysql&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;MySQL 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;mysql&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;click&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;ClickHouse 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;clickhouse&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;gitlab&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;GitLab 仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;gitlab-ce, gitlab-ee&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;除此之外，pig 还自带了一些其他数据库的 APT/DNF 仓库：&lt;code&gt;redis&lt;/code&gt;, &lt;code&gt;kubernetes&lt;/code&gt;, &lt;code&gt;grafana&lt;/code&gt;, &lt;code&gt;clickhouse&lt;/code&gt;, &lt;code&gt;gitlab&lt;/code&gt;, &lt;code&gt;haproxy&lt;/code&gt;, &lt;code&gt;mongodb&lt;/code&gt;, &lt;code&gt;mysql&lt;/code&gt;，在此不再展开。&lt;/p&gt;
&lt;p&gt;通常来说，为了安装 PostgreSQL &lt;code&gt;node&lt;/code&gt; （Linux 系统仓库） 和 &lt;code&gt;pgsql&lt;/code&gt;（PGDG + Pigsty）是必选项，&lt;code&gt;infra&lt;/code&gt; 仓库是可选项（包含了一些工具，IvorySQL Kernel 等）。您可以使用特殊的 &lt;code&gt;all&lt;/code&gt; 模块，一次性添加所有需要的仓库到系统中，对绝大多数用户来说，这是合适的起点。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-2-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;pig repo add all      &lt;span class=&#34;c1&#34;&gt;# 添加 node,pgsql,infra 三个仓库到系统中&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add          &lt;span class=&#34;c1&#34;&gt;# 不添加任何参数时，默认使用 all 模块&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;# 使用 set 替代 add 时，将清理备份现有仓库定义并覆盖式更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;仓库定义&#34;&gt;仓库定义&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%bb%93%e5%ba%93%e5%ae%9a%e4%b9%89&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Pigsty 中可用仓库的完整定义位于 &lt;a href=&#34;https://github.com/pgsty/pig/blob/main/cli/repo/assets/repo.yml&#34;&gt;&lt;code&gt;cli/repo/assets/repo.yml&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;您可以创建 &lt;code&gt;~/.pig/repo.yml&lt;/code&gt; 文件，显式修改并覆盖 pig 的仓库定义。在编辑仓库定义文件时，您可以在 &lt;code&gt;baseurl&lt;/code&gt; 处添加额外的区域镜像，例如指定中国，欧洲地区的镜像仓库 URL。当 pig 使用 &lt;code&gt;--region&lt;/code&gt; 参数指定特定的区域时，pig 会优先查找对应区域的仓库 URL，如果不存在，则会 Fallback 到 &lt;code&gt;default&lt;/code&gt; 的仓库 URL。&lt;/p&gt;
&lt;p&gt;从 v1.7.0 起，&lt;code&gt;repo add&lt;/code&gt; 或 &lt;code&gt;repo set&lt;/code&gt; 指定 &lt;code&gt;--mirror&lt;/code&gt; 时会明确选择内置的&lt;code&gt;china&lt;/code&gt; 定义。PGDG 优先使用腾讯云，并保留定义中声明的 Pigsty 回退；其他模块使用各自维护中的中国区域 URL。pig 不再通过单独的运行时代理路由改写 PGDG URL。&lt;/p&gt;
&lt;p&gt;普通 EL 仓库保留 DNF 原生模块过滤。只有显式声明 &lt;code&gt;module_hotfixes=1&lt;/code&gt; 的定义
（主要是 Pigsty 与 PGDG 仓库）会覆盖模块流；渲染 EL7 YUM 配置时会移除该键。&lt;/p&gt;
&lt;h2 id=&#34;repo-list&#34;&gt;repo list&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-list&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pig repo list&lt;/code&gt; 将列出当前系统可用的所有仓库模块。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-3-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;pig repo list                &lt;span class=&#34;c1&#34;&gt;# 列出当前系统可用仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo list all            &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;repo-info&#34;&gt;repo info&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-info&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;显示特定仓库或模块的详细信息，包括 URL、元数据和区域镜像，以及 &lt;code&gt;.repo&lt;/code&gt; / &lt;code&gt;.list&lt;/code&gt; 仓库文件内容。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-4-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;pig repo info pgdg               &lt;span class=&#34;c1&#34;&gt;# 显示 pgdg 模块的信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo info pigsty pgdg        &lt;span class=&#34;c1&#34;&gt;# 显示多个模块的信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo info all                &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;repo-status&#34;&gt;repo status&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-status&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;显示系统上的当前仓库配置。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-5-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;pig repo status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;repo-add&#34;&gt;repo add&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-add&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;添加仓库配置文件到系统。需要 root/sudo 权限。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;8&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-6-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;pig repo add pgdg                &lt;span class=&#34;c1&#34;&gt;# 添加 PGDG 仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add pgdg pigsty         &lt;span class=&#34;c1&#34;&gt;# 添加多个仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add all                 &lt;span class=&#34;c1&#34;&gt;# 添加所有必要仓库 (pgdg + pigsty + node)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add pigsty -u           &lt;span class=&#34;c1&#34;&gt;# 添加并更新缓存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add all -r              &lt;span class=&#34;c1&#34;&gt;# 添加前移除现有仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add all -ru             &lt;span class=&#34;c1&#34;&gt;# 移除、添加并更新（完全重置）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add pgdg --region&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;china &lt;span class=&#34;c1&#34;&gt;# 使用中国镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo add pgdg -m             &lt;span class=&#34;c1&#34;&gt;# 选择中国定义；PGDG 优先使用腾讯云&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-r|--remove&lt;/code&gt;：添加新仓库前移除现有仓库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-u|--update&lt;/code&gt;：添加仓库后运行包缓存更新&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--region &amp;lt;region&amp;gt;&lt;/code&gt;：使用区域镜像仓库（&lt;code&gt;default&lt;/code&gt; / &lt;code&gt;china&lt;/code&gt; / &lt;code&gt;europe&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-m|--mirror&lt;/code&gt;：明确选择内置的 &lt;code&gt;china&lt;/code&gt; 仓库定义&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;平台&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;模块位置&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;EL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/etc/yum.repos.d/&amp;lt;module&amp;gt;.repo&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;Debian&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/etc/apt/sources.list.d/&amp;lt;module&amp;gt;.list&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;repo-set&#34;&gt;repo set&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-set&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;等同于 &lt;code&gt;repo add --remove --update&lt;/code&gt;。清空现有仓库并设置新仓库，然后更新缓存。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-7&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-7&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-7-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;pig repo &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;                     &lt;span class=&#34;c1&#34;&gt;# 替换为默认仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; pgdg pigsty         &lt;span class=&#34;c1&#34;&gt;# 替换为特定仓库并更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; all --region&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;china  &lt;span class=&#34;c1&#34;&gt;# 使用中国镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -m                  &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;repo-rm&#34;&gt;repo rm&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-rm&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;移除仓库配置文件并备份它们。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-8&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-8&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-8-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;pig repo rm                      &lt;span class=&#34;c1&#34;&gt;# 移除所有仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo rm pgdg                 &lt;span class=&#34;c1&#34;&gt;# 移除特定仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo rm pgdg pigsty -u       &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;平台&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备份位置&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;EL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/etc/yum.repos.d/backup/&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;Debian&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/etc/apt/sources.list.d/backup/&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;repo-update&#34;&gt;repo update&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-update&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;更新包管理器缓存以反映仓库更改。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-9&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-9&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-9-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;pig repo update                  &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;平台&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;等效命令&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;EL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;dnf makecache&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;Debian&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;apt update&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;repo-create&#34;&gt;repo create&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-create&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;为离线安装创建本地包仓库。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-10&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-10&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-10-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;pig repo create                  &lt;span class=&#34;c1&#34;&gt;# Linux：/www/pigsty；macOS：当前目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo create /srv/repo        &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;当前实现会优先使用 &lt;code&gt;PATH&lt;/code&gt; 中的 &lt;a href=&#34;https://sow.pgsty.com/zh/docs/reference/cli/create/&#34;&gt;&lt;code&gt;sow&lt;/code&gt;&lt;/a&gt;。在 Linux 上选择 SOW 后，会对每个目标目录以 &lt;code&gt;sudo&lt;/code&gt; 执行等价命令：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-11&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-11&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-11-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;sow create --pigsty --timeout 10m -- /absolute/repository/path&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;在 macOS 上必须安装 SOW，执行时不使用 &lt;code&gt;sudo&lt;/code&gt;，默认目标为当前目录。Linux 上如果没有安装 &lt;code&gt;sow&lt;/code&gt;，EL 会回退到 &lt;code&gt;createrepo_c&lt;/code&gt;，Debian/Ubuntu 会回退到 &lt;code&gt;dpkg-dev&lt;/code&gt; 提供的 &lt;code&gt;dpkg-scanpackages&lt;/code&gt;；首选后端与平台回退均不可用时，&lt;code&gt;pig repo create&lt;/code&gt; 才会失败。SOW 一旦被选中，其执行错误会直接返回，不会再用旧后端重试。&lt;code&gt;10m&lt;/code&gt; 只限制等待 SOW 目录锁的时间，并不限制仓库索引本身的执行时间。&lt;/p&gt;
&lt;p&gt;SOW 的 &lt;code&gt;--pigsty&lt;/code&gt; 事务会：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;只扫描顶层普通 &lt;code&gt;.rpm&lt;/code&gt; 与 &lt;code&gt;.deb&lt;/code&gt; 文件，不递归，也不跟随符号链接。&lt;/li&gt;
&lt;li&gt;按解析后的软件包事实，删除 32 位 x86 包（RPM 的 &lt;code&gt;i386/i486/i586/i686&lt;/code&gt;、DEB 的 &lt;code&gt;i386&lt;/code&gt;），以及二进制包名恰为 &lt;code&gt;patroni&lt;/code&gt;、上游版本恰为 &lt;code&gt;3.0.4&lt;/code&gt; 的包。&lt;/li&gt;
&lt;li&gt;以原子方式生成对应的 RPM/DEB 元数据，最后写入 &lt;code&gt;repo_complete&lt;/code&gt;；marker 按 basename 排序，记录剩余顶层软件包的 SHA-256。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;非软件包文件与目录不会被改动；候选软件包无法解析或逻辑坐标冲突时，SOW 事务会失败关闭。旧版回退脚本的清理与元数据语义不同，并在 &lt;code&gt;repo_complete&lt;/code&gt; 中写入软件包的 MD5 列表。任一后端退出后，PIG 都会要求 &lt;code&gt;repo_complete&lt;/code&gt; 存在且为普通文件，但不会校验 marker 内容或其中哈希。若交付流程把 marker 当作放行条件，调用方应自行完成这些验证。&lt;/p&gt;
&lt;h2 id=&#34;repo-cache&#34;&gt;repo cache&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-cache&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;创建仓库内容的压缩 tarball 用于离线分发。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-12&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-12&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-12-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;pig repo cache                   &lt;span class=&#34;c1&#34;&gt;# 默认：/www 到 /tmp/pkg.tgz&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo cache -d /srv           &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-d, --dir&lt;/code&gt;：源目录（默认：&lt;code&gt;/www/&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p, --path&lt;/code&gt;：输出路径（默认：&lt;code&gt;/tmp/pkg.tgz&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;repo-boot&#34;&gt;repo boot&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-boot&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;从离线包解压并设置本地仓库。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-13&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-13&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-13-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;pig repo boot                    &lt;span class=&#34;c1&#34;&gt;# 默认：/tmp/pkg.tgz 到 /www&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo boot -p /mnt/pkg.tgz   &lt;span class=&#34;c1&#34;&gt;# 自定义包路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo boot -d /srv           &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-p, --path&lt;/code&gt;：包路径（默认：&lt;code&gt;/tmp/pkg.tgz&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d, --dir&lt;/code&gt;：目标目录（默认：&lt;code&gt;/www/&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;repo-reload&#34;&gt;repo reload&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repo-reload&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;从 GitHub 刷新仓库元数据到最新版本。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d574e321-fence-14&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d574e321-fence-14&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d574e321-fence-14-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;pig repo reload                  &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;更新后的文件会放置于 &lt;code&gt;~/.pig/repo.yml&lt;/code&gt; 中。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>CMD: ext</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/ext/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/ext/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;pig ext&lt;/code&gt; 命令是一个用于管理 PostgreSQL 扩展的全能工具。它允许用户搜索、安装、移除、更新和管理 PostgreSQL 扩展，甚至支持内核包的管理。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;18&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-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;pig ext - Manage PostgreSQL Extensions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig repo add -ru             &lt;span class=&#34;c1&#34;&gt;# add all repo and update cache (brute but effective)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext add pg18             &lt;span class=&#34;c1&#34;&gt;# install optional postgresql 18 package&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext list duck            &lt;span class=&#34;c1&#34;&gt;# search extension in catalog&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext scan -v &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;           &lt;span class=&#34;c1&#34;&gt;# scan installed extension for pg 18&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext add pg_duckdb        &lt;span class=&#34;c1&#34;&gt;# install certain postgresql extension&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Examples:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext list    &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;query&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;# list &amp;amp; search extension&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext info    &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# get information of a specific extension&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext status  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-v&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# show installed extension and pg status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext add     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# install extension for current pg version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext rm      &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# remove extension for current pg version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext update  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# update extension to the latest version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext import  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# download extension to local repo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext link    &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# link postgres installation to path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig ext reload               &lt;span class=&#34;c1&#34;&gt;# reload the latest extension catalog data&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext list&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;搜索扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext info&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示扩展详细信息&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext avail&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示扩展可用性矩阵&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext status&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示已安装的扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext scan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;扫描已安装的扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext add&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;安装扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext rm&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;移除扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext update&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;更新扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext import&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;下载扩展以供离线使用&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext link&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;链接 PG 版本到 PATH&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ext reload&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;刷新扩展目录&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;在安装 PostgreSQL 扩展前，你需要先添加 &lt;a href=&#34;https://pig.pgsty.com/zh/repo/&#34;&gt;&lt;code&gt;pig repo add&lt;/code&gt;&lt;/a&gt;：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-1-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;pig repo add pgdg pigsty -u    &lt;span class=&#34;c1&#34;&gt;# 温和方式添加 pgdg 和 pigsty 仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig repo &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;                   &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;然后你可以搜索并安装 PostgreSQL 扩展：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-2-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;pig ext install pg_duckdb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pg_partman
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pg_cron
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pg_repack
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pg_stat_statements
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pg_stat_kcache&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;可用扩展及其名称请查阅 &lt;a href=&#34;https://ext.pgsty.com/zh/list/&#34;&gt;&lt;strong&gt;扩展列表&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;未指定 PostgreSQL 版本时，工具会尝试从 &lt;code&gt;PATH&lt;/code&gt; 中的 &lt;code&gt;pg_config&lt;/code&gt; 自动检测当前活动的 PostgreSQL 安装。&lt;/li&gt;
&lt;li&gt;PostgreSQL 可通过主版本号（&lt;code&gt;-v&lt;/code&gt;）或 pg_config 路径（&lt;code&gt;-p&lt;/code&gt;）指定。
&lt;ul&gt;
&lt;li&gt;若指定 &lt;code&gt;-v&lt;/code&gt;，pig 会使用该版本 PGDG 内核包的默认路径。
&lt;ul&gt;
&lt;li&gt;EL 发行版为 &lt;code&gt;/usr/pgsql-$v/bin/pg_config&lt;/code&gt;，&lt;/li&gt;
&lt;li&gt;DEB 发行版为 &lt;code&gt;/usr/lib/postgresql/$v/bin/pg_config&lt;/code&gt; 等。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;若指定 &lt;code&gt;-p&lt;/code&gt;，则直接用该路径定位 PostgreSQL。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;扩展管理器会根据操作系统自动适配不同的包格式：
&lt;ul&gt;
&lt;li&gt;RHEL/CentOS/Rocky Linux/AlmaLinux 使用 RPM 包&lt;/li&gt;
&lt;li&gt;Debian/Ubuntu 使用 DEB 包&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;某些扩展可能有依赖项，安装时会自动解决。&lt;/li&gt;
&lt;li&gt;谨慎使用 &lt;code&gt;-y&lt;/code&gt; 参数，它会自动确认所有提示。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pigsty 假定你已安装官方 PGDG 内核包，如未安装，可用如下命令：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-3-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;pig ext install pg18          &lt;span class=&#34;c1&#34;&gt;# 安装 PostgreSQL 18 内核（除 devel 包）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;ext-list&#34;&gt;ext list&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-list&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;列出（或搜索）扩展目录中的可用扩展。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-4-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;pig ext list                     &lt;span class=&#34;c1&#34;&gt;# 列出所有扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext list duck                &lt;span class=&#34;c1&#34;&gt;# 搜索包含 &amp;#34;duck&amp;#34; 的扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext list -v &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;               &lt;span class=&#34;c1&#34;&gt;# 按 PG 版本筛选&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext ls olap                  &lt;span class=&#34;c1&#34;&gt;# 列出 olap 类别扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext ls gis -v &lt;span class=&#34;m&#34;&gt;16&lt;/span&gt;             &lt;span class=&#34;c1&#34;&gt;# 列出 PG 16 的 GIS 类扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext ls rag                   &lt;span class=&#34;c1&#34;&gt;# 列出 RAG 类别扩展&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;分类筛选通过查询参数直接指定分类名实现，支持的分类包括：&lt;code&gt;time&lt;/code&gt;, &lt;code&gt;gis&lt;/code&gt;, &lt;code&gt;rag&lt;/code&gt;, &lt;code&gt;fts&lt;/code&gt;, &lt;code&gt;olap&lt;/code&gt;, &lt;code&gt;feat&lt;/code&gt;, &lt;code&gt;lang&lt;/code&gt;, &lt;code&gt;type&lt;/code&gt;, &lt;code&gt;func&lt;/code&gt;, &lt;code&gt;util&lt;/code&gt;, &lt;code&gt;admin&lt;/code&gt;, &lt;code&gt;stat&lt;/code&gt;, &lt;code&gt;sec&lt;/code&gt;, &lt;code&gt;fdw&lt;/code&gt;, &lt;code&gt;sim&lt;/code&gt;, &lt;code&gt;etl&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-v|--version&lt;/code&gt;：按 PG 版本筛选&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--pkg&lt;/code&gt;：显示包名而非扩展名，仅列出主导扩展&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Status 列说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;installed&lt;/code&gt;：扩展已安装（绿色）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;available&lt;/code&gt;：扩展可用但未安装（黄色）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;not avail&lt;/code&gt;：扩展在当前系统不可用（红色）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;默认扩展目录定义在 &lt;a href=&#34;https://github.com/pgsty/pig/blob/main/cli/ext/assets/extension.csv&#34;&gt;&lt;strong&gt;&lt;code&gt;cli/ext/assets/extension.csv&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;可用 &lt;code&gt;pig ext reload&lt;/code&gt; 命令更新到最新扩展目录，数据将下载到 &lt;code&gt;~/.pig/extension.csv&lt;/code&gt;；在线最新版目录同步发布于 &lt;a href=&#34;https://pigsty.io/ext/data/extension.csv&#34;&gt;&lt;strong&gt;pigsty.io/ext/data/extension.csv&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;ext-info&#34;&gt;ext info&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-info&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;显示指定扩展的详细信息。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-5-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;pig ext info postgis        &lt;span class=&#34;c1&#34;&gt;# 显示 PostGIS 详细信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext info timescaledb    &lt;span class=&#34;c1&#34;&gt;# 显示 TimescaleDB 信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext info vector postgis &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;ext-avail&#34;&gt;ext avail&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-avail&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;显示扩展的可用性矩阵，展示扩展在不同操作系统、架构和 PostgreSQL 版本上的可用情况。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-6-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;pig ext avail                     &lt;span class=&#34;c1&#34;&gt;# 显示当前系统上所有包的可用性&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext avail timescaledb         &lt;span class=&#34;c1&#34;&gt;# 显示 timescaledb 的可用性矩阵&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext avail postgis pg_duckdb   &lt;span class=&#34;c1&#34;&gt;# 显示多个扩展的可用性&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext av pgvector               &lt;span class=&#34;c1&#34;&gt;# 显示 pgvector 的可用性&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext matrix citus              &lt;span class=&#34;c1&#34;&gt;# avail 命令的别名&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;可用性矩阵会显示扩展在各个操作系统（EL8/9/10, Debian 12/13, Ubuntu 22/24/26）、架构（x86_64/aarch64）和 PostgreSQL 版本（14-18）上的可用情况。&lt;/p&gt;
&lt;h2 id=&#34;ext-status&#34;&gt;ext status&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-status&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;显示当前 PostgreSQL 实例已安装扩展的状态。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-7&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-7&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-7-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;pig ext status              &lt;span class=&#34;c1&#34;&gt;# 显示已安装扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext status -c           &lt;span class=&#34;c1&#34;&gt;# 包含 contrib 扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext status -v &lt;span class=&#34;m&#34;&gt;16&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# 显示 PG 16 已安装扩展&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-c|--contrib&lt;/code&gt;：结果中包含 contrib 扩展&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ext-scan&#34;&gt;ext scan&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-scan&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;扫描当前 PostgreSQL 实例已安装的扩展。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-8&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-8&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-8-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;pig ext scan &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-v version&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;该命令会扫描 postgres 扩展目录，查找所有实际已安装的扩展。&lt;/p&gt;
&lt;h2 id=&#34;ext-add&#34;&gt;ext add&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-add&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;安装一个或多个 PostgreSQL 扩展。&lt;code&gt;pig ext add&lt;/code&gt; 的同级别名包括 &lt;code&gt;pig ext install&lt;/code&gt;、&lt;code&gt;pig ext ins&lt;/code&gt; 与 &lt;code&gt;pig ext a&lt;/code&gt;。顶层 &lt;a href=&#34;https://pig.pgsty.com/zh/cmd/#pig-install&#34;&gt;&lt;code&gt;pig install&lt;/code&gt;&lt;/a&gt; 是另一个原生包管理器包装命令，也支持 PostgreSQL 与扩展包 alias 翻译。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-9&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;16&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-9&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-9-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;pig ext add pg_duckdb            &lt;span class=&#34;c1&#34;&gt;# 安装 pg_duckdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext add pg_duckdb -v &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;# 为 PG 18 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext add pg_duckdb -y         &lt;span class=&#34;c1&#34;&gt;# 自动确认安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext add vector postgis       &lt;span class=&#34;c1&#34;&gt;# 安装多个扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext add postgis --plan       &lt;span class=&#34;c1&#34;&gt;# 预览安装计划，不执行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 使用别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig install pg_duckdb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig install pg_duckdb -v &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt; -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安装 PostgreSQL 内核&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pgsql            &lt;span class=&#34;c1&#34;&gt;# 安装最新版 postgresql 内核&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext a pg18                   &lt;span class=&#34;c1&#34;&gt;# 安装 postgresql 18 内核包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext ins pg16                 &lt;span class=&#34;c1&#34;&gt;# 安装 postgresql 16 内核包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pg15-core        &lt;span class=&#34;c1&#34;&gt;# 安装 postgresql 15 核心包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext install pg14-main -y     &lt;span class=&#34;c1&#34;&gt;# 安装 pg 14 + 常用扩展（vector, repack, wal2json）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-v|--version&lt;/code&gt;：指定 PG 大版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-y|--yes&lt;/code&gt;：自动确认安装&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--plan&lt;/code&gt;：预览安装计划，不执行包管理器命令&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ext-rm&#34;&gt;ext rm&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-rm&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;移除一个或多个 PostgreSQL 扩展。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-10&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-10&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-10-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;pig ext rm pg_duckdb             &lt;span class=&#34;c1&#34;&gt;# 移除 pg_duckdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext rm pg_duckdb -v &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;# 移除 PG 18 版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext rm pgvector -y           &lt;span class=&#34;c1&#34;&gt;# 自动确认移除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext rm pgvector --plan       &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-v|--version&lt;/code&gt;：指定 PG 大版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-y|--yes&lt;/code&gt;：自动确认移除&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--plan&lt;/code&gt;：预览移除计划，不执行包管理器命令&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ext-update&#34;&gt;ext update&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-update&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;将指定的已安装扩展更新到最新版。出于安全考虑，无参数 &lt;code&gt;pig ext update&lt;/code&gt; 不会更新所有扩展，而是 no-op；必须显式写出要更新的目标。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-11&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-11&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-11-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;pig ext update                   &lt;span class=&#34;c1&#34;&gt;# no-op：必须显式指定目标&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext update pg_duckdb         &lt;span class=&#34;c1&#34;&gt;# 更新特定扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext update postgis timescaledb  &lt;span class=&#34;c1&#34;&gt;# 更新多个扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext update pg_duckdb -y      &lt;span class=&#34;c1&#34;&gt;# 自动确认更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext update pg_duckdb -m      &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-v|--version&lt;/code&gt;：指定 PG 大版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-y|--yes&lt;/code&gt;：自动确认更新&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-m|--mirror&lt;/code&gt;：更新前从 &lt;code&gt;pigsty.cc&lt;/code&gt; 镜像重新加载扩展目录&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ext-import&#34;&gt;ext import&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-import&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;下载扩展包到本地仓库，便于离线安装。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-12&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-12&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-12-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;pig ext import postgis                &lt;span class=&#34;c1&#34;&gt;# 导入 PostGIS 包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext import timescaledb pg_cron    &lt;span class=&#34;c1&#34;&gt;# 导入多个扩展包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext import pg16                   &lt;span class=&#34;c1&#34;&gt;# 导入 PostgreSQL 16 包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext import pgsql-common           &lt;span class=&#34;c1&#34;&gt;# 导入常用工具包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext import -d /www/pigsty postgis &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-d|--repo&lt;/code&gt;：指定仓库目录（默认：&lt;code&gt;/www/pigsty&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ext-link&#34;&gt;ext link&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-link&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;将指定 PG 版本链接到系统 PATH。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-13&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-13&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-13-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;pig ext link &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;                  &lt;span class=&#34;c1&#34;&gt;# 链接 PG 18 到 PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext link &lt;span class=&#34;m&#34;&gt;16&lt;/span&gt;                  &lt;span class=&#34;c1&#34;&gt;# 链接 PG 16 到 /usr/pgsql&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext link /usr/pgsql-16       &lt;span class=&#34;c1&#34;&gt;# 从指定路径链接到 /usr/pgsql&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext link polar               &lt;span class=&#34;c1&#34;&gt;# 从 /usr/polar-17 链接 PolarDB 17&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext link null                &lt;span class=&#34;c1&#34;&gt;# 取消当前 PostgreSQL 链接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig ext link none                &lt;span class=&#34;c1&#34;&gt;# null / none / nil / nop / no 均可取消链接&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;该命令会创建 &lt;code&gt;/usr/pgsql&lt;/code&gt; 软链接，并写入 &lt;code&gt;/etc/profile.d/pgsql.sh&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;ext-reload&#34;&gt;ext reload&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ext-reload&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;刷新扩展元数据。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79a3a866-fence-14&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-79a3a866-fence-14&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79a3a866-fence-14-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;pig ext reload                   &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;更新后的文件会放置于 &lt;code&gt;~/.pig/extension.csv&lt;/code&gt; 中。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>CMD: sty</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/sty/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/sty/</guid>
      <description>
        
        
        &lt;p&gt;&lt;strong&gt;pig&lt;/strong&gt; 也可作为 Pigsty 的命令行工具使用 —— 这是一款开箱即用的免费 PostgreSQL RDS 解决方案。它为你的 PostgreSQL 集群带来高可用（HA）、PITR、监控、基础设施即代码（IaC）以及丰富的扩展支持。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;15&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-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;pig sty - Init &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;Download&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, Bootstrap, Configure, and Deploy Pigsty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty init    &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-mpfvd&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# install pigsty (~/pigsty by default)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty boot    &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-rmpk&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# native controller bootstrap&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty conf    &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;mode&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;flags&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# native Inventory-aware configuration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty deploy                  &lt;span class=&#34;c1&#34;&gt;# use pigsty to deploy everything (CAUTION!)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty get                     &lt;span class=&#34;c1&#34;&gt;# download pigsty source tarball&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty list                    &lt;span class=&#34;c1&#34;&gt;# list available pigsty versions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty grafana &amp;lt;verb&amp;gt;          &lt;span class=&#34;c1&#34;&gt;# manage grafana dashboards (native HTTP)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Examples:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty init                 &lt;span class=&#34;c1&#34;&gt;# extract and init ~/pigsty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty boot                 &lt;span class=&#34;c1&#34;&gt;# install ansible &amp;amp; other deps&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty conf                 &lt;span class=&#34;c1&#34;&gt;# generate pigsty.yml config file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig sty deploy               &lt;span class=&#34;c1&#34;&gt;# run the deploy.yml playbook&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;sty init&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;安装 Pigsty&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;sty boot&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;原生引导 Pigsty 控制节点&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要时自动提权至 root&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;sty conf&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;原生生成并校验 Inventory&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Go 工作流&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;sty deploy&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;运行部署 playbook&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;sty list&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出可用 Pigsty 版本&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;sty get&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;下载 Pigsty 源码压缩包&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;sty grafana&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;管理 Grafana 仪表盘（别名 &lt;code&gt;gf&lt;/code&gt;）&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;v1.6.0 新增&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;v1.8.0 起，&lt;code&gt;pig sty boot&lt;/code&gt; 与 &lt;code&gt;pig sty conf&lt;/code&gt; 均由 Go 原生实现，不再调用 Pigsty
旧版 &lt;code&gt;bootstrap&lt;/code&gt; / &lt;code&gt;configure&lt;/code&gt; Shell 脚本。v1.6.0 起，原先的&lt;code&gt;pig sty edit&lt;/code&gt; / &lt;code&gt;validate&lt;/code&gt; / &lt;code&gt;check&lt;/code&gt; 已上移为根级&lt;a href=&#34;https://pig.pgsty.com/zh/inventory/&#34;&gt;&lt;code&gt;pig inventory&lt;/code&gt;&lt;/a&gt; 命令组；实验性的 &lt;code&gt;pig sty dashboard&lt;/code&gt; 由&lt;code&gt;pig sty grafana&lt;/code&gt; 取代。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;你可以使用 &lt;code&gt;pig sty&lt;/code&gt; 子命令在当前节点引导部署 Pigsty。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-1-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;pig sty boot                     &lt;span class=&#34;c1&#34;&gt;# 准备控制节点；需要时自动提权&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf -g                  &lt;span class=&#34;c1&#34;&gt;# 生成并校验 pigsty.yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory edit              &lt;span class=&#34;c1&#34;&gt;# 可选：检查并调整 Inventory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty deploy                   &lt;span class=&#34;c1&#34;&gt;# 运行部署 playbook&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;详细入门指南请参阅：https://pigsty.cc/docs/setup/install/&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sty boot&lt;/code&gt; 会以尽力而为的方式初始化缺失的默认 &lt;code&gt;~/pigsty&lt;/code&gt; 目录。若需要指定 Pigsty
版本或安装路径，请先显式执行 &lt;code&gt;pig sty init&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;sty-init&#34;&gt;sty init&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#sty-init&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;下载并安装 Pigsty 发行版到 &lt;code&gt;~/pigsty&lt;/code&gt; 目录。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-2-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;pig sty init                   &lt;span class=&#34;c1&#34;&gt;# 使用最新版本安装到 ~/pigsty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty init -f                &lt;span class=&#34;c1&#34;&gt;# 安装并覆盖已有 pigsty 目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty init -m                &lt;span class=&#34;c1&#34;&gt;# 优先从 pigsty.cc 镜像下载安装包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty init -p /tmp/pigsty    &lt;span class=&#34;c1&#34;&gt;# 安装到指定目录 /tmp/pigsty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty init -v 3.4            &lt;span class=&#34;c1&#34;&gt;# 获取并安装指定版本 v3.4.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty init &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;                 &lt;span class=&#34;c1&#34;&gt;# 获取并安装指定主版本 v3 最新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-p|--path&lt;/code&gt;：目标安装目录（默认 &amp;ldquo;~/pigsty&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-f|--force&lt;/code&gt;：强制覆盖已存在的 pigsty 目录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-m|--mirror&lt;/code&gt;：优先使用 &lt;code&gt;pigsty.cc&lt;/code&gt; 镜像源&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v|--version&lt;/code&gt;：pigsty 版本号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d|--dir&lt;/code&gt;：下载目录（默认 &amp;ldquo;/tmp&amp;rdquo;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;sty-boot&#34;&gt;sty boot&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#sty-boot&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;使用 Go 原生工作流引导 Pigsty 控制节点。该命令能够准备可用的 Ansible 环境、处理在线与离线仓库、修复常见控制节点前置条件，并返回结构化结果；整个过程不再委托给 Pigsty 旧版&lt;code&gt;bootstrap&lt;/code&gt; 脚本，下载与解压软件包也不依赖 &lt;code&gt;curl&lt;/code&gt;、&lt;code&gt;wget&lt;/code&gt;、&lt;code&gt;tar&lt;/code&gt; 或 &lt;code&gt;gzip&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;7&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-3-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;sudo pig sty boot                         &lt;span class=&#34;c1&#34;&gt;# 使用默认区域在线引导&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pig sty boot -r china                &lt;span class=&#34;c1&#34;&gt;# 使用中国区域仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pig sty boot -m                      &lt;span class=&#34;c1&#34;&gt;# 等价于 --region china&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pig sty boot -k                      &lt;span class=&#34;c1&#34;&gt;# 保留现有仓库定义&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pig sty boot -p /path/to/pkg.tgz     &lt;span class=&#34;c1&#34;&gt;# 使用显式离线包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pig sty boot -p https://host/pkg.tgz &lt;span class=&#34;c1&#34;&gt;# 下载并使用离线包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pig sty boot -o json                 &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;命令可以不带 &lt;code&gt;sudo&lt;/code&gt; 直接调用：Pig 会先解析并下载显式来源，需要 root 权限时再通过 &lt;code&gt;sudo&lt;/code&gt;
进行一次自重启。设置 &lt;code&gt;PIG_NO_SUDO=1&lt;/code&gt; 可禁用自动提权；设置 &lt;code&gt;PIG_NON_INTERACTIVE=1&lt;/code&gt; 可让
sudo 使用非交互模式。&lt;/p&gt;
&lt;h3 id=&#34;引导阶段&#34;&gt;引导阶段&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bc%95%e5%af%bc%e9%98%b6%e6%ae%b5&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;原生工作流依次完成：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 Debian 12/13 上尽可能检查并修复 &lt;code&gt;en_US.UTF-8&lt;/code&gt;，避免 Ansible 因继承到坏 locale 而无法启动。&lt;/li&gt;
&lt;li&gt;实际执行 &lt;code&gt;ansible-playbook&lt;/code&gt;，发现它使用的 Python 解释器，并校验 &lt;code&gt;yaml&lt;/code&gt;、&lt;code&gt;jmespath&lt;/code&gt;，
以及 &lt;code&gt;cryptography&lt;/code&gt; 或 &lt;code&gt;OpenSSL&lt;/code&gt; 两者之一；仅有二进制文件但无法运行，不会被判定为就绪。&lt;/li&gt;
&lt;li&gt;解析仓库来源，按需准备离线内容，并且只在 Ansible 缺失或不可用时安装精简的控制节点软件包集。&lt;/li&gt;
&lt;li&gt;安装后再次校验 Ansible；如果新软件包补齐了 locale 工具，也会重试 locale 准备。&lt;/li&gt;
&lt;li&gt;探测控制节点辅助工具，为发起调用的管理员用户修复到 &lt;code&gt;127.0.0.1&lt;/code&gt; 的密钥 SSH，并尽可能初始化缺失的默认 &lt;code&gt;~/pigsty&lt;/code&gt; 目录。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;即使 Ansible 已经可用，显式指定、自动发现或已经提交的离线来源仍会被准备，因此可以在一个已经就绪的控制节点上使用 &lt;code&gt;sty boot&lt;/code&gt; 预置离线仓库。&lt;/p&gt;
&lt;h3 id=&#34;来源选择与工作模式&#34;&gt;来源选择与工作模式&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%9d%a5%e6%ba%90%e9%80%89%e6%8b%a9%e4%b8%8e%e5%b7%a5%e4%bd%9c%e6%a8%a1%e5%bc%8f&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;结果中会记录以下四种引导模式之一：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34;&gt;模式&lt;/th&gt;
      &lt;th scope=&#34;col&#34;&gt;含义&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;ready&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Ansible 已经可用，也不需要准备离线来源。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;offline&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;选择了显式、可信自动发现或已提交的离线仓库。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;online&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;配置所选区域的在线仓库以修复控制节点。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;existing&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;使用 &lt;code&gt;--keep&lt;/code&gt; 在线刷新失败后，成功回退到现有仓库定义。&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;来源优先级与安全规则是确定的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--path&lt;/code&gt; 接受本地归档或 HTTP(S) URL。包含凭据的 URL 会被拒绝；显式来源无效时直接失败，
不会悄悄回退到在线模式。&lt;/li&gt;
&lt;li&gt;自动发现的 &lt;code&gt;/tmp/pkg.tgz&lt;/code&gt; 必须是普通文件，不可被组或其他用户写入，且属主为 root 或发起
sudo 的用户；不安全的候选会被忽略并产生告警。&lt;/li&gt;
&lt;li&gt;已完整提交的 &lt;code&gt;/www/pigsty&lt;/code&gt; 仓库优先于选中的离线包；两者同时存在时复用现有仓库，离线包保持不动并给出告警。&lt;/li&gt;
&lt;li&gt;Pig 使用 Go 原生能力下载并解压归档。如果 &lt;code&gt;/www&lt;/code&gt; 不存在，会先创建 &lt;code&gt;/data/nginx&lt;/code&gt; 与预期的&lt;code&gt;/www -&amp;gt; /data/nginx&lt;/code&gt; 符号链接，再提交仓库内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;离线模式只启用严格的 &lt;code&gt;pigsty-local&lt;/code&gt; 仓库；在线模式配置所选区域，安装 Pigsty 内嵌签名密钥并启用仓库签名校验，同时安装 &lt;code&gt;node&lt;/code&gt; 与 &lt;code&gt;pigsty&lt;/code&gt; 控制节点模块。&lt;/p&gt;
&lt;h3 id=&#34;仓库事务与失败边界&#34;&gt;仓库事务与失败边界&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%bb%93%e5%ba%93%e4%ba%8b%e5%8a%a1%e4%b8%8e%e5%a4%b1%e8%b4%a5%e8%be%b9%e7%95%8c&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;默认策略会在替换仓库定义前创建备份。仓库配置或软件包安装失败时，Pig 会尝试恢复备份，并在结果中明确标记回滚成功或失败。&lt;code&gt;--keep&lt;/code&gt; 会切换为增量策略：保留现有定义，在线刷新失败时可以回退到已有仓库，也不需要执行替换回滚。&lt;/p&gt;
&lt;p&gt;显式来源无效、需要安装时软件包管理器不受支持、仓库或软件包操作失败，以及安装后 Ansible
仍不可用，都会让命令失败。locale 修复、可选辅助工具探测、本机 SSH 修复与 Pigsty 目录初始化属于建议性收尾步骤；失败只会作为告警保留，不会否定已经可用的控制节点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-r|--region&lt;/code&gt;：区域（default, china, europe&amp;hellip;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-m|--mirror&lt;/code&gt;：等价于 &lt;code&gt;--region china&lt;/code&gt;；不能与 &lt;code&gt;--region&lt;/code&gt; 同时使用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p|--path&lt;/code&gt;：离线包文件或 HTTP(S) URL；显式指定的来源无效时直接失败&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-k|--keep&lt;/code&gt;：保留现有仓库定义，不执行替换&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;结构化输出&#34;&gt;结构化输出&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%bb%93%e6%9e%84%e5%8c%96%e8%be%93%e5%87%ba&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;自动化场景可使用全局 &lt;code&gt;-o json&lt;/code&gt; 或 &lt;code&gt;-o yaml&lt;/code&gt;。结果类型为 &lt;code&gt;pig.sty.boot/v2&lt;/code&gt;，包含 Ansible
状态、工作模式与软件包管理器、仓库策略与回滚结果、来源与仓库路径、locale、本机 SSH 与
Pigsty 目录初始化状态、是否发生变更、告警，以及以下后续建议：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-4-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;pig sty conf -g
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv edit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;结构化模式会抑制动态进度信息，保证 stdout 可以直接被程序解析。&lt;/p&gt;
&lt;p&gt;详见：https://pigsty.cc/docs/setup/offline/#bootstrap&lt;/p&gt;
&lt;h2 id=&#34;sty-conf&#34;&gt;sty conf&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#sty-conf&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;使用 Go 原生工作流生成 Pigsty Inventory。&lt;code&gt;sty conf&lt;/code&gt; 从 &lt;code&gt;&amp;lt;PIGSTY_HOME&amp;gt;/conf&lt;/code&gt; 下读取一个模板，
执行有边界的结构化变更，校验完整候选配置，最后原子写入仅属主可读的 Inventory；它不会调用或回退到 &lt;code&gt;./configure&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-5-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;pig sty conf                         &lt;span class=&#34;c1&#34;&gt;# 使用 conf/meta.yml，写入 pigsty.yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf -g                      &lt;span class=&#34;c1&#34;&gt;# 生成随机密码（推荐）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf rich                    &lt;span class=&#34;c1&#34;&gt;# 位置参数选择 conf/rich.yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf -c ha/full              &lt;span class=&#34;c1&#34;&gt;# 等价的参数形式；不要与位置参数并用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf ha/trio --ip 10.0.0.10,10.0.0.11,10.0.0.12
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf --domain infra.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf rich -v &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;# 为通用模板请求 PostgreSQL 18&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf -r china -s             &lt;span class=&#34;c1&#34;&gt;# 中国区域、保留占位 IP、跳过管理员预检&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf -x                       &lt;span class=&#34;c1&#34;&gt;# 写入代理环境变量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf full -g -O ha.yml       &lt;span class=&#34;c1&#34;&gt;# 写入自定义的仅属主可读文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty conf -n --ip 10.0.0.10 -o json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;默认模式为 &lt;code&gt;meta&lt;/code&gt;；&lt;code&gt;pig sty c&lt;/code&gt; 与 &lt;code&gt;pig sty configure&lt;/code&gt; 是命令别名。注意大写 &lt;code&gt;-O&lt;/code&gt; 用于指定
Inventory 输出文件，全局小写 &lt;code&gt;-o&lt;/code&gt; 用于选择 text、JSON 或 YAML 命令输出。&lt;/p&gt;
&lt;h3 id=&#34;模板与输出安全&#34;&gt;模板与输出安全&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%a8%a1%e6%9d%bf%e4%b8%8e%e8%be%93%e5%87%ba%e5%ae%89%e5%85%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;模式必须是 &lt;code&gt;&amp;lt;PIGSTY_HOME&amp;gt;/conf&lt;/code&gt; 下用斜杠分隔的安全相对名称，&lt;code&gt;.yml&lt;/code&gt; 后缀可省略；绝对路径、目录穿越、空路径段与路径逃逸都会被拒绝。&lt;/li&gt;
&lt;li&gt;相对输出路径基于 &lt;code&gt;&amp;lt;PIGSTY_HOME&amp;gt;&lt;/code&gt; 解析，绝对输出路径保持不变。&lt;/li&gt;
&lt;li&gt;目标文件不能通过相同路径、已有符号链接、带符号链接的父目录或硬链接指回源模板；已有输出符号链接一律拒绝。&lt;/li&gt;
&lt;li&gt;Pig 会先解析源模板并拒绝冲突的 IP 映射，再执行外部预检。解析、变更、预检或校验失败均不会改动目标文件。&lt;/li&gt;
&lt;li&gt;成功结果以 &lt;code&gt;0600&lt;/code&gt; 权限原子写入。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;结构化变更&#34;&gt;结构化变更&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%bb%93%e6%9e%84%e5%8c%96%e5%8f%98%e6%9b%b4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;命令操作解析后的 YAML 结构与有边界的标量，而不是进行宽泛的文本替换：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34;&gt;输入&lt;/th&gt;
      &lt;th scope=&#34;col&#34;&gt;原生行为&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;--ip A,B,...&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;最多接收十个互不相同的地址，依次映射到 &lt;code&gt;10.10.10.10&lt;/code&gt; 至 &lt;code&gt;10.10.10.19&lt;/code&gt;；替换同时完成，因此地址互换安全，VIP 等无关地址保持不变。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;未指定 &lt;code&gt;--ip&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;探测本机网卡；候选不唯一时交互选择，&lt;code&gt;--non-interactive&lt;/code&gt; 或 stdin 已关闭时则失败并提示使用 &lt;code&gt;--ip&lt;/code&gt;。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;--domain NAME&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;只替换精确的 &lt;code&gt;i.pigsty&lt;/code&gt;，不会误改 &lt;code&gt;cli.pigsty&lt;/code&gt; 或 &lt;code&gt;i.pigsty.cc&lt;/code&gt;；NAME 必须是合法 DNS 域名。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;小规格控制节点&lt;/td&gt;
      &lt;td&gt;探测到 CPU 少于四核时，将 &lt;code&gt;node_tune: oltp&lt;/code&gt; 与 &lt;code&gt;pg_conf: oltp.yml&lt;/code&gt; 改为对应的 &lt;code&gt;tiny&lt;/code&gt; 配置。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;--region REGION&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;非默认区域会更新 &lt;code&gt;all.vars.region&lt;/code&gt;；&lt;code&gt;china&lt;/code&gt; 还会启用模板中已有的 Docker 与 pip 镜像值，但不会凭空补造模板中不存在的配置。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;--proxy&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;将非空的 &lt;code&gt;HTTP_PROXY&lt;/code&gt;/&lt;code&gt;http_proxy&lt;/code&gt;、&lt;code&gt;HTTPS_PROXY&lt;/code&gt;（缺失时回退到 &lt;code&gt;ALL_PROXY&lt;/code&gt;）、&lt;code&gt;ALL_PROXY&lt;/code&gt; 与 &lt;code&gt;NO_PROXY&lt;/code&gt; 写入 &lt;code&gt;all.vars.proxy_env&lt;/code&gt;；必要时补充安全的默认 no-proxy 列表。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;--version MAJOR&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;通用模板支持 PostgreSQL 14-18，以及显式指定的 19 beta，并选择匹配的 locale；版本固定的 &lt;code&gt;mssql&lt;/code&gt;、&lt;code&gt;polar&lt;/code&gt; 与 &lt;code&gt;pgNN&lt;/code&gt; 模式保留模板版本并给出告警。&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;--generate&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;每个已知凭据标识符生成一个 24 位随机值，并一致替换其生效值和文档化占位符。&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;如果某个 IP 映射会与未替换的 Inventory 键冲突，命令会按无效参数拒绝执行。某个已提供地址在模板中没有对应占位槽时，不会被静默忽略，而是作为 discarded-IP 告警保留在结构化结果中。&lt;/p&gt;
&lt;p&gt;指定 PostgreSQL 19 beta 时，如果模板包含预期的软件仓库列表，Pig 还会在 &lt;code&gt;pgsql&lt;/code&gt; 后启用&lt;code&gt;beta&lt;/code&gt; 仓库。&lt;code&gt;conf/build/&lt;/code&gt; 下的模式有意绕过 IP 映射与控制节点管理员预检，以保持构建模板可移植。&lt;/p&gt;
&lt;p&gt;生效口令标识符包括 &lt;code&gt;grafana_admin_password&lt;/code&gt;、&lt;code&gt;pg_admin_password&lt;/code&gt;、&lt;code&gt;pg_monitor_password&lt;/code&gt;、&lt;code&gt;pg_replication_password&lt;/code&gt;、&lt;code&gt;patroni_password&lt;/code&gt;、&lt;code&gt;haproxy_admin_password&lt;/code&gt;、&lt;code&gt;minio_secret_key&lt;/code&gt; 与 &lt;code&gt;etcd_root_password&lt;/code&gt;。随机生成还覆盖文档中的&lt;code&gt;DBUser.Meta&lt;/code&gt;、&lt;code&gt;DBUser.Viewer&lt;/code&gt;、&lt;code&gt;S3User.Backup&lt;/code&gt;、&lt;code&gt;S3User.Meta&lt;/code&gt;、&lt;code&gt;S3User.Data&lt;/code&gt;、&lt;code&gt;DBUser.Supa&lt;/code&gt; 和 &lt;code&gt;Vibe.Coding&lt;/code&gt; 占位符；同一标识符出现多次时会使用同一个生成值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-c|--conf&lt;/code&gt;：模板模式，等价于位置参数 &lt;code&gt;[mode]&lt;/code&gt;，两种形式不能同时使用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ip&lt;/code&gt;：最多十个互不相同、逗号分隔的 IPv4 地址&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--domain&lt;/code&gt;：将精确的 &lt;code&gt;i.pigsty&lt;/code&gt; 占位符替换为合法 DNS 域名&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v|--version&lt;/code&gt;：PostgreSQL 主版本（18/17/16/15/14；19 beta 可显式指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-r|--region&lt;/code&gt;：上游仓库区域（default/china/europe）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-m|--mirror&lt;/code&gt;：等价于 &lt;code&gt;--region china&lt;/code&gt;；不能与 &lt;code&gt;--region&lt;/code&gt; 同时使用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-O|--output-file&lt;/code&gt;：输出配置文件路径（默认：pigsty.yml）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-s|--skip&lt;/code&gt;：保留占位 IP 并跳过管理员 SSH/sudo 预检；不能与 &lt;code&gt;--ip&lt;/code&gt; 同时使用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p|--port&lt;/code&gt;：SSH 端口&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-x|--proxy&lt;/code&gt;：将非空代理环境变量写入 &lt;code&gt;all.vars.proxy_env&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-n|--non-interactive&lt;/code&gt;：IP 候选不唯一时拒绝猜测，不进入交互选择&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-g|--generate&lt;/code&gt;：将已知演示口令替换为 24 位随机值&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;预检与校验&#34;&gt;预检与校验&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e9%a2%84%e6%a3%80%e4%b8%8e%e6%a0%a1%e9%aa%8c&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;未使用 &lt;code&gt;--skip&lt;/code&gt; 时，Pig 会检查内核、架构、软件包管理器、平台厂商、控制节点资源、sudo/管理员权限、本机 SSH 与 Ansible 可用性；SSH 检查使用 &lt;code&gt;--port&lt;/code&gt; 指定的端口。在 Inventory 仍可安全生成时，这些诊断以可操作告警返回；无效参数与不安全的配置变换仍然是错误。&lt;/p&gt;
&lt;p&gt;渲染候选必须通过 Pig 原生 Inventory 校验；如果存在 &lt;code&gt;ansible-inventory&lt;/code&gt;，还会在提交文件前执行一次有时间边界的外部解析。&lt;code&gt;--skip&lt;/code&gt; 会保留占位 IP，并跳过管理员 SSH/sudo 预检，但不会禁用模板解析、安全变更、Inventory 校验或原子写入。&lt;/p&gt;
&lt;h3 id=&#34;结构化输出-1&#34;&gt;结构化输出&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%bb%93%e6%9e%84%e5%8c%96%e8%be%93%e5%87%ba-1&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;使用全局 &lt;code&gt;-o json&lt;/code&gt; 或 &lt;code&gt;-o yaml&lt;/code&gt; 时，结果类型为 &lt;code&gt;pig.sty.configure/v1&lt;/code&gt;，会报告模式、源模板与输出路径、区域、所选主地址、已应用与被丢弃的 IP、域名、SSH 端口、请求与实际 PostgreSQL
版本、原生工作流标记、生成的机密标识符及告警。随机口令值绝不会输出。&lt;/p&gt;
&lt;p&gt;详见：https://pigsty.cc/docs/setup/install/#配置&lt;/p&gt;
&lt;h2 id=&#34;sty-deploy&#34;&gt;sty deploy&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#sty-deploy&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;使用 deploy.yml 剧本部署 Pigsty。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-6-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;pig sty deploy       &lt;span class=&#34;c1&#34;&gt;# 执行 deploy.yml（如果找不到则使用 install.yml）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty d            &lt;span class=&#34;c1&#34;&gt;# 短别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty de           &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;此命令从您的 Pigsty 安装目录执行 deploy.yml 剧本。为保持向后兼容性，如果 deploy.yml 不存在但 install.yml 存在，将使用 install.yml 代替。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;警告&lt;/strong&gt;：此操作会修改您的系统，且 &lt;strong&gt;调用即执行&lt;/strong&gt;——deploy 不设 &lt;code&gt;--yes&lt;/code&gt; 确认门，
误触发时请用 Ctrl+C 中断。（v1.6.0 起 &lt;code&gt;pig sty install&lt;/code&gt; / &lt;code&gt;ins&lt;/code&gt; 别名已移除。）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;sty-list&#34;&gt;sty list&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#sty-list&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;列出可用的 Pigsty 版本。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-7&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-7&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-7-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;pig sty list                     &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;sty-get&#34;&gt;sty get&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#sty-get&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;下载 Pigsty 源码压缩包。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-8&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-8&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-8-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;pig sty get                      &lt;span class=&#34;c1&#34;&gt;# 下载最新版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty get v3.4.0               &lt;span class=&#34;c1&#34;&gt;# 下载指定版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty get -m                   &lt;span class=&#34;c1&#34;&gt;# 优先使用 pigsty.cc 镜像&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;sty-grafana&#34;&gt;sty grafana&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#sty-grafana&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;自 v1.6.0 起，&lt;code&gt;pig sty grafana&lt;/code&gt;（别名 &lt;code&gt;gf&lt;/code&gt;）通过 Grafana 原生 HTTP API 管理仪表盘，
取代了实验性的 &lt;code&gt;pig sty dashboard&lt;/code&gt;。&lt;code&gt;PATH&lt;/code&gt; 参数可以指向 grafana 根目录、单个文件夹或单个仪表盘
JSON 文件；缺省时解析 &lt;code&gt;&amp;lt;PIGSTY_HOME&amp;gt;/files/grafana&lt;/code&gt;，不会回退到当前目录。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-9&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;9&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-9&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-9-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;pig sty grafana info             &lt;span class=&#34;c1&#34;&gt;# 检查 Grafana 健康、认证与基本信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty grafana list             &lt;span class=&#34;c1&#34;&gt;# 列出当前组织的全部仪表盘&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty grafana boot             &lt;span class=&#34;c1&#34;&gt;# 围绕现有 pigsty 仪表盘引导 Grafana&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty grafana init             &lt;span class=&#34;c1&#34;&gt;# 加载完整仪表盘集，然后引导 Grafana&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty grafana load &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;PATH&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;# 按本地路径加载仪表盘&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty grafana dump &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;PATH&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;# 导出远端仪表盘到本地路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty grafana clean &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;PATH&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# 删除本地路径对应的远端仪表盘（--dry-run/--yes）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty grafana lang zh-Hans     &lt;span class=&#34;c1&#34;&gt;# 设置组织与当前用户语言&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig sty grafana style            &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;连接与凭据&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--endpoint&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Grafana 地址与路径前缀（默认 &lt;code&gt;http://i.pigsty/ui&lt;/code&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--username&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Grafana API 用户名&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--password&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Grafana API 密码（&lt;strong&gt;不安全&lt;/strong&gt;：对进程列表与 shell 历史可见）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--password-file&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅属主可读的密码文件（推荐）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;密码解析顺序：&lt;code&gt;--password&lt;/code&gt; → &lt;code&gt;--password-file&lt;/code&gt; → &lt;code&gt;GRAFANA_PASSWORD&lt;/code&gt; 环境变量 →
Inventory 中的 &lt;code&gt;all.vars.grafana_admin_password&lt;/code&gt;。
HTTP 客户端带有超时与响应大小限制，并拒绝重定向；TLS 证书默认校验。&lt;/p&gt;
&lt;h3 id=&#34;传统仪表盘与-schema-v2-资源&#34;&gt;传统仪表盘与 schema v2 资源&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%bc%a0%e7%bb%9f%e4%bb%aa%e8%a1%a8%e7%9b%98%e4%b8%8e-schema-v2-%e8%b5%84%e6%ba%90&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;load&lt;/code&gt; 与 &lt;code&gt;init&lt;/code&gt; 同时接受传统 Grafana 仪表盘 JSON，以及具有以下精确身份的资源格式：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1c340f8a-fence-10&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;json&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-1c340f8a-fence-10&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1c340f8a-fence-10-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-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;apiVersion&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;dashboard.grafana.app/v2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;kind&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Dashboard&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;pgsql-overview&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;namespace&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;spec&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:{}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;加载时，PIG 不会把两种格式悄悄压平为同一种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;传统 JSON 从顶层 &lt;code&gt;uid&lt;/code&gt; 取得身份，并调用旧版 dashboard API。&lt;/li&gt;
&lt;li&gt;Schema v2 从 &lt;code&gt;metadata.name&lt;/code&gt; 取得 UID；缺少 namespace 时默认使用 &lt;code&gt;default&lt;/code&gt;，&lt;code&gt;spec&lt;/code&gt; 必须是对象，并通过 Grafana dashboard resource API 写入。&lt;/li&gt;
&lt;li&gt;JSON 文件名去掉 &lt;code&gt;.json&lt;/code&gt; 后必须与解析出的 UID 一致。本地目录只允许一层文件夹，其目录名会成为 Grafana folder UID。&lt;/li&gt;
&lt;li&gt;对 schema v2，PIG 保留 &lt;code&gt;spec&lt;/code&gt; 与 &lt;code&gt;grafana.app/message&lt;/code&gt; 注解，根据本地文件夹写入 &lt;code&gt;grafana.app/folder&lt;/code&gt;，并在 upsert 前主动去掉由服务端管理的 metadata/status。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dump&lt;/code&gt; 只有在目标文件已经以 v2 形式存在时才保持 schema v2；此时会使用该文件的 namespace 拉取原生 v2 资源。全新导出目标默认写成传统 JSON；仅存在于本地的文件不会被 &lt;code&gt;dump&lt;/code&gt; 删除。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其他 &lt;code&gt;dashboard.grafana.app/*&lt;/code&gt; 版本或结构不完整的资源封装会被直接拒绝，不会被静默当成传统仪表盘。因此，要往返保持 v2 格式，必须保留已有的本地 v2 文件作为格式契约。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>pig pg</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/pg/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/pg/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;pig pg&lt;/code&gt; 命令（别名 &lt;code&gt;pig postgres&lt;/code&gt;）用于管理本地 PostgreSQL 服务器和数据库。它封装了 &lt;code&gt;pg_ctl&lt;/code&gt;、&lt;code&gt;psql&lt;/code&gt;、&lt;code&gt;vacuumdb&lt;/code&gt; 等本地原语；集群级 Patroni 操作请使用 &lt;code&gt;pig pt&lt;/code&gt;，编排式 PITR 请使用 &lt;code&gt;pig pitr&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;41&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-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;pig pg - Local PostgreSQL primitives &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;pg_ctl / psql / &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; files&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Server Control &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;via pg_ctl&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg init     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-v ver&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     initialize data directory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg start    &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;              start PostgreSQL server
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg stop     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-m fast&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;    stop PostgreSQL server
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg restart  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-m fast&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;    restart PostgreSQL server
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg reload   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;              reload configuration
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg status   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;              show server status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg promote  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;              promote standby to primary
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg role     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-V&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;         detect instance role &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;primary/replica&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Service Management &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;via systemctl&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg svc start                          start postgres systemd service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg svc stop                           stop postgres systemd service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg svc restart                        restart postgres systemd service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg svc reload                         reload postgres systemd service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg svc status                         show postgres service status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; Query:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg psql     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;db&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-c cmd&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;             connect to database via psql
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg ps       &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-a&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-u user&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;            show current connections
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-x&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-u user&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;            terminate connections &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;dry-run by default&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg clone    &amp;lt;src&amp;gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;dst&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;               clone database with CREATE DATABASE TEMPLATE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Database Maintenance:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg vacuum   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;db&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-a&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-t table&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;      vacuum tables
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg analyze  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;db&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-a&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-t table&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;      analyze tables
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg freeze   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;db&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-a&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-t table&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;      vacuum freeze tables
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg repack   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;db&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-a&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-t table&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;      repack tables &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;online rebuild&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Tuning:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg tune     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-p profile&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;              generate optimized parameters
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Instance Fork:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg fork init &amp;lt;name&amp;gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-D datadir&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;      fork PGDATA into /pg/data-&amp;lt;name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg fork list                          list managed forks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg fork start&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;stop&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;rm &amp;lt;name&amp;gt;          manage fork lifecycle
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Utilities:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pg log &amp;lt;list&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;tail&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;cat&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;less&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;grep&amp;gt;      view PostgreSQL logs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;命令概览&#34;&gt;命令概览&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%91%bd%e4%bb%a4%e6%a6%82%e8%a7%88&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;服务控制&lt;/strong&gt;（pg_ctl 封装）：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg init&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;initdb, i&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;初始化数据目录&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 initdb&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg start&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;boot, up&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;启动 PostgreSQL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 pg_ctl start&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg stop&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;halt, down&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;停止 PostgreSQL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 pg_ctl stop&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg restart&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;reboot&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重启 PostgreSQL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 pg_ctl restart&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg reload&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;hup&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重载配置&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 pg_ctl reload&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg status&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;st, stat&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;查看服务状态&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示进程与相关服务状态&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg promote&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pro&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;提升备库为主库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 pg_ctl promote&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg role&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;r&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;检测实例角色&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;输出 primary/replica&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;连接与查询&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg psql&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;sql, connect&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;连接到数据库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 psql&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg ps&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;activity, act&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示当前连接&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;查询 pg_stat_activity&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg kill&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;k&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;终止连接&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;默认 dry-run 模式&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg clone&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;克隆单个数据库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;CREATE DATABASE ... TEMPLATE ... FILE_COPY&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;数据库维护&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg vacuum&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;vac, vc&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;清理表&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 vacuumdb&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg analyze&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ana, az&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;分析表&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 vacuumdb &amp;ndash;analyze-only&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg freeze&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;冻结清理表&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;封装 vacuumdb &amp;ndash;freeze&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg repack&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rp&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;在线重整表&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 pg_repack 扩展&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;参数调优&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg tune&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;tuning&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;生成 PostgreSQL 调优参数&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动探测硬件，支持结构化输出&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;实例 Fork&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg fork&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;fork init&lt;/code&gt; 的便捷写法&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;默认创建托管 fork，不自动启动&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg fork init&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;create&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;创建本地一次性物理副本&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;默认 &lt;code&gt;/pg/data-&amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg fork list&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出托管 fork&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;扫描 &lt;code&gt;/pg/data-*&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg fork start&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;启动已有 fork&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;支持托管名或 &lt;code&gt;--dst-data&lt;/code&gt; 非托管目录&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg fork stop&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;停止已有 fork&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;支持 shutdown mode&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg fork rm&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;remove, delete&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;删除 fork&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;运行中的 fork 需 &lt;code&gt;--stop&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;日志工具&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg log&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;l&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;日志管理&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;父命令&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg log list&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出日志文件&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg log tail&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;t, f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;实时查看日志&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;tail -f&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg log show&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;cat, c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;输出日志内容&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg log less&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;vi, v&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;用 less 查看&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg log grep&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;g, search&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;搜索日志&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;服务子命令&lt;/strong&gt;（&lt;code&gt;pg svc&lt;/code&gt;，也可写作 &lt;code&gt;pg service&lt;/code&gt; 或 &lt;code&gt;pg s&lt;/code&gt;）：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc start&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;boot, up&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;启动 postgres 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc stop&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;halt, dn, down&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;停止 postgres 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc restart&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;reboot, rt&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重启 postgres 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc reload&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rl, hup&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重载 postgres 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc status&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;st, stat&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示服务状态&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;35&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-1-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;&lt;span class=&#34;c1&#34;&gt;# 服务控制&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg init                       &lt;span class=&#34;c1&#34;&gt;# 初始化数据目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg start                      &lt;span class=&#34;c1&#34;&gt;# 启动 PostgreSQL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg status                     &lt;span class=&#34;c1&#34;&gt;# 查看状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg stop                       &lt;span class=&#34;c1&#34;&gt;# 停止 PostgreSQL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg restart                    &lt;span class=&#34;c1&#34;&gt;# 重启 PostgreSQL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg reload                     &lt;span class=&#34;c1&#34;&gt;# 重载配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 连接与查询&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg psql                       &lt;span class=&#34;c1&#34;&gt;# 连接到 postgres 数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg psql mydb                  &lt;span class=&#34;c1&#34;&gt;# 连接到指定数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg ps                         &lt;span class=&#34;c1&#34;&gt;# 查看当前连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -x                    &lt;span class=&#34;c1&#34;&gt;# 终止连接（需要 -x 确认执行）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg clone meta meta_fork       &lt;span class=&#34;c1&#34;&gt;# 克隆单个数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 数据库维护&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg vacuum mydb                &lt;span class=&#34;c1&#34;&gt;# 清理指定数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg analyze mydb               &lt;span class=&#34;c1&#34;&gt;# 分析指定数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg repack mydb                &lt;span class=&#34;c1&#34;&gt;# 在线重整数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 参数调优&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune                       &lt;span class=&#34;c1&#34;&gt;# 自动探测硬件并生成调优参数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -p olap               &lt;span class=&#34;c1&#34;&gt;# 使用 OLAP 负载画像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -c &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; -m &lt;span class=&#34;m&#34;&gt;32768&lt;/span&gt; -d &lt;span class=&#34;m&#34;&gt;500&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 手工覆盖 CPU / 内存 / 磁盘&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 实例 Fork&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork dev                   &lt;span class=&#34;c1&#34;&gt;# 创建 /pg/data-dev&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork init dev --start      &lt;span class=&#34;c1&#34;&gt;# 创建并启动 fork，自动分配高位端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork init dev -s --dst-port &lt;span class=&#34;m&#34;&gt;15433&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 创建并在指定端口启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork list                  &lt;span class=&#34;c1&#34;&gt;# 列出 /pg/data-* fork&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 日志查看&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log tail                   &lt;span class=&#34;c1&#34;&gt;# 实时查看最新日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log list --log-dir /var/log/pg  &lt;span class=&#34;c1&#34;&gt;# 使用自定义日志目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log grep ERROR             &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;全局参数&#34;&gt;全局参数&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%85%a8%e5%b1%80%e5%8f%82%e6%95%b0&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;以下参数适用于所有 &lt;code&gt;pig pg&lt;/code&gt; 子命令：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--version&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-v&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动检测&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL 主版本号（形如 18，17）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--data&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-D&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/pg/data&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;数据目录路径&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dbsu&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-U&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;postgres&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;数据库超级用户（或 &lt;code&gt;$PIG_DBSU&lt;/code&gt; 环境变量）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;版本检测逻辑：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果指定了 &lt;code&gt;-v&lt;/code&gt;，使用指定 PG 大版本&lt;/li&gt;
&lt;li&gt;否则从数据目录的 &lt;code&gt;PG_VERSION&lt;/code&gt; 文件读取版本&lt;/li&gt;
&lt;li&gt;如果都无法获取，使用 PATH 中的默认 PostgreSQL 大版本&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;服务控制命令&#34;&gt;服务控制命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%9c%8d%e5%8a%a1%e6%8e%a7%e5%88%b6%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pg-init&#34;&gt;pg init&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-init&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;初始化 PostgreSQL 数据目录，封装 &lt;code&gt;initdb&lt;/code&gt; 命令。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;校验和默认打开，除非使用 &lt;code&gt;-K|--no-data-checksums&lt;/code&gt; 显式关闭&lt;/li&gt;
&lt;li&gt;优先使用平台无关的 C.UTF-8 内置 Locale （PG 17 及以上版本），如果不支持则优先使用系统的 C.UTF-8 / C Locale，都不满足时使用系统默认 Locale。&lt;/li&gt;
&lt;li&gt;如果数据目录已存在，命令会拒绝执行，除非使用 &lt;code&gt;-f|--force&lt;/code&gt; 强制覆盖。如果数据目录上有 PostgreSQL 正在运行，即使使用 &lt;code&gt;-f|--force&lt;/code&gt;，命令也会拒绝执行，以防止数据丢失&lt;/li&gt;
&lt;li&gt;您可以使用 &lt;code&gt;--&lt;/code&gt; 追加额外参数给 &lt;code&gt;initdb&lt;/code&gt;，例如 &lt;code&gt;--waldir=/wal&lt;/code&gt; 指定 WAL 日志目录。但如果要覆盖 Locale / Encoding 等参数，建议直接使用 &lt;code&gt;initdb&lt;/code&gt; 命令。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-2-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;pig pg init                       &lt;span class=&#34;c1&#34;&gt;# 使用默认设置初始化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg init -v &lt;span class=&#34;m&#34;&gt;18&lt;/span&gt;                 &lt;span class=&#34;c1&#34;&gt;# 指定 PostgreSQL 18&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg init -D /data/pg18         &lt;span class=&#34;c1&#34;&gt;# 指定数据目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg init -K                    &lt;span class=&#34;c1&#34;&gt;# 关闭数据校验和&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg init -f                    &lt;span class=&#34;c1&#34;&gt;# 强制初始化（删除已有数据）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg init -- --waldir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/wal      &lt;span class=&#34;c1&#34;&gt;# 传递额外参数给 initdb&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--no-data-checksums&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-K&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;禁用数据校验和&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--force&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;强制初始化，删除已有数据（危险！）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;与 &lt;code&gt;--force&lt;/code&gt; 配合时跳过覆盖确认提示&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pg-start&#34;&gt;pg start&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-start&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;pg_ctl start&lt;/code&gt; 命令启动 PostgreSQL 服务器。如果 PostgreSQL 由 Patroni 管理，建议使用 &lt;code&gt;pig pt start&lt;/code&gt; 通过启动 patroni 的方式来启动。如果 PostgreSQL 由 Systemd 管理，可以使用 &lt;code&gt;pig pg svc start&lt;/code&gt; 来启动服务。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-3-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;pig pg start                      &lt;span class=&#34;c1&#34;&gt;# 使用默认设置启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg up                         &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg start -D /data/pg18        &lt;span class=&#34;c1&#34;&gt;# 指定数据目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg start -l /pg/log/pg.log    &lt;span class=&#34;c1&#34;&gt;# 重定向输出到日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg start -O &lt;span class=&#34;s2&#34;&gt;&amp;#34;-p 5433&amp;#34;&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# 传递参数给 postgres&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg start -o json              &lt;span class=&#34;c1&#34;&gt;# 结构化输出 JSON&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--log&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-l&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重定向 stdout/stderr 到日志文件&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--timeout&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;等待超时（秒）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--no-wait&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;不等待启动完成&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--options&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-O&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;传递给 postgres 的选项&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;如果 PostgreSQL 已经运行，命令会提示，并打印现有 Postmaster 进程 PID，不会报错。&lt;/p&gt;
&lt;h3 id=&#34;pg-stop&#34;&gt;pg stop&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-stop&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;pg_ctl stop&lt;/code&gt; 命令停止 PostgreSQL 服务器。&lt;/p&gt;
&lt;p&gt;请注意如果 PostgreSQL 由 Patroni 管理，直接使用 &lt;code&gt;pg_ctl stop&lt;/code&gt; 停止数据库可能会导致 Patroni 认为数据库异常退出，自动重启或触发自动故障转移。建议在 Patroni 管理的环境中使用 &lt;code&gt;pig pt stop&lt;/code&gt; 或 &lt;code&gt;pig pt svc stop&lt;/code&gt; 来停止 patroni ，从而停止 PostgreSQL。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-4-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;pig pg stop                       &lt;span class=&#34;c1&#34;&gt;# 快速停止（默认）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg down                       &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg halt                       &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg stop -m smart              &lt;span class=&#34;c1&#34;&gt;# 等待客户端断开&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg stop -m immediate          &lt;span class=&#34;c1&#34;&gt;# 立即关闭&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg stop --plan                &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--mode&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-m&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;fast&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;关闭模式：smart/fast/immediate&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--timeout&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;60&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;等待超时（秒）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--no-wait&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;不等待关闭完成&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;只预览本地 &lt;code&gt;pg_ctl stop&lt;/code&gt; 计划，不执行&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;关闭模式说明：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;模式&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;smart&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;等待所有客户端断开后关闭&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;fast&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;回滚活动事务，断开客户端，正常关闭&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;immediate&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;立即终止所有进程，下次启动需要恢复&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pg-restart&#34;&gt;pg restart&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-restart&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;pg_ctl restart&lt;/code&gt; 重启 PostgreSQL 服务器。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-5-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;pig pg restart                    &lt;span class=&#34;c1&#34;&gt;# 快速重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg reboot                     &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg restart -m immediate       &lt;span class=&#34;c1&#34;&gt;# 立即重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg restart -O &lt;span class=&#34;s2&#34;&gt;&amp;#34;-p 5433&amp;#34;&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;# 使用新选项重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg restart --plan             &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt; 与 &lt;code&gt;pg stop&lt;/code&gt; 相同，另外支持 &lt;code&gt;--options&lt;/code&gt;（&lt;code&gt;-O&lt;/code&gt;）传递给 postgres。&lt;/p&gt;
&lt;h3 id=&#34;pg-reload&#34;&gt;pg reload&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-reload&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;pg_ctl reload&lt;/code&gt; 重载 PostgreSQL 配置。向服务器发送 SIGHUP 信号。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-6-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;pig pg reload                     &lt;span class=&#34;c1&#34;&gt;# 重载配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg hup                        &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg reload -D /data/pg18       &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;pg-status&#34;&gt;pg status&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-status&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;显示 PostgreSQL 服务器状态。此命令不仅显示 &lt;code&gt;pg_ctl status&lt;/code&gt; 的结果，还会显示 postgres 相关进程和 Pigsty 相关服务的状态。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-7&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-7&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-7-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;pig pg status                     &lt;span class=&#34;c1&#34;&gt;# 查看服务状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg st                         &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg status -D /data/pg18       &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;输出内容：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;pg_ctl status&lt;/code&gt; 输出（进程是否运行、PID 等）&lt;/li&gt;
&lt;li&gt;PostgreSQL 进程列表（&lt;code&gt;ps -u postgres&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;相关服务状态：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;postgres&lt;/code&gt;：PostgreSQL systemd 服务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;patroni&lt;/code&gt;：Patroni HA 管理服务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pgbouncer&lt;/code&gt;：连接池服务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pgbackrest&lt;/code&gt;：备份服务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vip-manager&lt;/code&gt;：VIP 管理服务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;haproxy&lt;/code&gt;：负载均衡服务&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;pg-promote&#34;&gt;pg promote&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-promote&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;pg_ctl promote&lt;/code&gt; 命令将备库提升为主库。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-8&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-8&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-8-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;pig pg promote                    &lt;span class=&#34;c1&#34;&gt;# 提升备库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg promote -D /data/pg18      &lt;span class=&#34;c1&#34;&gt;# 指定数据目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg promote --plan             &lt;span class=&#34;c1&#34;&gt;# 预览提升计划&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg promote -y                 &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--timeout&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;等待超时（秒）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--no-wait&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;不等待提升完成&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅预览提升计划&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;跳过确认提示&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pg-role&#34;&gt;pg role&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-role&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;检测 PostgreSQL 实例的角色（主库或备库）。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-9&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-9&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-9-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;pig pg role                       &lt;span class=&#34;c1&#34;&gt;# 输出：primary、replica 或 unknown&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg role -V                    &lt;span class=&#34;c1&#34;&gt;# 详细输出，显示检测过程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg role -D /data/pg18         &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--verbose&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-V&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示详细检测过程&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;输出说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;primary&lt;/code&gt;：当前实例为主库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;replica&lt;/code&gt;：当前实例为备库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unknown&lt;/code&gt;：无法确定实例角色&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;检测策略（按优先级）：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;进程检测&lt;/strong&gt;：检查 &lt;code&gt;walreceiver&lt;/code&gt;、&lt;code&gt;recovery&lt;/code&gt; 等进程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL 查询&lt;/strong&gt;：执行 &lt;code&gt;pg_is_in_recovery()&lt;/code&gt; 查询（需要 PostgreSQL 运行）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据目录检查&lt;/strong&gt;：检查 &lt;code&gt;standby.signal&lt;/code&gt;、&lt;code&gt;recovery.signal&lt;/code&gt;、&lt;code&gt;recovery.conf&lt;/code&gt; 文件&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;连接与查询命令&#34;&gt;连接与查询命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%bf%9e%e6%8e%a5%e4%b8%8e%e6%9f%a5%e8%af%a2%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pg-psql&#34;&gt;pg psql&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-psql&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;通过 psql 连接到 PostgreSQL 数据库。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-10&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-10&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-10-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;pig pg psql                       &lt;span class=&#34;c1&#34;&gt;# 连接到 postgres 数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg psql mydb                  &lt;span class=&#34;c1&#34;&gt;# 连接到指定数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg psql mydb -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT 1&amp;#34;&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;# 执行单条命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg psql -f script.sql         &lt;span class=&#34;c1&#34;&gt;# 执行 SQL 脚本文件&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--command&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;执行单条 SQL 命令&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--file&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;执行 SQL 脚本文件&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;如果指定全局 &lt;code&gt;-D/--data&lt;/code&gt;，&lt;code&gt;pg psql&lt;/code&gt; 会以数据库超级用户读取该数据目录下的 &lt;code&gt;postmaster.pid&lt;/code&gt;，并使用其中记录的端口和 Unix socket 目录连接该实例。若无法读取或解析 postmaster 信息，命令会直接失败，而不是静默连接到默认实例。&lt;/p&gt;
&lt;h3 id=&#34;pg-ps&#34;&gt;pg ps&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-ps&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;显示 PostgreSQL 当前连接。查询 &lt;code&gt;pg_stat_activity&lt;/code&gt; 视图。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-11&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-11&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-11-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;pig pg ps                         &lt;span class=&#34;c1&#34;&gt;# 显示客户端连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg ps -a                      &lt;span class=&#34;c1&#34;&gt;# 显示所有连接（包括系统进程）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg ps -u dbuser_monitor       &lt;span class=&#34;c1&#34;&gt;# 按用户筛选&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg ps -d meta                 &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--all&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-a&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示所有连接（包括系统进程）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--user&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-u&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;按用户筛选&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--database&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-d&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;按数据库筛选&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pg-kill&#34;&gt;pg kill&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-kill&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;终止 PostgreSQL 连接。&lt;strong&gt;默认为 dry-run 模式&lt;/strong&gt;，需要 &lt;code&gt;-x&lt;/code&gt; 参数才会实际执行。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-12&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;9&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-12&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-12-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;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt;                       &lt;span class=&#34;c1&#34;&gt;# 显示将被终止的连接（dry-run）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -x                    &lt;span class=&#34;c1&#34;&gt;# 实际终止连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; --pid &lt;span class=&#34;m&#34;&gt;12345&lt;/span&gt; -x        &lt;span class=&#34;c1&#34;&gt;# 终止指定 PID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -u admin -x           &lt;span class=&#34;c1&#34;&gt;# 终止指定用户的连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -d mydb -x            &lt;span class=&#34;c1&#34;&gt;# 终止指定数据库的连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -s idle -x            &lt;span class=&#34;c1&#34;&gt;# 终止空闲连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; --cancel -x           &lt;span class=&#34;c1&#34;&gt;# 取消查询而非终止连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; --watch &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt; -x           &lt;span class=&#34;c1&#34;&gt;# 每 5 秒重复执行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; --plan                &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--execute&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-x&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;实际执行（默认为 dry-run）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--pid&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;终止指定 PID&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--user&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-u&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;按用户筛选&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--database&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-d&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;按数据库筛选&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--state&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-s&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;按状态筛选（idle/active/idle in transaction）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--query&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-q&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;按查询模式筛选&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--all&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-a&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;包括复制连接&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--cancel&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;取消查询而非终止连接&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--watch&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;每 N 秒重复执行&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;预览执行计划，不终止连接&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;安全说明：&lt;/strong&gt; &lt;code&gt;--state&lt;/code&gt; 和 &lt;code&gt;--query&lt;/code&gt; 参数会进行标识符验证，只接受简单的字母数字模式，以防止 SQL 注入。&lt;/p&gt;
&lt;h3 id=&#34;pg-clone&#34;&gt;pg clone&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-clone&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;克隆数据库集群中的一个数据库，对于 PG 18 及以上版本优先使用 CoW 原地瞬间克隆&lt;/p&gt;
&lt;p&gt;在当前 PostgreSQL 实例内克隆一个数据库。该命令封装 &lt;code&gt;CREATE DATABASE ... TEMPLATE ... STRATEGY FILE_COPY&lt;/code&gt;，并会在克隆前终止源数据库上的现有会话，语义与 Pigsty 的 &lt;code&gt;pgsql-db clone&lt;/code&gt; 工作流一致。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-13&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-13&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-13-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;pig pg clone meta                       &lt;span class=&#34;c1&#34;&gt;# 克隆 meta 为 meta_1/meta_2/...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg clone meta meta_fork             &lt;span class=&#34;c1&#34;&gt;# 克隆为指定数据库名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg clone meta meta_fork --owner dba &lt;span class=&#34;c1&#34;&gt;# 尝试修改新库 owner&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg clone meta meta_fork --port &lt;span class=&#34;m&#34;&gt;5433&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 连接指定本地端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg clone meta meta_fork --plan      &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--port&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL 端口（默认 &lt;code&gt;5432&lt;/code&gt; 或 &lt;code&gt;$PG_PORT&lt;/code&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--conn-db&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;执行 &lt;code&gt;CREATE DATABASE&lt;/code&gt; 的连接库，克隆 &lt;code&gt;postgres&lt;/code&gt; 时默认 &lt;code&gt;template1&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--owner&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;克隆后尝试修改新库 owner&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--conn-limit&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;新库连接数限制（&lt;code&gt;-1&lt;/code&gt; 无限制，&lt;code&gt;0&lt;/code&gt; 禁止连接）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅显示执行计划&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;跳过确认提示&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;说明：&lt;/strong&gt; PostgreSQL 18+ 且 &lt;code&gt;file_copy_method=clone&lt;/code&gt; 可用时，数据库克隆可使用 CoW 语义；否则会退化为普通文件复制。该命令克隆的是单个数据库逻辑对象，不会创建新的 PostgreSQL 实例。&lt;/p&gt;
&lt;h2 id=&#34;数据库维护命令&#34;&gt;数据库维护命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%95%b0%e6%8d%ae%e5%ba%93%e7%bb%b4%e6%8a%a4%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pg-vacuum&#34;&gt;pg vacuum&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-vacuum&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;清理数据库表。封装 &lt;code&gt;vacuumdb&lt;/code&gt; 命令。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-14&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;7&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-14&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-14-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;pig pg vacuum                     &lt;span class=&#34;c1&#34;&gt;# 清理当前数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg vac                        &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg vacuum mydb                &lt;span class=&#34;c1&#34;&gt;# 清理指定数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg vacuum -a                  &lt;span class=&#34;c1&#34;&gt;# 清理所有数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg vacuum mydb -t mytable     &lt;span class=&#34;c1&#34;&gt;# 清理指定表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg vacuum mydb --schema myschema  &lt;span class=&#34;c1&#34;&gt;# 清理指定 schema 中的表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg vacuum mydb --full         &lt;span class=&#34;c1&#34;&gt;# VACUUM FULL（需要排他锁）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--all&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-a&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;处理所有数据库&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--schema&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;指定 schema&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--table&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;指定表名&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--verbose&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-V&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;详细输出&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--full&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-F&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;VACUUM FULL（需要排他锁）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;安全说明：&lt;/strong&gt; &lt;code&gt;--schema&lt;/code&gt; 和 &lt;code&gt;--table&lt;/code&gt; 参数会进行标识符验证，只接受有效的 PostgreSQL 标识符格式。&lt;/p&gt;
&lt;h3 id=&#34;pg-analyze&#34;&gt;pg analyze&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-analyze&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;分析数据库表以更新统计信息。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-15&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-15&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-15-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;pig pg analyze                    &lt;span class=&#34;c1&#34;&gt;# 分析当前数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg ana                        &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg analyze mydb               &lt;span class=&#34;c1&#34;&gt;# 分析指定数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg analyze -a                 &lt;span class=&#34;c1&#34;&gt;# 分析所有数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg analyze mydb -t mytable    &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--all&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-a&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;处理所有数据库&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--schema&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;指定 schema&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--table&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;指定表名&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--verbose&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-V&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;详细输出&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pg-freeze&#34;&gt;pg freeze&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-freeze&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;对数据库表执行冻结清理（vacuum freeze），防止事务 ID 回卷。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-16&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-16&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-16-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;pig pg freeze                     &lt;span class=&#34;c1&#34;&gt;# 冻结清理当前数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg freeze mydb                &lt;span class=&#34;c1&#34;&gt;# 冻结清理指定数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg freeze -a                  &lt;span class=&#34;c1&#34;&gt;# 冻结清理所有数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg freeze mydb -t mytable     &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt; 与 &lt;code&gt;pg vacuum&lt;/code&gt; 相同（不含 &lt;code&gt;--full&lt;/code&gt;）。&lt;/p&gt;
&lt;h3 id=&#34;pg-repack&#34;&gt;pg repack&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-repack&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;在线重整数据库表。需要安装 &lt;code&gt;pg_repack&lt;/code&gt; 扩展。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-17&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;7&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-17&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-17-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;pig pg repack mydb                &lt;span class=&#34;c1&#34;&gt;# 重整数据库中所有表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg rp mydb                    &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg repack -a                  &lt;span class=&#34;c1&#34;&gt;# 重整所有数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg repack mydb -t mytable     &lt;span class=&#34;c1&#34;&gt;# 重整指定表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg repack mydb --schema myschema  &lt;span class=&#34;c1&#34;&gt;# 重整指定 schema 中的表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg repack mydb -j &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;           &lt;span class=&#34;c1&#34;&gt;# 使用 4 个并行任务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg repack mydb --plan         &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--all&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-a&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;处理所有数据库&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--schema&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;指定 schema&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--table&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;指定表名&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--verbose&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-V&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;详细输出&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--jobs&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-j&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;并行任务数（默认 1）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示将被重整的表&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;参数调优命令&#34;&gt;参数调优命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%8f%82%e6%95%b0%e8%b0%83%e4%bc%98%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pg-tune&#34;&gt;pg tune&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-tune&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;根据当前 PostgreSQL 主版本、主机硬件资源和工作负载画像，生成一组推荐的 PostgreSQL 参数。默认自动探测 CPU、内存与数据盘容量，并以文本形式输出配置项。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-18&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;9&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-18&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-18-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;pig pg tune                       &lt;span class=&#34;c1&#34;&gt;# 自动探测硬件，使用 oltp 画像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tuning                     &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -p olap               &lt;span class=&#34;c1&#34;&gt;# 使用 OLAP 画像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -p tiny               &lt;span class=&#34;c1&#34;&gt;# 小规格实例&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -c &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; -m &lt;span class=&#34;m&#34;&gt;32768&lt;/span&gt; -d &lt;span class=&#34;m&#34;&gt;500&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 覆盖自动探测结果&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -C &lt;span class=&#34;m&#34;&gt;500&lt;/span&gt;                &lt;span class=&#34;c1&#34;&gt;# 覆盖 max_connections&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -R 0.30               &lt;span class=&#34;c1&#34;&gt;# 调整 shared_buffers 比例&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -o json               &lt;span class=&#34;c1&#34;&gt;# 结构化输出 JSON&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg tune -o yaml               &lt;span class=&#34;c1&#34;&gt;# 结构化输出 YAML&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;oltp&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;调优画像：&lt;code&gt;oltp&lt;/code&gt; / &lt;code&gt;olap&lt;/code&gt; / &lt;code&gt;tiny&lt;/code&gt; / &lt;code&gt;crit&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--cpu&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;0&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;CPU 核数，0 表示自动探测&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--mem&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-m&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;0&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;内存大小（MB），0 表示自动探测&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--disk&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-d&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;0&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;数据盘容量（GB），0 表示自动探测&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--max-conn&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-C&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;0&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;覆盖 &lt;code&gt;max_connections&lt;/code&gt;，0 表示使用画像默认值&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--shmem-ratio&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-R&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;0.25&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;shared_buffers&lt;/code&gt; 占内存比例，取值范围 &lt;code&gt;0.1 ~ 0.4&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;画像说明：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;画像&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;适用场景&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;特点&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;oltp&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;通用在线事务处理&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;平衡连接数、缓存与并行度&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;olap&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;分析型负载&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;更激进地使用并行与工作内存&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;tiny&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;小规格实例&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;控制内存占用与并行度&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;crit&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;延迟敏感场景&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;限制并行 gather，偏向稳态响应&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生成结果会随当前 PostgreSQL 主版本自动裁剪，例如 &lt;code&gt;io_workers&lt;/code&gt; 仅会在 PG 18+ 输出。&lt;/li&gt;
&lt;li&gt;文本输出可直接重定向到配置片段，结构化输出适合自动化脚本消费。&lt;/li&gt;
&lt;li&gt;该命令当前生成建议参数，不会直接修改数据库配置文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;实例-fork&#34;&gt;实例 Fork&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%ae%9e%e4%be%8b-fork&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pg-fork&#34;&gt;pg fork&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-fork&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;创建一个本地一次性 PostgreSQL 物理副本，适合临时分析、排障、恢复验证和开发测试。托管 fork 默认写入 &lt;code&gt;/pg/data-&amp;lt;name&amp;gt;&lt;/code&gt;，不会注册到 Pigsty、systemd 或 Patroni；显式指定 &lt;code&gt;--dst-data&lt;/code&gt; 时会创建非托管 fork，不会被 &lt;code&gt;fork list&lt;/code&gt; 枚举。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-19&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;10&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-19&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-19-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;pig pg fork dev                       &lt;span class=&#34;c1&#34;&gt;# 创建 /pg/data-dev，不启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork init dev --start          &lt;span class=&#34;c1&#34;&gt;# 创建后启动，端口从 15432 开始自动探测&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork init dev -s --dst-port &lt;span class=&#34;m&#34;&gt;15433&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;# 创建后在指定端口启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork init dev -D /pg/data2 --src-port &lt;span class=&#34;m&#34;&gt;15431&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 指定源目录与源端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork init dev --dst-data /tmp/dev    &lt;span class=&#34;c1&#34;&gt;# 创建非托管 fork&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork list                      &lt;span class=&#34;c1&#34;&gt;# 列出托管 fork&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork start dev                 &lt;span class=&#34;c1&#34;&gt;# 启动已有托管 fork&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork stop dev                  &lt;span class=&#34;c1&#34;&gt;# 停止已有托管 fork&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork rm dev --stop             &lt;span class=&#34;c1&#34;&gt;# 停止并删除运行中的 fork&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork init dev --plan           &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;创建选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dst-data&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/pg/data-&amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;非托管目标数据目录&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dst-port&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动探测&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;目标端口，从 15432 起寻找空闲端口&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--src-data&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/pg/data&lt;/code&gt; 或 &lt;code&gt;$PG_DATA&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;源数据目录；也可用全局 &lt;code&gt;pg -D/--data&lt;/code&gt; 设置&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--src-port&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;5432&lt;/code&gt; 或 &lt;code&gt;$PG_PORT&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;源端口&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--start&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-s&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;创建后启动 fork&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--force&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;覆盖已有且已停止的目标目录，并跳过确认&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--timeout&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;60&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;启动等待超时（秒）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;跳过确认提示&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;只显示执行计划，不执行&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;管理子命令：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;常用参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pg fork list&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;, &lt;code&gt;-o json/yaml&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出托管 fork&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pg fork start &amp;lt;name&amp;gt; or --dst-data &amp;lt;dir&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dst-data&lt;/code&gt;, &lt;code&gt;--dst-port&lt;/code&gt;, &lt;code&gt;-t/--timeout&lt;/code&gt;, &lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;启动已有 fork&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pg fork stop &amp;lt;name&amp;gt; or --dst-data &amp;lt;dir&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dst-data&lt;/code&gt;, &lt;code&gt;-m/--mode&lt;/code&gt;, &lt;code&gt;-t/--timeout&lt;/code&gt;, &lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;停止已有 fork&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pg fork rm &amp;lt;name&amp;gt; or --dst-data &amp;lt;dir&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dst-data&lt;/code&gt;, &lt;code&gt;--stop&lt;/code&gt;, &lt;code&gt;-m/--mode&lt;/code&gt;, &lt;code&gt;-t/--timeout&lt;/code&gt;, &lt;code&gt;-f/--force&lt;/code&gt;, &lt;code&gt;-y/--yes&lt;/code&gt;, &lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;删除 fork；运行中的 fork 需 &lt;code&gt;--stop&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;行为说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;源实例运行时，命令会使用 PostgreSQL 低级备份 API 创建一致的物理副本；源实例停止时，可执行冷复制。&lt;/li&gt;
&lt;li&gt;命令会优先使用 CoW/reflink；如果只能普通复制，会在交互模式中提示空间风险并等待确认。&lt;/li&gt;
&lt;li&gt;为避免误删源数据，目标目录不能是 &lt;code&gt;/&lt;/code&gt;、&lt;code&gt;/pg&lt;/code&gt;、源 PGDATA、自身父目录或子目录；软链接会先解析到真实路径再判断。&lt;/li&gt;
&lt;li&gt;复制完成后会清理 fork 中的运行态与复制状态，并写入 &lt;code&gt;fork.json&lt;/code&gt;。只有指定 &lt;code&gt;-s|--start&lt;/code&gt; 时才会启动新实例。&lt;/li&gt;
&lt;li&gt;托管 fork 必须通过名称管理；非托管 fork 需要通过 &lt;code&gt;--dst-data&lt;/code&gt; 指定目录来启动、停止或删除。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;列出 fork：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pig pg fork list&lt;/code&gt; 扫描 &lt;code&gt;/pg/data-*&lt;/code&gt; 并读取 &lt;code&gt;fork.json&lt;/code&gt;。文本状态只区分 &lt;code&gt;forked&lt;/code&gt; 与 &lt;code&gt;orphan&lt;/code&gt;，不实时判断实例是否正在运行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;结构化输出：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-20&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-20&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-20-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;pig pg fork init dev --plan -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg fork list -o json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;日志命令&#34;&gt;日志命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%97%a5%e5%bf%97%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;日志命令用于查看 PostgreSQL 日志文件。默认日志目录为 &lt;code&gt;/pg/log/postgres&lt;/code&gt;，可通过 &lt;code&gt;--log-dir&lt;/code&gt; 参数指定其他目录。默认 &lt;code&gt;pg log&lt;/code&gt; 动作显示最新 CSV 日志快照；使用 &lt;code&gt;pg log -f&lt;/code&gt; 或 &lt;code&gt;pg log tail&lt;/code&gt; 实时跟踪。只有 &lt;code&gt;pg log&lt;/code&gt; 与 &lt;code&gt;pg log show&lt;/code&gt; 支持 &lt;code&gt;-o json&lt;/code&gt; 将 CSV 日志行转换为 JSONL；日志快照不支持 &lt;code&gt;yaml&lt;/code&gt; 与 &lt;code&gt;json-pretty&lt;/code&gt;，follow/tail、&lt;code&gt;less&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt; 不支持结构化输出。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;日志命令全局参数：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--log-dir&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;日志目录路径（默认：&lt;code&gt;/pg/log/postgres&lt;/code&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--lines&lt;/code&gt; / &lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示行数（默认 50）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--follow&lt;/code&gt; / &lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;跟踪最新日志（仅 &lt;code&gt;pg log&lt;/code&gt; 父命令）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;权限处理：&lt;/strong&gt; 如果当前用户没有权限读取日志目录，命令会自动使用 &lt;code&gt;sudo&lt;/code&gt; 重试。&lt;/p&gt;
&lt;h3 id=&#34;pg-log&#34;&gt;pg log&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-log&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;显示最新日志快照；配合 &lt;code&gt;-f&lt;/code&gt; 时跟踪最新日志。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-21&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-21&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-21-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;pig pg log                        &lt;span class=&#34;c1&#34;&gt;# 显示最新 50 行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log -n &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt;                 &lt;span class=&#34;c1&#34;&gt;# 显示最新 100 行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log -f                     &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;pg-log-list&#34;&gt;pg log list&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-log-list&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;列出日志目录中的日志文件。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-22&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-22&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-22-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;pig pg log list                              &lt;span class=&#34;c1&#34;&gt;# 列出默认目录中的日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log ls                                &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log list --log-dir /var/log/postgres  &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;pg-log-tail&#34;&gt;pg log tail&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-log-tail&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;实时查看日志文件（类似 &lt;code&gt;tail -f&lt;/code&gt;）。默认查看最新的 CSV 日志文件。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-23&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-23&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-23-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;pig pg log tail                   &lt;span class=&#34;c1&#34;&gt;# 查看最新日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log t                      &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log f                      &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log tail postgresql.csv    &lt;span class=&#34;c1&#34;&gt;# 查看指定日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log tail -n &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;# 显示最后 100 行后开始跟踪&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log tail --log-dir /var/log/postgres  &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--lines&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;50&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示的行数&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--follow&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;兼容性 no-op；&lt;code&gt;tail&lt;/code&gt; 本身总是跟踪&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pg-log-show&#34;&gt;pg log show&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-log-show&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;输出日志文件内容。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-24&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-24&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-24-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;pig pg log show                   &lt;span class=&#34;c1&#34;&gt;# 输出最新日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log cat                    &lt;span class=&#34;c1&#34;&gt;# show 的别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log c                      &lt;span class=&#34;c1&#34;&gt;# show 的别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log show -n &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;# 输出最后 100 行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log show postgresql.csv    &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--lines&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;50&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示的行数&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pg-log-less&#34;&gt;pg log less&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-log-less&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;用 less 打开日志文件。默认定位到文件末尾（&lt;code&gt;+G&lt;/code&gt;）。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-25&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-25&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-25-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;pig pg log less                   &lt;span class=&#34;c1&#34;&gt;# 用 less 打开最新日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log vi                     &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log v                      &lt;span class=&#34;c1&#34;&gt;# 别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log less postgresql.csv    &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;pg-log-grep&#34;&gt;pg log grep&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-log-grep&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;搜索日志文件内容。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-26&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-26&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-26-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;pig pg log grep ERROR             &lt;span class=&#34;c1&#34;&gt;# 搜索 ERROR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log grep --ignore-case error  &lt;span class=&#34;c1&#34;&gt;# 忽略大小写&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log grep -C &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; ERROR        &lt;span class=&#34;c1&#34;&gt;# 显示上下文&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg log grep ERROR pg.csv      &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--ignore-case&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;忽略大小写&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--context&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-C&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示上下文行数&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;pg-svc-子命令&#34;&gt;pg svc 子命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pg-svc-%e5%ad%90%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pg svc&lt;/code&gt;（也可写作 &lt;code&gt;pg service&lt;/code&gt; 或 &lt;code&gt;pg s&lt;/code&gt;）提供通过 systemctl 管理 PostgreSQL 服务的功能：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-678f14de-fence-27&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-678f14de-fence-27&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-678f14de-fence-27-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;pig pg svc start                 &lt;span class=&#34;c1&#34;&gt;# 启动 postgres 服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg svc stop                  &lt;span class=&#34;c1&#34;&gt;# 停止 postgres 服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg svc restart               &lt;span class=&#34;c1&#34;&gt;# 重启 postgres 服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg svc reload                &lt;span class=&#34;c1&#34;&gt;# 重载 postgres 服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg svc status                &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;别名对照：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc start&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;boot, up&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc stop&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;halt, dn, down&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc restart&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;reboot, rt&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc reload&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rl, hup&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pg svc status&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;st, stat&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;设计说明&#34;&gt;设计说明&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%ae%be%e8%ae%a1%e8%af%b4%e6%98%8e&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;与原生工具的关系：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pig pg&lt;/code&gt; 并非对 PostgreSQL 原生工具的简单封装，而是针对常用操作的上层抽象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;服务控制命令（init/start/stop/restart/reload/promote）调用 &lt;code&gt;pg_ctl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt; 命令除了 &lt;code&gt;pg_ctl status&lt;/code&gt; 外，还显示进程和相关服务状态&lt;/li&gt;
&lt;li&gt;连接管理命令（psql/ps/kill）调用 &lt;code&gt;psql&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;clone 命令调用 SQL 创建数据库副本&lt;/li&gt;
&lt;li&gt;维护命令（vacuum/analyze）调用 &lt;code&gt;vacuumdb&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;repack 命令调用 &lt;code&gt;pg_repack&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;fork 命令使用 PostgreSQL 低级备份 API 与本地文件复制创建一次性物理副本&lt;/li&gt;
&lt;li&gt;日志命令调用 &lt;code&gt;tail&lt;/code&gt;、&lt;code&gt;less&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt; 等系统工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg svc&lt;/code&gt; 命令调用 &lt;code&gt;systemctl&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如需使用原生工具的完整功能，可直接调用相应命令。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;权限处理：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果当前用户已是 DBSU：直接执行命令&lt;/li&gt;
&lt;li&gt;如果当前用户是 root：使用 &lt;code&gt;su - postgres -c &amp;quot;...&amp;quot;&lt;/code&gt; 执行&lt;/li&gt;
&lt;li&gt;其他用户：使用 &lt;code&gt;sudo -inu postgres -- ...&lt;/code&gt; 执行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;安全性考虑：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--state&lt;/code&gt;、&lt;code&gt;--query&lt;/code&gt;、&lt;code&gt;--schema&lt;/code&gt;、&lt;code&gt;--table&lt;/code&gt; 等参数都经过标识符验证，防止 SQL 注入&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg kill&lt;/code&gt; 默认为 dry-run 模式，避免误操作&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg clone&lt;/code&gt; 会终止源数据库现有会话，建议在维护窗口使用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg fork&lt;/code&gt; 会拒绝危险目标路径；普通复制 fallback 会提示空间风险&lt;/li&gt;
&lt;li&gt;日志命令在权限不足时自动使用 sudo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;平台支持：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;此命令专为 Linux 系统设计，部分功能依赖 &lt;code&gt;systemctl&lt;/code&gt;。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>命令：build</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/build/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/build/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;pig build&lt;/code&gt; 命令是一个强大的工具，简化了从源码构建 PostgreSQL 扩展的整个工作流程。它提供了完整的构建基础设施设置、依赖管理，以及标准和自定义 PostgreSQL 扩展在不同操作系统上的编译环境。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;20&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-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;pig build - Build Postgres Extension
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Environment Setup:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build spec                   &lt;span class=&#34;c1&#34;&gt;# init build spec and directory (~ext)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build repo                   &lt;span class=&#34;c1&#34;&gt;# init build repo (=repo set -ru)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build repo --beta            &lt;span class=&#34;c1&#34;&gt;# init build repo with PostgreSQL beta repo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build tool  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;mini&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;full&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# init build toolset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build rust  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-y&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-m&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# install Rust toolchain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build pgrx  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-v &amp;lt;ver&amp;gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-b&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# install &amp;amp; init pgrx (0.19.1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build proxy &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;id@host:port &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# init build proxy (optional)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Package Building:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build pkg   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;pkg...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# complete pipeline: get + dep + ext&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build get   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;pkg...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# download extension source tarball&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build dep   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;pkg...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# install extension build dependencies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build ext   &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;pkg...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# build extension package&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Quick Start:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build spec                   &lt;span class=&#34;c1&#34;&gt;# setup build spec and directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig build pkg citus              &lt;span class=&#34;c1&#34;&gt;# build citus extension&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;备注&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build spec&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;初始化构建规范目录&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build repo&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;初始化所需仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build tool&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;初始化构建工具&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build rust&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;安装 Rust 工具链&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build pgrx&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;安装并初始化 pgrx&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build proxy&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;初始化构建代理&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build get&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;下载源代码 tarball&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build dep&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;安装扩展构建依赖&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build ext&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;构建扩展包&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;build pkg&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;完整构建流程：get、dep、ext&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;需要 sudo 或 root 权限&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;设置构建环境并构建扩展的最快方式：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;9&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-1-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;&lt;span class=&#34;c1&#34;&gt;# 步骤 1：初始化构建规范&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build spec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 步骤 2：构建扩展（完整流程）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg citus
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 构建的包将位于：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# - EL: ~/ext/pkg/（同时可从 ~/rpmbuild/RPMS/ 访问）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# - Debian: ~/ext/pkg/（同时可从 ~/debbuild/DEBS/ 访问）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;更精细的控制方式：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;12&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-2-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;&lt;span class=&#34;c1&#34;&gt;# 设置环境&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build spec                   &lt;span class=&#34;c1&#34;&gt;# 初始化构建规范&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build repo                   &lt;span class=&#34;c1&#34;&gt;# 设置仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build tool                   &lt;span class=&#34;c1&#34;&gt;# 安装构建工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 构建过程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get citus              &lt;span class=&#34;c1&#34;&gt;# 下载源码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build dep citus              &lt;span class=&#34;c1&#34;&gt;# 安装依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build ext citus              &lt;span class=&#34;c1&#34;&gt;# 构建包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 或一次完成所有三个步骤&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg citus              &lt;span class=&#34;c1&#34;&gt;# get + dep + ext&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;构建基础设施&#34;&gt;构建基础设施&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%9e%84%e5%bb%ba%e5%9f%ba%e7%a1%80%e8%ae%be%e6%96%bd&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;目录结构&#34;&gt;目录结构&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;&#34; data-td-line-count=&#34;19&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;~/ext/                           # 真实工作目录
├── pkg/                         # 构建产物输出目录
├── src/                         # 源码 tarball 下载目录
├── log/                         # 构建日志目录
└── tmp/                         # 临时目录

~/rpmbuild/                      # EL 构建目录
├── RPMS -&amp;gt; ~/ext/pkg            # RPM 产物软链接
├── SOURCES -&amp;gt; ~/ext/src         # 源码软链接
├── SPECS/
├── BUILD/
├── BUILDROOT/
└── SRPMS/

~/debbuild/                      # Debian / Ubuntu 构建目录
├── DEBS -&amp;gt; ~/ext/pkg            # DEB 产物软链接
├── SOURCES -&amp;gt; ~/ext/src         # 源码软链接
├── SPECS/
└── BUILD/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;构建输出位置：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;EL 系统&lt;/strong&gt;：&lt;code&gt;~/ext/pkg/&lt;/code&gt;，并通过 &lt;code&gt;~/rpmbuild/RPMS/&lt;/code&gt; 软链接访问&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debian 系统&lt;/strong&gt;：&lt;code&gt;~/ext/pkg/&lt;/code&gt;，并通过 &lt;code&gt;~/debbuild/DEBS/&lt;/code&gt; 软链接访问&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;build-spec&#34;&gt;build spec&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-spec&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;设置构建规范与目录结构。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-4-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;pig build spec                   &lt;span class=&#34;c1&#34;&gt;# 在默认位置初始化 ~/ext&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build spec -f                &lt;span class=&#34;c1&#34;&gt;# 强制重新下载构建规范 tarball&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build spec -m                &lt;span class=&#34;c1&#34;&gt;# 优先使用 pigsty.cc 中国镜像&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;功能：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载 RPM 或 DEB 构建规范 tarball&lt;/li&gt;
&lt;li&gt;创建 &lt;code&gt;~/ext/{pkg,src,log,tmp}&lt;/code&gt; 与平台构建目录&lt;/li&gt;
&lt;li&gt;将 &lt;code&gt;RPMS/DEBS&lt;/code&gt; 与 &lt;code&gt;SOURCES&lt;/code&gt; 软链接到 &lt;code&gt;~/ext/pkg&lt;/code&gt; 和 &lt;code&gt;~/ext/src&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;通过增量 &lt;code&gt;rsync&lt;/code&gt; 同步 makefile、spec 与 Debian 打包文件&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;工作目录：&lt;/strong&gt; 默认使用 &lt;code&gt;~/ext/&lt;/code&gt; 保存源码、产物、日志与临时文件；平台打包目录为 &lt;code&gt;~/rpmbuild/&lt;/code&gt; 或 &lt;code&gt;~/debbuild/&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;build-repo&#34;&gt;build repo&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-repo&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;初始化构建扩展所需的包仓库。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-5-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;pig build repo                   &lt;span class=&#34;c1&#34;&gt;# 等同于：pig repo set -ru&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build repo -m                &lt;span class=&#34;c1&#34;&gt;# 使用中国镜像（PGDG 首选腾讯云）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build repo -b                &lt;span class=&#34;c1&#34;&gt;# 包含 PostgreSQL beta 仓库&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;功能：&lt;/strong&gt; 以 &lt;code&gt;pig repo set -ru&lt;/code&gt; 初始化构建所需仓库：移除旧仓库、添加所需仓库并更新包缓存。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-m|--mirror&lt;/code&gt;：优先使用中国镜像（PGDG 首选腾讯云）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b|--beta&lt;/code&gt;：包含 PostgreSQL beta 仓库模块，当前用于 PG19 beta 构建&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;build-tool&#34;&gt;build tool&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-tool&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;安装必要的开发工具和编译器。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-6-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;pig build tool                   &lt;span class=&#34;c1&#34;&gt;# 安装默认工具集&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build tool mini              &lt;span class=&#34;c1&#34;&gt;# 最小工具集&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build tool full              &lt;span class=&#34;c1&#34;&gt;# 完整工具集&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build tool rust              &lt;span class=&#34;c1&#34;&gt;# 添加 Rust 开发工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build tool -b                &lt;span class=&#34;c1&#34;&gt;# 包含 PostgreSQL beta 构建包&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;工具包：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;最小（&lt;code&gt;mini&lt;/code&gt;）：&lt;/strong&gt; GCC/Clang 编译器、Make 和构建必需品、PostgreSQL 开发头文件、基本库&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;默认：&lt;/strong&gt; 所有最小工具、额外编译器（g++、clang++）、开发库、打包工具（rpmbuild、dpkg-dev）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完整（&lt;code&gt;full&lt;/code&gt;）：&lt;/strong&gt; 所有默认工具、语言特定工具（Python、Perl、Ruby 开发）、高级调试工具、性能分析工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 EL 系统上，默认工具集会安装稳定活跃 PostgreSQL 主版本对应的显式 devel/server 包；需要当前 beta 主版本时使用 &lt;code&gt;--beta&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;build-rust&#34;&gt;build rust&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-rust&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;安装 Rust 编程语言工具链，基于 Rust 的扩展所需。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-7&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-7&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-7-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;pig build rust                   &lt;span class=&#34;c1&#34;&gt;# 带确认安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build rust -y                &lt;span class=&#34;c1&#34;&gt;# 强制重新安装 Rust 工具链&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build rust -m                &lt;span class=&#34;c1&#34;&gt;# 使用 rsproxy.cn 与 Cargo 镜像配置&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;安装内容：&lt;/strong&gt; Rust 编译器（rustc）、Cargo 包管理器、Rust 标准库、开发工具。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-y|--yes&lt;/code&gt;：即使 Cargo 已存在也强制重新安装 Rust&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-m|--mirror&lt;/code&gt;：从中国镜像下载 &lt;code&gt;rustup&lt;/code&gt;，并写入面向 &lt;code&gt;rsproxy.cn&lt;/code&gt; 的 &lt;code&gt;~/.cargo/config.toml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;build-pgrx&#34;&gt;build pgrx&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-pgrx&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;安装并初始化 PGRX（Rust 的 PostgreSQL 扩展框架）。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-8&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-8&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-8-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;pig build pgrx                   &lt;span class=&#34;c1&#34;&gt;# 安装最新稳定版 (0.19.1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pgrx -v 0.19.1         &lt;span class=&#34;c1&#34;&gt;# 安装特定版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pgrx --pg 18,17,16     &lt;span class=&#34;c1&#34;&gt;# 为指定 PG 版本初始化 pgrx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pgrx --pg init         &lt;span class=&#34;c1&#34;&gt;# 只执行 cargo pgrx init，不传 PG 参数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pgrx -b                &lt;span class=&#34;c1&#34;&gt;# 自动探测时包含 beta PostgreSQL pg_config&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;前提条件：&lt;/strong&gt; 必须先安装 Rust 工具链、PostgreSQL 开发头文件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-v|--pgrx&lt;/code&gt;：要安装的 cargo-pgrx 版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--pg&lt;/code&gt;：逗号分隔的 PostgreSQL 主版本，&lt;code&gt;init&lt;/code&gt; 表示不传 PostgreSQL 参数，留空则自动探测&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b|--beta&lt;/code&gt;：自动探测时包含当前 beta 主版本&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;build-proxy&#34;&gt;build proxy&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-proxy&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;为受限互联网访问的构建环境设置代理配置。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-9&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-9&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-9-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;pig build proxy                  &lt;span class=&#34;c1&#34;&gt;# 交互式设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build proxy user@host:8080   &lt;span class=&#34;c1&#34;&gt;# 使用默认本地端口 127.0.0.1:12345&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build proxy user@host:8080 127.0.0.1:1080&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;build-get&#34;&gt;build get&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-get&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;下载扩展源代码 tarball。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-10&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-10&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-10-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;pig build get citus              &lt;span class=&#34;c1&#34;&gt;# 单个扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get citus pgvector     &lt;span class=&#34;c1&#34;&gt;# 多个扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get pdu pgdog          &lt;span class=&#34;c1&#34;&gt;# 使用内置源码 alias&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get citus -f           &lt;span class=&#34;c1&#34;&gt;# 已存在时仍重新下载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get citus -m           &lt;span class=&#34;c1&#34;&gt;# 优先使用 pigsty.cc 中国镜像&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;pig build get&lt;/code&gt; 的参数是扩展名、包名或源码文件名；未知名称会按源码文件名处理。它不会把 &lt;code&gt;all&lt;/code&gt; 或 &lt;code&gt;std&lt;/code&gt; 展开为内置集合。需要批量下载时，请显式列出目标包名。&lt;/p&gt;
&lt;p&gt;一些源码包并不直接对应扩展名，&lt;code&gt;pig build get&lt;/code&gt; 内置了特殊 alias 以便直接下载源码。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-11&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-11&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-11-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;pig build get pdu                &lt;span class=&#34;c1&#34;&gt;# 下载 pdu-3.0.25.12.tar.gz&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get pgdog              &lt;span class=&#34;c1&#34;&gt;# 下载 pgdog-0.1.32.tar.gz&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get pgedge-17          &lt;span class=&#34;c1&#34;&gt;# 下载 PostgreSQL 17 与 pgEdge 套件源码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get babelfish-18       &lt;span class=&#34;c1&#34;&gt;# 下载 Babelfish PG18 源码包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get orioledb-16        &lt;span class=&#34;c1&#34;&gt;# 下载 OrioleDB 与 PG16 patch bundle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build get onesparse          &lt;span class=&#34;c1&#34;&gt;# 同时下载 onesparse、graphblas、lagraph&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;当前常见的特殊源码 alias 包括：&lt;code&gt;babelfish&lt;/code&gt; / &lt;code&gt;babelfish-17&lt;/code&gt; / &lt;code&gt;babelfish-18&lt;/code&gt;、&lt;code&gt;ivorysql&lt;/code&gt;、&lt;code&gt;orioledb&lt;/code&gt; / &lt;code&gt;orioledb-16&lt;/code&gt; / &lt;code&gt;orioledb-17&lt;/code&gt; / &lt;code&gt;orioledb-18&lt;/code&gt;、&lt;code&gt;cloudberry&lt;/code&gt; / &lt;code&gt;cloudberry-backup&lt;/code&gt; / &lt;code&gt;cloudberry-pxf&lt;/code&gt;、&lt;code&gt;pgedge&lt;/code&gt; / &lt;code&gt;pgedge-15&lt;/code&gt; / &lt;code&gt;pgedge-16&lt;/code&gt; / &lt;code&gt;pgedge-17&lt;/code&gt; / &lt;code&gt;pgedge-18&lt;/code&gt;、&lt;code&gt;polardb&lt;/code&gt;、&lt;code&gt;polarstore&lt;/code&gt;、&lt;code&gt;zlog&lt;/code&gt;、&lt;code&gt;pdu&lt;/code&gt;、&lt;code&gt;pgdog&lt;/code&gt;、&lt;code&gt;rdkit&lt;/code&gt;、&lt;code&gt;onesparse&lt;/code&gt;、&lt;code&gt;libpgfeutils&lt;/code&gt;、&lt;code&gt;libfq&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;build-dep&#34;&gt;build dep&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-dep&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;安装构建扩展所需的依赖。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-12&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-12&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-12-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;pig build dep citus              &lt;span class=&#34;c1&#34;&gt;# 单个扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build dep citus pgvector     &lt;span class=&#34;c1&#34;&gt;# 多个扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build dep citus --pg 17,16   &lt;span class=&#34;c1&#34;&gt;# 为特定 PG 版本&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--pg&lt;/code&gt;：指定一个或多个 PostgreSQL 大版本；未指定时按扩展元数据或本机安装自动推断&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;build-ext&#34;&gt;build ext&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-ext&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;编译扩展并创建安装包。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-13&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-13&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-13-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;pig build ext citus              &lt;span class=&#34;c1&#34;&gt;# 构建单个扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build ext citus pgvector     &lt;span class=&#34;c1&#34;&gt;# 构建多个&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build ext citus --pg &lt;span class=&#34;m&#34;&gt;17&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;# 为特定 PG 版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build ext citus -s           &lt;span class=&#34;c1&#34;&gt;# 包含调试符号（仅 RPM）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--pg&lt;/code&gt;：指定一个或多个 PostgreSQL 大版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-s|--symbol&lt;/code&gt;：构建调试符号包（仅 RPM）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;build-pkg&#34;&gt;build pkg&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#build-pkg&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;执行完整的构建流程：下载、依赖和构建。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-14&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-14&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-14-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;pig build pkg citus              &lt;span class=&#34;c1&#34;&gt;# 构建单个扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg citus pgvector     &lt;span class=&#34;c1&#34;&gt;# 构建多个&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg citus --pg 17,16   &lt;span class=&#34;c1&#34;&gt;# 为多个 PG 版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg citus -s           &lt;span class=&#34;c1&#34;&gt;# 包含调试符号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg citus -m           &lt;span class=&#34;c1&#34;&gt;# 优先使用 pigsty.cc 中国镜像下载源码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg cloudberry         &lt;span class=&#34;c1&#34;&gt;# 按顺序构建 cloudberry、backup、pxf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--pg&lt;/code&gt;：指定一个或多个 PostgreSQL 大版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-s|--symbol&lt;/code&gt;：构建调试符号包（仅 RPM）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-m|--mirror&lt;/code&gt;：下载源码时优先使用 &lt;code&gt;pigsty.cc&lt;/code&gt; 镜像&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;pig build pkg cloudberry&lt;/code&gt; 是套件构建流程：先下载完整 Cloudberry 源码包，构建并安装本地核心产物，然后继续构建 &lt;code&gt;cloudberry-backup&lt;/code&gt; 与 &lt;code&gt;cloudberry-pxf&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;常见工作流&#34;&gt;常见工作流&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%b8%b8%e8%a7%81%e5%b7%a5%e4%bd%9c%e6%b5%81&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;工作流-1构建标准扩展&#34;&gt;工作流 1：构建标准扩展&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%b7%a5%e4%bd%9c%e6%b5%81-1%e6%9e%84%e5%bb%ba%e6%a0%87%e5%87%86%e6%89%a9%e5%b1%95&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-15&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-15&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-15-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;&lt;span class=&#34;c1&#34;&gt;# 1. 设置构建环境（一次性）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build spec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build repo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build tool
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 构建扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg pg_partman
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 安装构建的包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpm -ivh ~/ext/pkg/pg_partman*.rpm  &lt;span class=&#34;c1&#34;&gt;# EL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dpkg -i ~/ext/pkg/*partman*.deb     &lt;span class=&#34;c1&#34;&gt;# Debian&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;工作流-2构建-rust-扩展&#34;&gt;工作流 2：构建 Rust 扩展&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%b7%a5%e4%bd%9c%e6%b5%81-2%e6%9e%84%e5%bb%ba-rust-%e6%89%a9%e5%b1%95&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-16&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-16&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-16-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;&lt;span class=&#34;c1&#34;&gt;# 1. 设置 Rust 环境&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build spec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build tool
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build rust                   &lt;span class=&#34;c1&#34;&gt;# 如需强制重装可追加 -y&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pgrx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 构建 Rust 扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg pgmq
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pig ext add pgmq&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;工作流-3构建多个版本&#34;&gt;工作流 3：构建多个版本&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%b7%a5%e4%bd%9c%e6%b5%81-3%e6%9e%84%e5%bb%ba%e5%a4%9a%e4%b8%aa%e7%89%88%e6%9c%ac&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-17&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;7&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-17&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-17-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;&lt;span class=&#34;c1&#34;&gt;# 为多个 PostgreSQL 版本构建扩展&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build pkg citus --pg 15,16,17
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 结果为每个版本生成包：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# citus_15-*.rpm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# citus_16-*.rpm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# citus_17-*.rpm&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;故障排除&#34;&gt;故障排除&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%95%85%e9%9a%9c%e6%8e%92%e9%99%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;找不到构建工具&#34;&gt;找不到构建工具&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%89%be%e4%b8%8d%e5%88%b0%e6%9e%84%e5%bb%ba%e5%b7%a5%e5%85%b7&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-18&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-18&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-18-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;&lt;span class=&#34;c1&#34;&gt;# 安装构建工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build tool
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 对于特定编译器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dnf groupinstall &lt;span class=&#34;s2&#34;&gt;&amp;#34;Development Tools&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# EL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install build-essential          &lt;span class=&#34;c1&#34;&gt;# Debian&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;缺少依赖&#34;&gt;缺少依赖&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%bc%ba%e5%b0%91%e4%be%9d%e8%b5%96&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-19&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;7&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-19&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-19-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;&lt;span class=&#34;c1&#34;&gt;# 安装扩展依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig build dep &amp;lt;extension&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 检查错误消息以了解特定包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 如需要，手动安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dnf install &amp;lt;package&amp;gt;  &lt;span class=&#34;c1&#34;&gt;# EL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install &amp;lt;package&amp;gt;  &lt;span class=&#34;c1&#34;&gt;# Debian&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;找不到-postgresql-头文件&#34;&gt;找不到 PostgreSQL 头文件&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%89%be%e4%b8%8d%e5%88%b0-postgresql-%e5%a4%b4%e6%96%87%e4%bb%b6&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-20&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-20&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-20-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;&lt;span class=&#34;c1&#34;&gt;# 安装 PostgreSQL 开发包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pig ext install pg18-devel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 或指定 pg_config 路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PG_CONFIG&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/pgsql-18/bin/pg_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;rustpgrx-问题&#34;&gt;Rust/PGRX 问题&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#rustpgrx-%e9%97%ae%e9%a2%98&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d7398d9c-fence-21&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;8&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-d7398d9c-fence-21&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d7398d9c-fence-21-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;&lt;span class=&#34;c1&#34;&gt;# 重新安装 Rust&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl --proto &lt;span class=&#34;s1&#34;&gt;&amp;#39;=https&amp;#39;&lt;/span&gt; --tlsv1.2 -sSf https://sh.rustup.rs &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 更新 PGRX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install --locked cargo-pgrx@0.19.1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 重新初始化 PGRX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo pgrx init&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;扩展构建矩阵&#34;&gt;扩展构建矩阵&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%89%a9%e5%b1%95%e6%9e%84%e5%bb%ba%e7%9f%a9%e9%98%b5&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;常见构建的扩展&#34;&gt;常见构建的扩展&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%b8%b8%e8%a7%81%e6%9e%84%e5%bb%ba%e7%9a%84%e6%89%a9%e5%b1%95&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;扩展&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;类型&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;构建时间&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;复杂度&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;特殊要求&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pg_repack&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;C&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;快速&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;简单&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;无&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pg_partman&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;SQL/PLPGSQL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;快速&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;简单&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;无&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;citus&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;C&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;中等&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;中等&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;无&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;timescaledb&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;C&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;慢&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;复杂&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;CMake&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;postgis&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;C&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;非常慢&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;复杂&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;GDAL、GEOS、Proj&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pg_duckdb&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;C++&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;中等&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;中等&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;C++17 编译器&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgroonga&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;C&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;中等&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;中等&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Groonga 库&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgvector&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;C&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;快速&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;简单&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;无&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;plpython3&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;C&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;中等&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;中等&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Python 开发&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgrx 扩展&lt;/td&gt;
      &lt;td style=&#34;text-align: center&#34;&gt;Rust&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;慢&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;复杂&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Rust、PGRX&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>pig inventory</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/inventory/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/inventory/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;pig inventory&lt;/code&gt; 命令组（别名 &lt;code&gt;pig inv&lt;/code&gt;）自 v1.6.0 起提供，用于以&lt;strong&gt;无损&lt;/strong&gt;方式检视、编辑、校验与体检 Pigsty 配置清单（&lt;code&gt;pigsty.yml&lt;/code&gt;），并可通过实验性的 &lt;code&gt;cmdb&lt;/code&gt; 子命令与 PostgreSQL CMDB 交换配置。&lt;/p&gt;
&lt;p&gt;无损引擎会逐字节保留 YAML 的注释、格式、键序、锚点与换行风格；&lt;code&gt;edit&lt;/code&gt; 在写盘前重新解析整个文档并原子写入，&lt;strong&gt;非法 YAML 不可能落盘&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3bd8904b-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;17&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-3bd8904b-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3bd8904b-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;Inspect, edit, validate, check, and exchange Pigsty Inventory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Usage:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig inventory &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;command&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Aliases:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  inventory, inv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Available Commands:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  check       Check Inventory, controller, and opt-in target readiness
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  cmdb        Exchange Inventory with Pigsty&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;s existing PostgreSQL CMDB &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;experimental&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  diff        Compare declarations without emitting Inventory values
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  edit        Edit Inventory or one selected YAML fragment
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  list        List ordered Inventory topology and value kinds
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  show        Show verbatim Inventory YAML &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;may contain secrets&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  status      Inspect the active Inventory &lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; without executing it
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  validate    Validate one &lt;span class=&#34;nb&#34;&gt;complete&lt;/span&gt; static Pigsty Inventory&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;inv status&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;检视当前生效的清单来源（不执行清单）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;inv list&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出清单拓扑与取值类型（&lt;code&gt;--depth&lt;/code&gt; 限制深度）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;inv show&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;原样显示清单 YAML（&lt;strong&gt;可能包含敏感信息&lt;/strong&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;inv edit&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;e&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;在 &lt;code&gt;$EDITOR&lt;/code&gt; 中编辑清单或选中片段&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;inv validate&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;v&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;校验一份完整的静态 Pigsty 清单&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;inv check&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ck&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;检查清单、控制器与目标节点就绪状态&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;inv diff&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;对比两份清单的声明差异（不输出取值）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;inv cmdb&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;与 PostgreSQL CMDB 交换配置（&lt;strong&gt;实验性&lt;/strong&gt;）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;清单路径默认取自 pig 的配置解析（&lt;code&gt;-i/--inventory&lt;/code&gt; 全局参数或 Pigsty 安装目录），
所有命令支持 &lt;code&gt;-o json|yaml&lt;/code&gt; 结构化输出。&lt;/p&gt;
&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3bd8904b-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-3bd8904b-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3bd8904b-fence-1-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;pig inventory status                     &lt;span class=&#34;c1&#34;&gt;# 当前生效的清单来源是什么？&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory list                       &lt;span class=&#34;c1&#34;&gt;# 浏览清单拓扑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory edit pg-meta               &lt;span class=&#34;c1&#34;&gt;# 只编辑 pg-meta 集群片段&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory validate                   &lt;span class=&#34;c1&#34;&gt;# 全量校验&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory check -p ssh --sudo        &lt;span class=&#34;c1&#34;&gt;# 附加 SSH/sudo 就绪探测&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory diff /path/other.yml       &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;选择器&#34;&gt;选择器&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e9%80%89%e6%8b%a9%e5%99%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;list&lt;/code&gt; / &lt;code&gt;show&lt;/code&gt; / &lt;code&gt;edit&lt;/code&gt; 接受可选的&lt;strong&gt;选择器&lt;/strong&gt;参数，定位清单中的一个片段：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3bd8904b-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-3bd8904b-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3bd8904b-fence-2-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;pig inv e                                &lt;span class=&#34;c1&#34;&gt;# 整个清单&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv e vars                           &lt;span class=&#34;c1&#34;&gt;# all.vars 全局参数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv e pg-meta                        &lt;span class=&#34;c1&#34;&gt;# 一个集群分组&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv e pg-meta.vars.pg_databases      &lt;span class=&#34;c1&#34;&gt;# 嵌套键路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv e &lt;span class=&#34;s1&#34;&gt;&amp;#39;pg-meta.hosts[&amp;#34;10.10.10.10&amp;#34;]&amp;#39;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 含点的键（如 IP）用引号方括号&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;inv-edit&#34;&gt;inv edit&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#inv-edit&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;在 &lt;code&gt;$EDITOR&lt;/code&gt; 中打开选中片段，保存退出后 pig 会：重新应用缩进与换行 → &lt;strong&gt;重新解析整个文档&lt;/strong&gt;
（失败则中止并保留临时文件）→ 检查磁盘上的文件在编辑期间是否被并发修改 → 原子写入。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3bd8904b-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-3bd8904b-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3bd8904b-fence-3-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;pig inventory edit                       &lt;span class=&#34;c1&#34;&gt;# 编辑整个清单&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv e pg-meta                        &lt;span class=&#34;c1&#34;&gt;# 编辑一个片段&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv e vars --from vars.yml           &lt;span class=&#34;c1&#34;&gt;# 从文件（或 stdin：-）替换选中片段&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--from&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;从常规文件或 stdin（&lt;code&gt;-&lt;/code&gt;）替换选中片段，跳过编辑器&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：编辑成功后，pig 会把清单文件权限收紧为 &lt;code&gt;0600&lt;/code&gt;（清单可能包含数据库密码等敏感信息），
结果中的 &lt;code&gt;mode_tightened&lt;/code&gt; 字段会予以提示。如有其他用户或工具直接读取该文件，请相应调整权限或属主。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;inv-validate&#34;&gt;inv validate&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#inv-validate&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;校验一份完整的静态 Pigsty 清单：YAML 结构、Ansible 约定与 Pigsty 语义（如 &lt;code&gt;admin_ip&lt;/code&gt;、&lt;code&gt;infra&lt;/code&gt;
分组、主机 IPv4 键等）逐层检查，诊断信息不回显敏感取值。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3bd8904b-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-3bd8904b-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3bd8904b-fence-4-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;pig inventory validate                   &lt;span class=&#34;c1&#34;&gt;# 校验当前清单&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv v ./pigsty.yml                   &lt;span class=&#34;c1&#34;&gt;# 校验指定文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv v --strict                       &lt;span class=&#34;c1&#34;&gt;# 警告视为失败&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv v --ansible                      &lt;span class=&#34;c1&#34;&gt;# 额外用 ansible-inventory 交叉解析&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv v --strict -o json               &lt;span class=&#34;c1&#34;&gt;# 结构化输出（CI 友好）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--strict&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;把校验警告当作失败&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--ansible&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;额外使用带边界的 &lt;code&gt;ansible-inventory&lt;/code&gt; 适配器交叉解析&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--timeout&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--ansible&lt;/code&gt; 兼容性校验超时（默认 10s）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;validate&lt;/code&gt; 是 &lt;strong&gt;Pigsty 语义校验器&lt;/strong&gt;，不是通用 Ansible linter；其规则与 Pigsty 自带的&lt;code&gt;bin/validate&lt;/code&gt; 保持对齐（个别地方更严格）。此外，清单解析对&lt;strong&gt;重复键&lt;/strong&gt;与&lt;strong&gt;多文档 YAML&lt;/strong&gt;
直接拒绝——此类文件连 &lt;code&gt;show&lt;/code&gt; / &lt;code&gt;edit&lt;/code&gt; 都无法使用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;inv-check&#34;&gt;inv check&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#inv-check&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;在静态校验之上做就绪体检：默认只检查清单与控制器本地条件，可用 &lt;code&gt;--profile&lt;/code&gt; 追加探测。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3bd8904b-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-3bd8904b-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3bd8904b-fence-5-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;pig inventory check                      &lt;span class=&#34;c1&#34;&gt;# 清单 + 控制器基础检查&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv ck -p ansible                    &lt;span class=&#34;c1&#34;&gt;# 追加 ansible 环境检查&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv ck -p network                    &lt;span class=&#34;c1&#34;&gt;# 追加网络可达性探测&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv ck -p ssh --user admin           &lt;span class=&#34;c1&#34;&gt;# 追加 SSH 登录探测&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inv ck -p ssh --sudo                 &lt;span class=&#34;c1&#34;&gt;# SSH 探测并验证 sudo -n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;追加探测：&lt;code&gt;ansible&lt;/code&gt; / &lt;code&gt;network&lt;/code&gt; / &lt;code&gt;ssh&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--user&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显式 SSH 用户（默认控制器当前用户）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--port&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;TCP/SSH 目标端口（默认 22）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--sudo&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;在 ssh 探测中额外验证 &lt;code&gt;sudo -n true&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;inv-cmdb实验性&#34;&gt;inv cmdb（实验性）&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#inv-cmdb%e5%ae%9e%e9%aa%8c%e6%80%a7&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;实验性功能&lt;/strong&gt;：接口与行为可能变化。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;pig inventory cmdb&lt;/code&gt; 通过原生 PostgreSQL 驱动，与 Pigsty 既有的 CMDB 模式
（&lt;code&gt;files/cmdb.sql&lt;/code&gt;，&lt;code&gt;pigsty&lt;/code&gt; / &lt;code&gt;pglog&lt;/code&gt; schema）交换配置清单。连接解析顺序：&lt;code&gt;-d/--database&lt;/code&gt;（库名、URI 或 libpq conninfo）→ &lt;code&gt;METADB_URL&lt;/code&gt; 环境变量 → &lt;code&gt;service=meta&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;子命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;check&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;只读：验证 CMDB 投影，并可选校验与静态清单的一致性&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;init&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;应用 &lt;code&gt;cmdb.sql&lt;/code&gt; 基线（存在既有 schema 时需 &lt;code&gt;--yes&lt;/code&gt; 确认；支持 &lt;code&gt;--plan&lt;/code&gt; 预览）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;load&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;用静态清单&lt;strong&gt;替换全部&lt;/strong&gt; CMDB 声明行（单事务；需 &lt;code&gt;--yes&lt;/code&gt;；支持 &lt;code&gt;--plan&lt;/code&gt;/&lt;code&gt;--strict&lt;/code&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;dump&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;将 CMDB 导出为静态清单文件（目标不同时需 &lt;code&gt;--force&lt;/code&gt; 覆盖）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;enable&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;守卫式切换 &lt;code&gt;ansible.cfg&lt;/code&gt; 的 inventory 指向 CMDB（&lt;code&gt;inventory.sh&lt;/code&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;disable&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;切回静态 &lt;code&gt;pigsty.yml&lt;/code&gt;（与 &lt;code&gt;enable&lt;/code&gt; 均支持 &lt;code&gt;--plan&lt;/code&gt;，原子写入可回滚）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-3bd8904b-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-3bd8904b-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-3bd8904b-fence-6-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;pig inventory cmdb check                 &lt;span class=&#34;c1&#34;&gt;# 验证 CMDB 状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory cmdb init --plan           &lt;span class=&#34;c1&#34;&gt;# 预览初始化计划&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory cmdb load -y               &lt;span class=&#34;c1&#34;&gt;# 将静态清单载入 CMDB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory cmdb dump -f pigsty.yml    &lt;span class=&#34;c1&#34;&gt;# 将 CMDB 导出为静态清单&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory cmdb &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt;                &lt;span class=&#34;c1&#34;&gt;# 切换 ansible 清单源到 CMDB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig inventory cmdb disable               &lt;span class=&#34;c1&#34;&gt;# 切回静态 pigsty.yml&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：&lt;code&gt;init&lt;/code&gt; 会直接应用 &lt;code&gt;cmdb.sql&lt;/code&gt; 基线，&lt;strong&gt;不会&lt;/strong&gt;先备份既有 CMDB——对已有数据的 CMDB
执行前请自行备份；&lt;code&gt;load&lt;/code&gt; 会替换全部声明行。破坏性操作均有基于目标指纹的确认门，
结构化输出模式下必须显式 &lt;code&gt;--yes&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;

      </description>
    </item>
    
    <item>
      <title>pig pt</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/pt/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/pt/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;pig patroni&lt;/code&gt; 命令（别名 &lt;code&gt;pig pt&lt;/code&gt;）自 v1.6.0 起是已安装 &lt;code&gt;patronictl&lt;/code&gt; 的&lt;strong&gt;透明启动器&lt;/strong&gt;：
pig 只负责选择配置文件与少量本地辅助命令，其余一切命令与参数&lt;strong&gt;原样转发&lt;/strong&gt;给 &lt;code&gt;patronictl&lt;/code&gt;，
使用原生的参数、交互确认、输出与退出码——patronictl 的新功能无需等待 pig 发版即可使用。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-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;pig pt transparently launches the installed patronictl binary.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Pig only owns config-file selection and these &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; helpers:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pt &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;VALUE...       update PostgreSQL or scalar Patroni settings
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pt start&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;stop             manage the &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; patroni service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pt service &amp;lt;action&amp;gt;       start, stop, restart, reload, or show service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pt status                 show &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; and cluster status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pt log ...                view &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; Patroni logs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Every other &lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; and all arguments after it are passed unchanged to
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;patronictl. Use &lt;span class=&#34;s2&#34;&gt;&amp;#34;pig pt -- COMMAND ...&amp;#34;&lt;/span&gt; to bypass a local-name collision.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;第一个非选项命令词决定分发方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;set&lt;/code&gt;、&lt;code&gt;start&lt;/code&gt;/&lt;code&gt;up&lt;/code&gt;、&lt;code&gt;stop&lt;/code&gt;/&lt;code&gt;dn&lt;/code&gt;、&lt;code&gt;service&lt;/code&gt;/&lt;code&gt;svc&lt;/code&gt;、&lt;code&gt;status&lt;/code&gt;/&lt;code&gt;st&lt;/code&gt;、&lt;code&gt;log&lt;/code&gt;/&lt;code&gt;l&lt;/code&gt; 走 pig 的本地实现；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;其余任何命令词&lt;/strong&gt;（&lt;code&gt;list&lt;/code&gt;、&lt;code&gt;restart&lt;/code&gt;、&lt;code&gt;reload&lt;/code&gt;、&lt;code&gt;reinit&lt;/code&gt;、&lt;code&gt;switchover&lt;/code&gt;、&lt;code&gt;failover&lt;/code&gt;、&lt;code&gt;pause&lt;/code&gt;、&lt;code&gt;resume&lt;/code&gt;、&lt;code&gt;show-config&lt;/code&gt;、&lt;code&gt;edit-config&lt;/code&gt;、&lt;code&gt;query&lt;/code&gt;、&lt;code&gt;history&lt;/code&gt;、&lt;code&gt;topology&lt;/code&gt;、&lt;code&gt;dsn&lt;/code&gt;、&lt;code&gt;version&lt;/code&gt; 等）
连同其后的全部参数，逐字转发给 &lt;code&gt;patronictl&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pig pt -- &amp;lt;命令&amp;gt; ...&lt;/code&gt; 可以绕过本地命令名冲突（例如 &lt;code&gt;pig pt -- set&lt;/code&gt; 会把 &lt;code&gt;set&lt;/code&gt; 交给 patronictl）；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pig pt&lt;/code&gt; 不带命令时打印 pig 帮助，不会运行 patronictl；
原生子命令帮助用 &lt;code&gt;pig pt &amp;lt;命令&amp;gt; --help&lt;/code&gt;，patronictl 根帮助用 &lt;code&gt;pig pt -- --help&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;命令概览&#34;&gt;命令概览&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%91%bd%e4%bb%a4%e6%a6%82%e8%a7%88&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;透传命令&lt;/strong&gt;（&lt;code&gt;patronictl&lt;/code&gt; 原生）：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;示例&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt list [CLUSTER]&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出集群成员（原生输出，&lt;code&gt;--format json&lt;/code&gt; 可用）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt restart CLUSTER [MEMBER]&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重启集群 / 成员的 PostgreSQL（原生确认）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt reload CLUSTER&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重载 PostgreSQL 配置&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt reinit CLUSTER MEMBER&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重新初始化成员（从主库重新同步数据）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt switchover CLUSTER [--candidate X]&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;计划内主从切换&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt failover CLUSTER --candidate MEMBER&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;手动故障切换（&lt;strong&gt;位置参数是集群名&lt;/strong&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt pause / resume CLUSTER&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;暂停 / 恢复自动故障切换（维护模式）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt show-config / edit-config&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;查看 / 编辑集群动态配置&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt query -c &#39;select 1&#39;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;原生查询（此处 &lt;code&gt;-c&lt;/code&gt; 是 query 自己的 SQL 参数）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;转发命令的位置参数遵循 patronictl 原生的&lt;strong&gt;集群优先&lt;/strong&gt;（CLUSTER-first）语义，
确认提示、输出格式与退出码（含 Click 用法错误退出码 &lt;code&gt;2&lt;/code&gt;）均由 patronictl 负责。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本地命令&lt;/strong&gt;（pig 实现）：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt set&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;修改 PostgreSQL 参数或 Patroni 标量配置（语法糖）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt status&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;st&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;综合状态：systemd 服务 + Patroni 进程 + 集群成员&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt service&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;svc&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;管理本地 patroni systemd 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt start&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;up&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;隐藏快捷入口，等价于 &lt;code&gt;pt svc start&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt stop&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;dn&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;隐藏快捷入口，等价于 &lt;code&gt;pt svc stop&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt log&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;l&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;查看本地 Patroni 日志（show / tail / grep）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;注意：顶层 &lt;code&gt;pt restart&lt;/code&gt; &lt;strong&gt;不是&lt;/strong&gt;重启 patroni 守护进程的快捷方式，它会转发给&lt;code&gt;patronictl restart&lt;/code&gt; 用于重启 PostgreSQL；重启守护进程请使用 &lt;code&gt;pt svc restart&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;21&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-fence-1-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;&lt;span class=&#34;c1&#34;&gt;# 集群操作（原生透传，集群优先语义）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt list pg-meta                         &lt;span class=&#34;c1&#34;&gt;# 列出集群成员&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt list pg-meta --format json           &lt;span class=&#34;c1&#34;&gt;# 原生 JSON 输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt restart pg-test --pending            &lt;span class=&#34;c1&#34;&gt;# 应用待重启成员&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt restart pg-test pg-test-1            &lt;span class=&#34;c1&#34;&gt;# 重启指定成员&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt switchover pg-test --candidate pg-2  &lt;span class=&#34;c1&#34;&gt;# 计划内切换&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt failover pg-test --candidate pg-2    &lt;span class=&#34;c1&#34;&gt;# 手动故障切换&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt pause pg-test                        &lt;span class=&#34;c1&#34;&gt;# 进入维护模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt show-config pg-test                  &lt;span class=&#34;c1&#34;&gt;# 查看动态配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 配置修改（本地语法糖，一次 edit-config 调用）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ttl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;60&lt;/span&gt;                           &lt;span class=&#34;c1&#34;&gt;# Patroni 标量配置 → --set&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;max_connections&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;200&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;# PostgreSQL 参数 → --pg&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ttl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;60&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;max_connections&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; -y    &lt;span class=&#34;c1&#34;&gt;# 混合修改，跳过确认&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;shared_buffers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;4GB --plan        &lt;span class=&#34;c1&#34;&gt;# 仅预览翻译后的原生命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 服务与日志（本地实现）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt status                               &lt;span class=&#34;c1&#34;&gt;# 综合状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt svc restart                          &lt;span class=&#34;c1&#34;&gt;# 重启 patroni 守护进程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt log -f                               &lt;span class=&#34;c1&#34;&gt;# 实时跟踪日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt log grep ERROR                       &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;pigpt-选项&#34;&gt;Pig/PT 选项&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pigpt-%e9%80%89%e9%a1%b9&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;以下包装层选项&lt;strong&gt;必须出现在原生命令之前&lt;/strong&gt;；一旦出现原生命令词，其后的所有参数都属于 patronictl：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--config-file&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显式指定 Patroni/patronictl 配置文件&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dbsu&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;执行 patronictl 的 OS 用户（默认 &lt;code&gt;$PIG_DBSU&lt;/code&gt; 或 &lt;code&gt;postgres&lt;/code&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dcs-url&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-d&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;覆盖 Patroni DCS URL（&lt;code&gt;--dcs&lt;/code&gt; 为其别名）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--insecure&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-k&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;允许 TLS 连接不校验证书&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-fence-2-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;pig pt -c /path/patroni.yml list pg-meta   &lt;span class=&#34;c1&#34;&gt;# 包装层 -c：配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt query -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;select 1&amp;#39;&lt;/span&gt;                 &lt;span class=&#34;c1&#34;&gt;# 原生 query 的 -c：SQL 语句，不会被 pig 截获&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;v1.6.0 起 &lt;code&gt;--dbsu&lt;/code&gt; 不再提供 &lt;code&gt;-U&lt;/code&gt; 简写（&lt;code&gt;pg&lt;/code&gt; / &lt;code&gt;pb&lt;/code&gt; 命令不受影响）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;配置文件解析&#34;&gt;配置文件解析&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e8%a7%a3%e6%9e%90&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;每次配置相关的 patronictl 调用都会由 pig 注入唯一的根 &lt;code&gt;-c &amp;lt;路径&amp;gt;&lt;/code&gt;，解析优先级：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;命令前显式给出的 &lt;code&gt;-c/--config-file&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;非空的 &lt;code&gt;PATRONICTL_CONFIG_FILE&lt;/code&gt; 环境变量；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/patroni/patroni.yml&lt;/code&gt;（存在且以 DBSU 身份可读）；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/infra/conf/patronictl.yml&lt;/code&gt;（存在且以 DBSU 身份可读）；&lt;/li&gt;
&lt;li&gt;兜底回退 &lt;code&gt;/etc/patroni/patroni.yml&lt;/code&gt;，让 patronictl 的报错指向常规位置。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;显式路径与环境变量路径具有权威性：文件缺失或不可读时 pig 不会静默换用其他候选；
相对路径会在切换 OS 用户前转换为绝对路径。常规候选文件的可读性按**实际执行用户（DBSU）**探测，
而非简单检查权限位。解析是惰性的：&lt;code&gt;pt svc start&lt;/code&gt; 这类纯 systemd 操作不会触发配置解析；
原生 &lt;code&gt;-h/--help&lt;/code&gt; 走免配置快速路径，在未配置 Patroni 的机器上也能查看帮助。&lt;/p&gt;
&lt;h2 id=&#34;透传执行与输出模式&#34;&gt;透传执行与输出模式&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e9%80%8f%e4%bc%a0%e6%89%a7%e8%a1%8c%e4%b8%8e%e8%be%93%e5%87%ba%e6%a8%a1%e5%bc%8f&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;转发执行直接继承 stdin / stdout / stderr 与终端：原生交互确认、&lt;code&gt;edit-config&lt;/code&gt; 的编辑器、&lt;code&gt;--watch&lt;/code&gt; 流式刷新、退出码全部保真；pig 不做输出捕获、不重复渲染错误、不重试、也不在执行前后读取集群或 DCS 状态。逻辑调用形态为：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;text&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-fence-3-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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;patronictl -c &amp;lt;选中配置&amp;gt; [--dcs-url URL] [--insecure] &amp;lt;原生命令与参数...&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;结构化输出&lt;/strong&gt;：转发路径只支持 pig 的 &lt;code&gt;text&lt;/code&gt; 模式。在原生命令之前出现的&lt;code&gt;-o json&lt;/code&gt; / &lt;code&gt;-o yaml&lt;/code&gt; 会被&lt;strong&gt;明确拒绝&lt;/strong&gt;（提示改用原生输出选项）；
出现在原生命令之后的参数原样转发，由 patronictl 自行校验：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-fence-4-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;pig -o json pt list          &lt;span class=&#34;c1&#34;&gt;# 拒绝：请使用原生输出选项&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt -o json list          &lt;span class=&#34;c1&#34;&gt;# 拒绝：请使用原生输出选项&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt list --format json    &lt;span class=&#34;c1&#34;&gt;# 原样转发，patronictl 原生 JSON&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt list -o json          &lt;span class=&#34;c1&#34;&gt;# 原样转发，由 patronictl 校验&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;本地命令（&lt;code&gt;set&lt;/code&gt; / &lt;code&gt;status&lt;/code&gt; / &lt;code&gt;log&lt;/code&gt; / &lt;code&gt;service&lt;/code&gt;）保留 pig 的结构化输出行为。&lt;/p&gt;
&lt;h2 id=&#34;pt-set&#34;&gt;pt set&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pt-set&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pt set&lt;/code&gt; 是唯一的本地配置语法糖，作用于选中配置对应的集群：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-fence-5-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;pig pt &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;VALUE &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;VALUE ...&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--yes&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--plan&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;键分类规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以下 Patroni 顶层标量键翻译为原生 &lt;code&gt;--set&lt;/code&gt;：&lt;code&gt;loop_wait&lt;/code&gt;、&lt;code&gt;ttl&lt;/code&gt;、&lt;code&gt;retry_timeout&lt;/code&gt;、&lt;code&gt;primary_race_backoff&lt;/code&gt;、&lt;code&gt;maximum_lag_on_failover&lt;/code&gt;、&lt;code&gt;maximum_lag_on_syncnode&lt;/code&gt;、&lt;code&gt;max_timelines_history&lt;/code&gt;、&lt;code&gt;primary_start_timeout&lt;/code&gt;、&lt;code&gt;primary_stop_timeout&lt;/code&gt;、&lt;code&gt;synchronous_mode&lt;/code&gt;、&lt;code&gt;synchronous_mode_strict&lt;/code&gt;、&lt;code&gt;synchronous_node_count&lt;/code&gt;、&lt;code&gt;failsafe_mode&lt;/code&gt;、&lt;code&gt;check_timeline&lt;/code&gt;、&lt;code&gt;member_slots_ttl&lt;/code&gt;（&lt;code&gt;pause&lt;/code&gt; 不在其列——请使用原生 &lt;code&gt;pause&lt;/code&gt;/&lt;code&gt;resume&lt;/code&gt;）；&lt;/li&gt;
&lt;li&gt;其余键一律视为 PostgreSQL 参数，翻译为原生 &lt;code&gt;--pg&lt;/code&gt;（含 &lt;code&gt;timescaledb.telemetry_level&lt;/code&gt; 这类带点自定义 GUC）；&lt;/li&gt;
&lt;li&gt;以 &lt;code&gt;postgresql.&lt;/code&gt;、&lt;code&gt;standby_cluster.&lt;/code&gt;、&lt;code&gt;slots.&lt;/code&gt;、&lt;code&gt;ignore_slots.&lt;/code&gt; 开头的结构性键会被&lt;strong&gt;拒绝&lt;/strong&gt;，
并提示改用原生 &lt;code&gt;pig pt edit-config --set&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所有键值对按输入顺序合并为&lt;strong&gt;一次&lt;/strong&gt;原生 &lt;code&gt;edit-config&lt;/code&gt; 调用，产生一次 diff、一次确认、一次 DCS 更新：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-fence-6-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;pig pt &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ttl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;60&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;max_connections&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;synchronous_mode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 等价于：patronictl -c &amp;lt;选中配置&amp;gt; edit-config --set ttl=60 --pg max_connections=200 --set synchronous_mode=on&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--yes/-y&lt;/code&gt; 追加原生 &lt;code&gt;--force&lt;/code&gt; 跳过确认；默认由 patronictl 显示 diff 并负责确认；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--plan&lt;/code&gt; 不执行任何修改，仅渲染选中配置与翻译后的原生命令（&lt;strong&gt;计划可能包含敏感值&lt;/strong&gt;）；&lt;/li&gt;
&lt;li&gt;结构化输出模式下执行必须携带 &lt;code&gt;--yes&lt;/code&gt;（禁止隐藏交互提示）；&lt;/li&gt;
&lt;li&gt;值按 YAML 解析：&lt;code&gt;KEY=null&lt;/code&gt; 与 &lt;code&gt;KEY=&lt;/code&gt; 均表示删除该键，pig 原样传递；&lt;/li&gt;
&lt;li&gt;修改需要重启的 PostgreSQL 参数后，pig 会提示后续操作：
先 &lt;code&gt;pig pt list&lt;/code&gt;，再 &lt;code&gt;pig pt restart CLUSTER --pending&lt;/code&gt;（需显式集群名）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;服务管理&#34;&gt;服务管理&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%9c%8d%e5%8a%a1%e7%ae%a1%e7%90%86&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pt service&lt;/code&gt;（别名 &lt;code&gt;pt svc&lt;/code&gt;）管理本地 &lt;code&gt;patroni&lt;/code&gt; systemd 服务：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt service start&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt svc up&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;启动 Patroni 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt service stop&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt svc dn&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;停止 Patroni 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt service restart&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt svc rs&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重启 Patroni 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt service reload&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt svc rl&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;重载 Patroni 服务&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt service status&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pt svc st&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示服务状态&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;顶层 &lt;code&gt;pt start&lt;/code&gt; / &lt;code&gt;pt stop&lt;/code&gt;（别名 &lt;code&gt;up&lt;/code&gt; / &lt;code&gt;dn&lt;/code&gt;）是隐藏快捷入口，调用同一本地实现。停止 Patroni 服务可能导致该节点上的 PostgreSQL 一并停止（取决于 Patroni 配置）。&lt;/p&gt;
&lt;h3 id=&#34;pt-status&#34;&gt;pt status&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pt-status&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;显示综合状态：systemd 服务状态、Patroni 进程信息、以及来自 patronictl 的集群成员状态。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-7&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-7&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-fence-7-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;pig pt status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt st -o json                &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;pt-log&#34;&gt;pt log&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pt-log&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;查看本地 Patroni 日志。日志目录取自选中配置的 &lt;code&gt;log.dir&lt;/code&gt;，未配置时回退到 &lt;code&gt;/pg/log/patroni&lt;/code&gt;，
也可用 &lt;code&gt;--log-dir&lt;/code&gt; 显式指定。仅 &lt;code&gt;pt log&lt;/code&gt; 与 &lt;code&gt;pt log show&lt;/code&gt; 支持 &lt;code&gt;-o json&lt;/code&gt;（JSONL 快照）；
follow / tail / grep 是终端流式操作，不支持结构化输出。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2f27b309-fence-8&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-2f27b309-fence-8&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2f27b309-fence-8-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;pig pt log                     &lt;span class=&#34;c1&#34;&gt;# 显示最近 50 行日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt log -f                  &lt;span class=&#34;c1&#34;&gt;# 实时跟踪日志输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt log -n &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;# 显示最近 100 行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt log show -o json        &lt;span class=&#34;c1&#34;&gt;# JSONL 快照&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt log tail -n &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# 跟踪日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pt log grep ERROR          &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;子命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;show&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;cat, c, s&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;输出最近 Patroni 日志&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;t, f, follow&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;持续跟踪 Patroni 日志&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;g, search&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;搜索 Patroni 日志&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--follow&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;实时跟踪日志输出&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--lines&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;50&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示的日志行数&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--log-dir&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动解析&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;日志目录&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;从-v15x-迁移&#34;&gt;从 v1.5.x 迁移&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%bb%8e-v15x-%e8%bf%81%e7%a7%bb&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;v1.6.0 的透传重写是&lt;strong&gt;破坏性变更&lt;/strong&gt;，升级前请检查自动化脚本：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;v1.5.x 用法&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;v1.6.0 用法&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt failover &amp;lt;候选成员&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;⚠ &lt;code&gt;pig pt failover CLUSTER --candidate MEMBER&lt;/code&gt;（位置参数语义反转：现在是&lt;strong&gt;集群名&lt;/strong&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt restart [成员]&lt;/code&gt;（自动定位集群）&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt restart CLUSTER [MEMBER]&lt;/code&gt;（需显式集群名）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt list -o json&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt list --format json&lt;/code&gt;（原生 JSON，schema 不同）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt config show&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt show-config&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt config edit&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt edit-config&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt config set K=V&lt;/code&gt; / &lt;code&gt;pg K=V&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt set K=V&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt restart -y&lt;/code&gt;（pig 确认门）&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;原生确认由 patronictl 负责；&lt;code&gt;pt set -y&lt;/code&gt; 仍有效&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pt list -W&lt;/code&gt; / &lt;code&gt;-w 5&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;原生 &lt;code&gt;pig pt list --watch&lt;/code&gt;（patronictl 语义）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;别名 &lt;code&gt;ls/rs/rl/ri/so/fo/p/r/c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;已移除，使用完整原生命令名&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dbsu -U&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dbsu&lt;/code&gt;（&lt;code&gt;-U&lt;/code&gt; 简写已移除）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;此外：转发命令的退出码为 patronictl 原生值（用法错误为 &lt;code&gt;2&lt;/code&gt;）；
switchover / failover 不再有 pig 侧的 pause 预检——维护模式语义完全由 Patroni 负责。&lt;/p&gt;
&lt;h2 id=&#34;设计说明&#34;&gt;设计说明&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%ae%be%e8%ae%a1%e8%af%b4%e6%98%8e&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;单一权威&lt;/strong&gt;：集群控制路径只有一条——已安装的 &lt;code&gt;patronictl&lt;/code&gt; + 一份选中配置，
经由 Patroni REST API / DCS 生效。pig 不内嵌 DCS 客户端或 REST 控制引擎，
不维护 patronictl 命令清单，不对转发命令做确认、预检、重试或结果改写。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;权限处理&lt;/strong&gt;（与 v1.5.x 相同）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前用户已是 DBSU：直接执行；&lt;/li&gt;
&lt;li&gt;当前用户是 root：&lt;code&gt;su - postgres -c &amp;quot;...&amp;quot;&lt;/code&gt; 执行；&lt;/li&gt;
&lt;li&gt;其他用户：&lt;code&gt;sudo -inu postgres -- ...&lt;/code&gt; 执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;平台支持&lt;/strong&gt;：此命令专为 Linux 设计，服务管理依赖 &lt;code&gt;systemctl&lt;/code&gt;，日志功能依赖可读取的 Patroni 日志文件。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>pig pb</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/pb/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/pb/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;pig pgbackrest&lt;/code&gt; 命令（别名 &lt;code&gt;pig pb&lt;/code&gt;）用于管理 pgBackRest 备份，并提供低层 restore 原语。它封装了常用的 &lt;code&gt;pgbackrest&lt;/code&gt; 操作，提供简化的备份管理体验。所有命令均以数据库超级用户身份（默认 &lt;code&gt;postgres&lt;/code&gt;）执行。托管集群的编排式时间点恢复请优先使用 &lt;a href=&#34;https://pig.pgsty.com/zh/pitr/&#34;&gt;&lt;code&gt;pig pitr&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;34&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-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;pig pb - Manage pgBackRest backup and point-in-time recovery.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Information:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb info                      show backup info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb list                      list backups
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb list repo                 list configured repositories
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb list stanza               list all stanzas
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Backup &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; Restore:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb backup                    create backup &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;auto: full/incr&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb backup full               create full backup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb restore                   low-level restore primitive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt;          restore to specific &lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb expire                    cleanup expired backups
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Stanza Management:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb create                    create stanza &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;first-time setup&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb upgrade                   upgrade stanza &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;after PG upgrade&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb delete                    delete stanza &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;DANGEROUS!&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Control:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb check                     verify backup integrity
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb start                     &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; pgBackRest operations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb stop                      disable pgBackRest operations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb log                       view pgBackRest logs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Examples:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb info                      &lt;span class=&#34;c1&#34;&gt;# show all backup info&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb backup                    &lt;span class=&#34;c1&#34;&gt;# auto: full if none, else incr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb backup full               &lt;span class=&#34;c1&#34;&gt;# full backup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb restore -d                &lt;span class=&#34;c1&#34;&gt;# restore to latest (end of WAL)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-01 12:00:00+08&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# restore to time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb create                    &lt;span class=&#34;c1&#34;&gt;# initialize stanza&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pb expire                    &lt;span class=&#34;c1&#34;&gt;# cleanup per retention policy&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;命令概览&#34;&gt;命令概览&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%91%bd%e4%bb%a4%e6%a6%82%e8%a7%88&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;信息查询&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34;&gt;缩写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;实现方式&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb info&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;i&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示备份仓库信息&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest info&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb list&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出备份集，仓库，Stanza&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest info&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;备份与恢复&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34;&gt;缩写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;实现方式&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb backup&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;b&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;创建备份&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest backup&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb restore&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;r&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;低层备份恢复原语&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest restore&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb expire&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;e&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;清理过期备份&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest expire&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Stanza 管理&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34;&gt;缩写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;实现方式&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb create&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;创建 stanza（首次设置）&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest stanza-create&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb upgrade&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;u&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;升级 stanza（PG 大版本升级后）&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest stanza-upgrade&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb delete&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;删除 stanza（危险操作！）&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest stanza-delete&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;控制命令&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;实现方式&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb check&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ck&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;验证备份仓库完整性&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest check&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb start&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;up&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;启用 pgBackRest 操作&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest start&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb stop&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;dw&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;禁用 pgBackRest 操作&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pgbackrest stop&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;pb log&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;l&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;查看日志&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;最新日志快照 / tail&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;28&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-1-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;&lt;span class=&#34;c1&#34;&gt;# 查看备份信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb info                          &lt;span class=&#34;c1&#34;&gt;# 显示所有备份信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb info -o json                  &lt;span class=&#34;c1&#34;&gt;# Result 包装的结构化 JSON 输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb info --raw --raw-output json  &lt;span class=&#34;c1&#34;&gt;# pgBackRest 原生 JSON 输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb ls                            &lt;span class=&#34;c1&#34;&gt;# 列出所有备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb ls repo                       &lt;span class=&#34;c1&#34;&gt;# 列出配置的仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb ls stanza                     &lt;span class=&#34;c1&#34;&gt;# 列出所有 stanza&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建备份（必须在主库执行）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup                        &lt;span class=&#34;c1&#34;&gt;# 自动模式：无备份则全量，否则增量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup full                   &lt;span class=&#34;c1&#34;&gt;# 全量备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup diff                   &lt;span class=&#34;c1&#34;&gt;# 差异备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup incr                   &lt;span class=&#34;c1&#34;&gt;# 增量备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 恢复（低层 restore 原语，至少指定一个恢复目标）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -d                    &lt;span class=&#34;c1&#34;&gt;# 恢复到最新（WAL 流末尾）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -I                    &lt;span class=&#34;c1&#34;&gt;# 恢复到备份一致性点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-01 12:00:00+08&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 恢复到指定时间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore --name savepoint      &lt;span class=&#34;c1&#34;&gt;# 恢复到命名还原点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stanza 管理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb create                        &lt;span class=&#34;c1&#34;&gt;# 初始化 stanza&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb upgrade                       &lt;span class=&#34;c1&#34;&gt;# PG 大版本升级后升级 stanza&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb check                         &lt;span class=&#34;c1&#34;&gt;# 验证仓库完整性&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 清理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb expire                        &lt;span class=&#34;c1&#34;&gt;# 按保留策略清理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb expire --plan                 &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;全局参数&#34;&gt;全局参数&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%85%a8%e5%b1%80%e5%8f%82%e6%95%b0&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;以下参数适用于所有 &lt;code&gt;pig pb&lt;/code&gt; 子命令：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--stanza&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-s&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgBackRest stanza 名称（自动检测）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--config&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;配置文件路径&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--repo&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-r&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仓库编号（多仓库场景）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dbsu&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-U&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;数据库超级用户（默认：&lt;code&gt;$PIG_DBSU&lt;/code&gt; 或 &lt;code&gt;postgres&lt;/code&gt;）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Stanza 自动检测：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果未指定 &lt;code&gt;-s&lt;/code&gt; 参数，pig 会从配置文件中自动检测 stanza 名称：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;读取配置文件（默认 &lt;code&gt;/etc/pgbackrest/pgbackrest.conf&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;查找非 &lt;code&gt;[global*]&lt;/code&gt; 开头的 section&lt;/li&gt;
&lt;li&gt;使用找到的第一个 stanza&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果配置文件中有多个 stanza，会发出警告并使用第一个。此时应显式指定 &lt;code&gt;--stanza&lt;/code&gt; 参数。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;多仓库支持：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;pgBackRest 支持配置多个仓库（repo1、repo2 等）。使用 &lt;code&gt;-r&lt;/code&gt; 参数指定操作的目标仓库：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-2-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;pig pb backup -r &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;                   &lt;span class=&#34;c1&#34;&gt;# 备份到 repo1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup -r &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;                   &lt;span class=&#34;c1&#34;&gt;# 备份到 repo2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb info -r &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;                     &lt;span class=&#34;c1&#34;&gt;# 查看 repo2 的备份信息&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;信息查询命令&#34;&gt;信息查询命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%bf%a1%e6%81%af%e6%9f%a5%e8%af%a2%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pb-info&#34;&gt;pb info&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-info&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;显示备份仓库详细信息，包括所有备份集和 WAL 归档状态。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-3-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;pig pb info                          &lt;span class=&#34;c1&#34;&gt;# 显示所有备份信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb info --raw --raw-output json  &lt;span class=&#34;c1&#34;&gt;# 原始 JSON 输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb info --set 20250101-120000F   &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--raw&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-R&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;原始输出模式（透传 pgBackRest 输出）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--raw-output&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;原始输出格式：text、json（仅 &lt;code&gt;--raw&lt;/code&gt; 模式）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--set&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示特定备份集详情&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pb-ls&#34;&gt;pb ls&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-ls&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;列出备份仓库中的资源。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-4-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;pig pb ls                            &lt;span class=&#34;c1&#34;&gt;# 列出所有备份（默认）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb ls backup                     &lt;span class=&#34;c1&#34;&gt;# 列出所有备份（显式）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb ls repo                       &lt;span class=&#34;c1&#34;&gt;# 列出配置的仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb ls stanza                     &lt;span class=&#34;c1&#34;&gt;# 列出所有 stanza&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;类型说明：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;类型&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;描述&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;数据来源&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;backup&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出所有备份集（默认）&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgbackrest info&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;repo&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出配置的仓库&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;解析 pgbackrest.conf&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;stanza&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出所有 stanza&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;解析 pgbackrest.conf&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;备份命令&#34;&gt;备份命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%a4%87%e4%bb%bd%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pb-backup&#34;&gt;pb backup&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-backup&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;创建物理备份。备份只能在主库实例上执行。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-5-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;pig pb backup                        &lt;span class=&#34;c1&#34;&gt;# 自动模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup full                   &lt;span class=&#34;c1&#34;&gt;# 全量备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup diff                   &lt;span class=&#34;c1&#34;&gt;# 差异备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup incr                   &lt;span class=&#34;c1&#34;&gt;# 增量备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb backup --force                &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--force&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;跳过主库角色检查&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;备份类型：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;类型&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;(空)&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动模式：无备份则全量，否则增量&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;full&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;全量备份：备份所有数据&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;diff&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;差异备份：自上次全量备份以来的变更&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;incr&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;增量备份：自上次任意备份以来的变更&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;主库检查：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;执行备份前，命令会自动检查当前实例是否为主库。如果是备库，命令会报错退出。使用 &lt;code&gt;--force&lt;/code&gt; 可跳过此检查。&lt;/p&gt;
&lt;h3 id=&#34;pb-expire&#34;&gt;pb expire&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-expire&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;按保留策略清理过期的备份和 WAL 归档。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-6-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;pig pb expire                        &lt;span class=&#34;c1&#34;&gt;# 按策略清理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb expire --set 20250101-*       &lt;span class=&#34;c1&#34;&gt;# 删除特定备份集&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb expire --set 20250101-* -y    &lt;span class=&#34;c1&#34;&gt;# 跳过删除备份集确认&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb expire --plan                 &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--set&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;删除特定备份集&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅预览清理计划，不删除备份&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;与 &lt;code&gt;--set&lt;/code&gt; 配合时跳过确认提示&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;保留策略配置：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;保留策略在 &lt;code&gt;pgbackrest.conf&lt;/code&gt; 中配置：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-7&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;ini&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-7&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-7-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-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[global]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;repo1-retention-full&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;2               # 保留的全量备份数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;repo1-retention-diff&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;4               # 保留的差异备份数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;repo1-retention-archive&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;2            # WAL 归档保留策略&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;恢复命令&#34;&gt;恢复命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%81%a2%e5%a4%8d%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pb-restore&#34;&gt;pb restore&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-restore&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;从备份恢复，支持时间点恢复目标。必须显式指定一个恢复目标（&lt;code&gt;-d/-I/-t/--name/--lsn/--xid&lt;/code&gt;）；不带参数仅显示帮助信息。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-8&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;20&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-8&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-8-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;&lt;span class=&#34;c1&#34;&gt;# 恢复目标（互斥选项）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -d                    &lt;span class=&#34;c1&#34;&gt;# 恢复到最新（显式）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -I                    &lt;span class=&#34;c1&#34;&gt;# 恢复到备份一致性点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-01 12:00:00+08&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 恢复到指定时间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-01&amp;#34;&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;# 恢复到日期（当天 00:00:00）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;12:00:00&amp;#34;&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# 恢复到时间（今天）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore --name my-savepoint   &lt;span class=&#34;c1&#34;&gt;# 恢复到命名还原点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore --lsn &lt;span class=&#34;s2&#34;&gt;&amp;#34;0/7C82CB8&amp;#34;&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# 恢复到 LSN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore --xid &lt;span class=&#34;m&#34;&gt;12345&lt;/span&gt;           &lt;span class=&#34;c1&#34;&gt;# 恢复到事务 ID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 备份集选择（必须与恢复目标组合）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -b 20251225-120000F -d  &lt;span class=&#34;c1&#34;&gt;# 从特定备份集恢复到最新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 其他选项&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt; -X           &lt;span class=&#34;c1&#34;&gt;# 排他模式（在目标前停止）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt; --target-action&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;promote  &lt;span class=&#34;c1&#34;&gt;# 到达目标后提升&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt; -T current   &lt;span class=&#34;c1&#34;&gt;# 沿当前时间线恢复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -d --plan             &lt;span class=&#34;c1&#34;&gt;# 仅预览恢复计划&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -d -y                 &lt;span class=&#34;c1&#34;&gt;# 跳过 y/yes 交互确认&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -d -- --delta         &lt;span class=&#34;c1&#34;&gt;# 在 -- 后透传 pgBackRest restore 参数&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;恢复目标选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--default&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-d&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到 WAL 流末尾（最新数据）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--immediate&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-I&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到备份一致性点&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--time&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到指定时间戳&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--name&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到命名还原点&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--lsn&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到指定 LSN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--xid&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到指定事务 ID&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;备份集和其他选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--set&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-b&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;从特定备份集恢复（可与目标组合）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--data&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-D&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;目标数据目录&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--exclusive&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-X&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;排他模式：在目标前停止&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--target-action&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;到达恢复目标后的动作：pause/promote/shutdown&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--target-timeline&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-T&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复时间线：latest/current/N/0xN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅预览恢复计划，不执行&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;跳过交互式 y/yes 确认&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--&lt;/code&gt; 后的原生参数&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;透传 pgBackRest restore 参数，例如 &lt;code&gt;-- --delta&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;组合规则：&lt;/strong&gt; &lt;code&gt;--target-action&lt;/code&gt; 不能与 &lt;code&gt;--default&lt;/code&gt; 同时使用，因为 &lt;code&gt;--default&lt;/code&gt; 已表示恢复到 WAL 末尾。&lt;code&gt;--exclusive/-X&lt;/code&gt; 必须配合明确的停止目标使用：&lt;code&gt;--time&lt;/code&gt;、&lt;code&gt;--lsn&lt;/code&gt; 或 &lt;code&gt;--xid&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--&lt;/code&gt; 后的原生 pgBackRest restore 参数不能覆盖 Pig 已管理的恢复目标、生命周期、数据目录、仓库、配置和选择参数；请使用 Pig 的一等参数设置这些语义。表空间/链接迁移类参数（如 &lt;code&gt;--tablespace-map&lt;/code&gt;、&lt;code&gt;--link-map&lt;/code&gt;、&lt;code&gt;--link-all&lt;/code&gt;）仍可透传。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;时间格式：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;支持多种时间格式输入，自动补全时区（支持非整小时时区如 +05:30）：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;格式&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;示例&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;完整格式&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;2025-01-01 12:00:00+08&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;包含时区的完整时间戳&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅日期&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;2025-01-01&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动补全为当天 00:00:00（当前时区）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅时间&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;12:00:00&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动补全为今天（当前时区）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;恢复流程：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;验证参数和环境&lt;/li&gt;
&lt;li&gt;检查 PostgreSQL 已停止&lt;/li&gt;
&lt;li&gt;显示恢复计划，等待交互式 &lt;code&gt;y&lt;/code&gt;/&lt;code&gt;yes&lt;/code&gt; 确认&lt;/li&gt;
&lt;li&gt;执行 pgbackrest restore&lt;/li&gt;
&lt;li&gt;提供恢复后的操作指引&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;重要提示：&lt;/strong&gt; 恢复前必须先停止 PostgreSQL；如果该 PGDATA 由 Patroni 管理，应使用 &lt;a href=&#34;https://pig.pgsty.com/zh/pitr/&#34;&gt;&lt;code&gt;pig pitr&lt;/code&gt;&lt;/a&gt; 编排 Patroni、PostgreSQL 与 pgBackRest：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-9&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-9&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-9-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;pig pg stop                          &lt;span class=&#34;c1&#34;&gt;# 停止 PostgreSQL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb restore -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;# 执行恢复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg start                         &lt;span class=&#34;c1&#34;&gt;# 启动 PostgreSQL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;stanza-管理命令&#34;&gt;Stanza 管理命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#stanza-%e7%ae%a1%e7%90%86%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pb-create&#34;&gt;pb create&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-create&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;初始化新的 stanza。必须在首次备份前执行。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-10&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-10&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-10-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;pig pb create                        &lt;span class=&#34;c1&#34;&gt;# 创建 stanza&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb create --no-online            &lt;span class=&#34;c1&#34;&gt;# PostgreSQL 未运行时创建&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb create --force                &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--no-online&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL 未运行时创建&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--force&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;强制创建&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;pb-upgrade&#34;&gt;pb upgrade&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-upgrade&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;PostgreSQL 大版本升级后更新 stanza。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-11&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-11&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-11-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;pig pb upgrade                       &lt;span class=&#34;c1&#34;&gt;# 升级 stanza&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb upgrade --no-online           &lt;span class=&#34;c1&#34;&gt;# PostgreSQL 未运行时升级&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--no-online&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL 未运行时升级&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;使用场景：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当 PostgreSQL 进行大版本升级（如 16 → 17）后，需要执行此命令更新 stanza 元数据。&lt;/p&gt;
&lt;h3 id=&#34;pb-delete&#34;&gt;pb delete&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-delete&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;删除 stanza 及其所有备份。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-12&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-12&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-12-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;pig pb delete                        &lt;span class=&#34;c1&#34;&gt;# 删除 stanza（交互式 y/N 确认）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb delete --yes                  &lt;span class=&#34;c1&#34;&gt;# 跳过 y/yes 交互确认&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb delete --plan                 &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅预览删除计划，不执行&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;跳过交互式 y/yes 确认&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;警告：&lt;/strong&gt; 这是一个&lt;strong&gt;破坏性且不可逆&lt;/strong&gt;的操作！所有备份将被永久删除。&lt;/p&gt;
&lt;p&gt;命令包含多重安全机制：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;文本模式下要求交互式 &lt;code&gt;y&lt;/code&gt;/&lt;code&gt;yes&lt;/code&gt; 确认，除非指定 &lt;code&gt;--yes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;结构化输出模式必须显式指定 &lt;code&gt;--yes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;配置文件存在多个 stanza 且未显式 &lt;code&gt;--stanza&lt;/code&gt; 时，拒绝自动选择删除目标&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;控制命令&#34;&gt;控制命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%8e%a7%e5%88%b6%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pb-check&#34;&gt;pb check&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-check&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;验证备份仓库的完整性和配置。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-13&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-13&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-13-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;pig pb check                         &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;此命令检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WAL 归档配置是否正确&lt;/li&gt;
&lt;li&gt;仓库是否可访问&lt;/li&gt;
&lt;li&gt;stanza 配置是否有效&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;pb-start&#34;&gt;pb start&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-start&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;启用 pgBackRest 操作。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-14&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-14&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-14-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;pig pb start                         &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;在执行 &lt;code&gt;pb stop&lt;/code&gt; 后使用此命令恢复正常操作。&lt;/p&gt;
&lt;h3 id=&#34;pb-stop&#34;&gt;pb stop&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-stop&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;禁用 pgBackRest 操作（用于维护）。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-15&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-15&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-15-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;pig pb stop                          &lt;span class=&#34;c1&#34;&gt;# 禁用操作&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb stop --force                  &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;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--force&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;终止正在运行的操作&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;使用场景：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在进行系统维护时，使用此命令阻止新的备份操作启动。&lt;/p&gt;
&lt;h2 id=&#34;日志命令&#34;&gt;日志命令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%97%a5%e5%bf%97%e5%91%bd%e4%bb%a4&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;pb-log&#34;&gt;pb log&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#pb-log&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;查看 pgBackRest 日志文件。日志目录优先读取 pgBackRest 配置中的 &lt;code&gt;log-path&lt;/code&gt;，未配置时使用 &lt;code&gt;/pg/log/pgbackrest/&lt;/code&gt;。父命令默认显示最新日志快照，实时跟踪请使用 &lt;code&gt;tail&lt;/code&gt; 或 &lt;code&gt;-f&lt;/code&gt;。只有 &lt;code&gt;pb log&lt;/code&gt; 与 &lt;code&gt;pb log show&lt;/code&gt; 支持 &lt;code&gt;-o json&lt;/code&gt; 输出 JSONL；日志快照不支持 &lt;code&gt;yaml&lt;/code&gt; 与 &lt;code&gt;json-pretty&lt;/code&gt;，follow/tail 不支持结构化输出。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e2dd1c6-fence-16&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;7&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-9e2dd1c6-fence-16&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e2dd1c6-fence-16-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;pig pb log                           &lt;span class=&#34;c1&#34;&gt;# 显示最新日志行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb log list                      &lt;span class=&#34;c1&#34;&gt;# 列出日志文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb log tail                      &lt;span class=&#34;c1&#34;&gt;# 实时查看最新日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb log tail -n &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt;               &lt;span class=&#34;c1&#34;&gt;# 显示最后 100 行并跟踪&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb log show                      &lt;span class=&#34;c1&#34;&gt;# 显示最新日志内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb log show -n &lt;span class=&#34;m&#34;&gt;50&lt;/span&gt;                &lt;span class=&#34;c1&#34;&gt;# 显示最后 50 行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb log cat                       &lt;span class=&#34;c1&#34;&gt;# show 的别名&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;子命令：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;子命令&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;别名&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;list&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;ls&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;列出日志文件&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;show&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;cat, c&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示最新日志内容&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;tail&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;t, f, follow&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;实时跟踪最新日志&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;选项：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--lines&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;50&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;显示的行数&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--follow&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;父命令 &lt;code&gt;pb log&lt;/code&gt; 使用该参数进入跟踪；&lt;code&gt;pb log tail&lt;/code&gt; 中为 no-op，因为 tail 总是跟踪&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;权限处理：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果当前用户没有权限读取日志目录，命令会自动使用 &lt;code&gt;sudo&lt;/code&gt; 重试。&lt;/p&gt;
&lt;h2 id=&#34;设计说明&#34;&gt;设计说明&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%ae%be%e8%ae%a1%e8%af%b4%e6%98%8e&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;命令执行方式：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所有 &lt;code&gt;pig pb&lt;/code&gt; 命令都以数据库超级用户（DBSU）身份执行。这是因为 pgBackRest 需要访问 PostgreSQL 数据文件和 WAL 归档。&lt;/p&gt;
&lt;p&gt;执行逻辑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果当前用户已是 DBSU：直接执行命令&lt;/li&gt;
&lt;li&gt;如果当前用户是 root：使用 &lt;code&gt;su - postgres -c &amp;quot;...&amp;quot;&lt;/code&gt; 执行&lt;/li&gt;
&lt;li&gt;其他用户：使用 &lt;code&gt;sudo -inu postgres -- ...&lt;/code&gt; 执行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;与 pgbackrest 的关系：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pig pb&lt;/code&gt; 并非 &lt;code&gt;pgbackrest&lt;/code&gt; 的完整封装，而是针对常用操作的上层抽象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动检测 stanza 名称，无需每次指定&lt;/li&gt;
&lt;li&gt;备份前自动检查主库角色&lt;/li&gt;
&lt;li&gt;恢复时显示计划并要求交互式 &lt;code&gt;y&lt;/code&gt;/&lt;code&gt;yes&lt;/code&gt; 确认&lt;/li&gt;
&lt;li&gt;提供人性化的时间格式输入&lt;/li&gt;
&lt;li&gt;恢复后提供操作指引&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如需使用 &lt;code&gt;pgbackrest&lt;/code&gt; 的完整功能，请直接使用 &lt;code&gt;pgbackrest&lt;/code&gt; 命令。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默认配置路径：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;配置项&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;默认值&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;配置文件&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/etc/pgbackrest/pgbackrest.conf&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;日志目录&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/pg/log/pgbackrest&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;数据目录&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;配置文件中的 &lt;code&gt;pg1-path&lt;/code&gt;，或 &lt;code&gt;$PGDATA&lt;/code&gt; 环境变量，或 &lt;code&gt;/pg/data&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;安全考虑：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pb delete&lt;/code&gt; 在没有 &lt;code&gt;--yes&lt;/code&gt; 时要求交互式 &lt;code&gt;y&lt;/code&gt;/&lt;code&gt;yes&lt;/code&gt; 确认，多 stanza 配置下必须显式指定 &lt;code&gt;--stanza&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pb restore&lt;/code&gt; 需要显式恢复目标，校验 &lt;code&gt;--time&lt;/code&gt;，并在没有 &lt;code&gt;--yes&lt;/code&gt; 时要求交互式 &lt;code&gt;y&lt;/code&gt;/&lt;code&gt;yes&lt;/code&gt; 确认&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pb backup&lt;/code&gt; 默认检查主库角色，防止在备库执行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pb log tail&lt;/code&gt; 不支持结构化输出；需要 JSONL 快照时使用 &lt;code&gt;pb log show -n N -o json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;平台支持：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;此命令专为 Linux 系统设计，依赖 Pigsty 的默认目录结构。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>pig pitr</title>
      <link>https://ext.pgsty.com/zh/pig/cmd/pitr/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://ext.pgsty.com/zh/pig/cmd/pitr/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;pig pitr&lt;/code&gt; 命令用于通过 pgBackRest 执行时间点恢复，并以保守方式处理本地 PostgreSQL 与 Patroni 生命周期。与底层的 &lt;code&gt;pig pb restore&lt;/code&gt; 不同，&lt;code&gt;pig pitr&lt;/code&gt; 会先做恢复前检查，必要时停止 Patroni 与 PostgreSQL，执行 restore，然后按参数决定是否启动 PostgreSQL。&lt;/p&gt;
&lt;p&gt;请注意：对于托管的默认数据目录，&lt;code&gt;pig pitr&lt;/code&gt; 恢复后会让 Patroni 保持停止。请先验证恢复结果，再由人工恢复 Patroni 管理；该命令不会自动重入 Patroni 集群、执行故障切换，或验证集群成员状态。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-0&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;45&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-0&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-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;pig pitr - Perform PITR with pgBackRest restore and conservative PostgreSQL stop/start handling.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;For the managed default data directory, this &lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; may:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  1. Stop Patroni only to keep the target PGDATA offline during restore
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  2. Ensure PostgreSQL is stopped &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;fast stop with retry&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; destructive fallback only with --force-stop&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  3. Execute pgbackrest restore
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  4. Start PostgreSQL unless --no-restart is used
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  5. Leave Patroni stopped&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; provide post-restore guidance
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Recovery Targets &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;at least one required&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --default, -d      Recover to end of WAL stream &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;latest&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --immediate, -I    Recover to backup consistency point
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --time, -t         Recover to specific timestamp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name             Recover to named restore point
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --lsn              Recover to specific LSN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --xid              Recover to specific transaction ID
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Backup and Target Options:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --set, -b          Select backup &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; to start recovery from
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --target-action    Action when target is reached: pause, promote, shutdown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --target-timeline  Recover along timeline: latest, current, N, or 0xN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use --no-restart with --target-action&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;shutdown because PostgreSQL exits
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;after reaching the recovery target.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Custom -D side restores require --no-restart. The custom directory must
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;already exist, be owned by the configured DBSU &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;postgres by default&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, and
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;be writable by that user. Pig does not create this directory automatically.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Additional pgBackRest arguments:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Put raw pgBackRest restore arguments after -- so Cobra stops parsing them.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Example: pig pitr -d -- --delta
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Time Format:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - Full: &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-01 12:00:00+08&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - Date only: &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-01&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;defaults to 00:00:00&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - Time only: &lt;span class=&#34;s2&#34;&gt;&amp;#34;12:00:00&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;defaults to today&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Examples:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pitr -d                                      &lt;span class=&#34;c1&#34;&gt;# Recover to latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pitr -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-01 12:00:00+08&amp;#34;&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;# Recover to time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pitr -d --plan                               &lt;span class=&#34;c1&#34;&gt;# Preview plan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pitr -d -y                                   &lt;span class=&#34;c1&#34;&gt;# Skip y/yes confirmation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pitr -d --no-restart                         &lt;span class=&#34;c1&#34;&gt;# Leave PostgreSQL stopped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pig pitr -d -D /tmp/pg-restore --no-restart      &lt;span class=&#34;c1&#34;&gt;# Side restore&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;命令概览&#34;&gt;命令概览&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%91%bd%e4%bb%a4%e6%a6%82%e8%a7%88&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pig pitr&lt;/code&gt; 的默认目标是恢复 Pigsty 管理的主数据目录。典型流程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;验证恢复目标参数，必须指定 &lt;code&gt;-d/-I/-t/--name/--lsn/--xid&lt;/code&gt; 之一&lt;/li&gt;
&lt;li&gt;解析 pgBackRest 配置与目标数据目录&lt;/li&gt;
&lt;li&gt;对默认数据目录恢复时，若 Patroni 正在运行，则停止 Patroni&lt;/li&gt;
&lt;li&gt;确保 PostgreSQL 已停止&lt;/li&gt;
&lt;li&gt;调用 &lt;code&gt;pgbackrest restore&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;除非指定 &lt;code&gt;--no-restart&lt;/code&gt;，否则启动 PostgreSQL&lt;/li&gt;
&lt;li&gt;输出恢复后验证与 Patroni 恢复指引&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;与 &lt;code&gt;pig pb restore&lt;/code&gt; 的区别：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;特性&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pitr&lt;/code&gt;&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;&lt;code&gt;pig pb restore&lt;/code&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;停止 Patroni&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;默认数据目录恢复时自动停止&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;手动处理&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;停止 PostgreSQL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动检查并停止&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;必须预先停止&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;启动 PostgreSQL&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;默认自动启动，可用 &lt;code&gt;--no-restart&lt;/code&gt; 禁用&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;手动处理&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;Patroni 恢复&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;不自动恢复，验证后人工处理&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;不处理&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;适用场景&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;生产恢复编排&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;底层 restore 或脚本集成&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-1&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;27&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-1&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-1-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;&lt;span class=&#34;c1&#34;&gt;# 最常用：恢复到 WAL 流末尾&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 恢复到指定时间点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-01 12:00:00+08&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 恢复到备份一致性点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -I
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看执行计划，不实际执行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d --plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 跳过确认，适合自动化脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 从特定备份集恢复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d -b 20251225-120000F
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 恢复默认数据目录，但恢复后不启动 PostgreSQL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d --no-restart
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# side restore：恢复到自定义目录，不触碰 Patroni 与 /pg/data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;install -d -m &lt;span class=&#34;m&#34;&gt;700&lt;/span&gt; -o postgres -g postgres /tmp/pg-restore
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d -D /tmp/pg-restore --no-restart
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 额外 pgBackRest restore 参数写在 -- 之后&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d -- --delta&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;参数说明&#34;&gt;参数说明&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;恢复目标必选其一&#34;&gt;恢复目标（必选其一）&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%81%a2%e5%a4%8d%e7%9b%ae%e6%a0%87%e5%bf%85%e9%80%89%e5%85%b6%e4%b8%80&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--default&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-d&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到 WAL 流末尾（最新数据）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--immediate&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-I&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到备份一致性点&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--time&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到指定时间戳&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--name&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到命名还原点&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--lsn&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到指定 LSN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--xid&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复到指定事务 ID&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;备份与目标选项&#34;&gt;备份与目标选项&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%a4%87%e4%bb%bd%e4%b8%8e%e7%9b%ae%e6%a0%87%e9%80%89%e9%a1%b9&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--set&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-b&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;从特定备份集开始恢复&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--target-action&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;到达恢复目标后的动作：pause/promote/shutdown&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--target-timeline&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-T&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;恢复时间线：latest/current/N/0xN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--exclusive&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-X&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;排他模式：在目标前停止&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&lt;code&gt;--target-action=shutdown&lt;/code&gt; 必须配合 &lt;code&gt;--no-restart&lt;/code&gt;，因为 PostgreSQL 到达目标后会退出。&lt;code&gt;--target-action&lt;/code&gt; 不能与 &lt;code&gt;--default&lt;/code&gt; 同时使用，因为 &lt;code&gt;--default&lt;/code&gt; 已表示恢复到 WAL 末尾。&lt;code&gt;--exclusive/-X&lt;/code&gt; 必须配合明确的停止目标使用：&lt;code&gt;--time&lt;/code&gt;、&lt;code&gt;--lsn&lt;/code&gt; 或 &lt;code&gt;--xid&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--&lt;/code&gt; 后的原生 pgBackRest restore 参数不能覆盖 Pig 已管理的恢复目标、生命周期、数据目录、仓库、配置和选择参数；这些语义应使用 Pig 的一等参数设置。该限制与 &lt;code&gt;pig pb restore&lt;/code&gt; 的 passthrough blocklist 一致。&lt;/p&gt;
&lt;h3 id=&#34;流程控制&#34;&gt;流程控制&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%b5%81%e7%a8%8b%e6%8e%a7%e5%88%b6&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--no-restart&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;restore 后不启动 PostgreSQL&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--plan&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅显示执行计划，不执行&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;跳过交互式 y/yes 确认&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--timeout&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL 启动/恢复等待超时，默认 120 秒&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--force-stop&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;fast stop 失败时允许 immediate shutdown 与 kill fallback&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h3 id=&#34;配置参数&#34;&gt;配置参数&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e9%85%8d%e7%bd%ae%e5%8f%82%e6%95%b0&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;参数&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;简写&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--stanza&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-s&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgBackRest stanza 名称&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--config&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;pgBackRest 配置文件路径&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--repo&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-r&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仓库编号&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--dbsu&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-U&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;数据库超级用户（默认：&lt;code&gt;postgres&lt;/code&gt;）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;--data&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-D&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;目标数据目录&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&#34;时间格式&#34;&gt;时间格式&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%97%b6%e9%97%b4%e6%a0%bc%e5%bc%8f&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;--time&lt;/code&gt; 参数支持多种时间格式，会按当前时区补全缺失部分：&lt;/p&gt;
&lt;div class=&#34;td-table-scroll td-table-scroll--full&#34; tabindex=&#34;0&#34; role=&#34;region&#34; aria-label=&#34;可横向滚动的表格&#34;&gt;
&lt;table class=&#34;full-width&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;格式&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;示例&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;完整格式&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;2025-01-01 12:00:00+08&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;包含时区的完整时间戳&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;无时区日期时间&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;2025-01-01 12:00:00&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动补当前本地时区，&lt;code&gt;T&lt;/code&gt; 分隔符也可接受&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅日期&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;2025-01-01&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动补全为当天 00:00:00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;仅时间&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;12:00:00&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&#34;text-align: left&#34;&gt;自动补全为今天的该时间&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;计划输出与可重放的 next-action 命令会把仅日期、仅时间目标规范化为带时区的确定性时间戳；该规则与 &lt;code&gt;pig pb restore --plan&lt;/code&gt; 一致。&lt;/p&gt;
&lt;h2 id=&#34;托管目录与-side-restore&#34;&gt;托管目录与 Side Restore&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%89%98%e7%ae%a1%e7%9b%ae%e5%bd%95%e4%b8%8e-side-restore&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;托管 PostgreSQL 数据目录来自有效 pgBackRest 配置中的 &lt;code&gt;pg1-path&lt;/code&gt; 与命令参数，而不是硬编码 &lt;code&gt;/pg/data&lt;/code&gt;。例如托管 PGDATA 是 &lt;code&gt;/var/lib/pgsql/18/data&lt;/code&gt; 时，仍然按托管恢复处理。路径比较会在需要时以数据库超级用户解析软链接，因此指向托管 PGDATA 的软链接不会被误判为 side restore。&lt;/p&gt;
&lt;p&gt;显式 &lt;code&gt;-D/--data&lt;/code&gt; 且解析后不同于托管目录时，才是 side restore。side restore 必须使用 &lt;code&gt;--no-restart&lt;/code&gt;，不会停止 Patroni，也不会管理默认 PostgreSQL 服务；恢复后请手工使用类似 &lt;code&gt;pg_ctl -D &amp;lt;dir&amp;gt; -o &amp;quot;-p 5433&amp;quot; start&lt;/code&gt;、&lt;code&gt;pg_ctl -D &amp;lt;dir&amp;gt; status&lt;/code&gt; 和 &lt;code&gt;pgbackrest --pg1-path=&amp;lt;dir&amp;gt; stanza-create&lt;/code&gt; 的命令处理。side restore 目录必须已存在且归属 DBSU；与托管 PGDATA 不同，它不要求预先包含 &lt;code&gt;PG_VERSION&lt;/code&gt; 初始化标记。Pig 不会自动创建该目录，因为命令需要在 destructive restore 前完成路径归类、owner 检查和安全提示。&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-2&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-2&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-2-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;install -d -m &lt;span class=&#34;m&#34;&gt;700&lt;/span&gt; -o postgres -g postgres /tmp/pg-restore
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d -D /tmp/pg-restore --no-restart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;对于非 &lt;code&gt;/pg/data&lt;/code&gt; 的托管 PGDATA，恢复后的 runbook 命令会显式带上有效数据目录，例如：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-3&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-3&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-3-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;pig pg start -D /var/lib/pgsql/18/data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg psql -D /var/lib/pgsql/18/data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg promote -D /var/lib/pgsql/18/data&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;pig pg psql -D &amp;lt;dir&amp;gt;&lt;/code&gt; 会读取该目录的 &lt;code&gt;postmaster.pid&lt;/code&gt;，使用其中记录的端口和 socket 目录连接恢复后的实例；无法解析 postmaster 信息时不会静默回退到默认连接目标。&lt;/p&gt;
&lt;h2 id=&#34;执行流程&#34;&gt;执行流程&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%89%a7%e8%a1%8c%e6%b5%81%e7%a8%8b&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;第一阶段预检查&#34;&gt;第一阶段：预检查&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%ac%ac%e4%b8%80%e9%98%b6%e6%ae%b5%e9%a2%84%e6%a3%80%e6%9f%a5&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;验证恢复目标参数，缺失目标时只显示帮助并返回错误&lt;/li&gt;
&lt;li&gt;解析有效 pgBackRest 配置、stanza、仓库与托管 &lt;code&gt;pg1-path&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;检查托管数据目录存在且已初始化&lt;/li&gt;
&lt;li&gt;对 side restore，检查自定义目录存在且归属 DBSU&lt;/li&gt;
&lt;li&gt;验证所选 stanza 正常且存在备份；指定 &lt;code&gt;--set&lt;/code&gt; 时验证对应备份集存在&lt;/li&gt;
&lt;li&gt;检测 Patroni 服务状态与 PostgreSQL 运行状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第二阶段处理-patroni&#34;&gt;第二阶段：处理 Patroni&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%ac%ac%e4%ba%8c%e9%98%b6%e6%ae%b5%e5%a4%84%e7%90%86-patroni&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;托管数据目录恢复时，如果 Patroni 正在运行，命令会停止 Patroni，让目标 PGDATA 在 restore 期间保持离线。恢复完成后 Patroni 会保持停止。自定义 &lt;code&gt;-D&lt;/code&gt; side restore 不触碰托管数据目录，因此不会停止 Patroni。&lt;/p&gt;
&lt;h3 id=&#34;第三阶段确保-postgresql-停止&#34;&gt;第三阶段：确保 PostgreSQL 停止&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%ac%ac%e4%b8%89%e9%98%b6%e6%ae%b5%e7%a1%ae%e4%bf%9d-postgresql-%e5%81%9c%e6%ad%a2&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;命令会先等待 Patroni 停止后 PostgreSQL 自动退出，再重试 &lt;code&gt;pg_ctl stop -m fast&lt;/code&gt;。如果 PostgreSQL 仍无法停止，默认不会使用更激进手段；只有显式指定 &lt;code&gt;--force-stop&lt;/code&gt;，才允许 immediate shutdown 与最终的 kill fallback。&lt;/p&gt;
&lt;h3 id=&#34;第四阶段执行恢复&#34;&gt;第四阶段：执行恢复&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%ac%ac%e5%9b%9b%e9%98%b6%e6%ae%b5%e6%89%a7%e8%a1%8c%e6%81%a2%e5%a4%8d&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;调用 pgBackRest 执行 restore，并把恢复目标、备份集、时间线、target action 等参数映射到 &lt;code&gt;pgbackrest restore&lt;/code&gt;。原生 pgBackRest 参数可以写在 &lt;code&gt;--&lt;/code&gt; 之后：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-4&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-4&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-4-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;pig pitr -d -- --delta&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;第五阶段启动或保持停止&#34;&gt;第五阶段：启动或保持停止&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%ac%ac%e4%ba%94%e9%98%b6%e6%ae%b5%e5%90%af%e5%8a%a8%e6%88%96%e4%bf%9d%e6%8c%81%e5%81%9c%e6%ad%a2&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;除非指定 &lt;code&gt;--no-restart&lt;/code&gt;，命令会在 restore 后启动 PostgreSQL，并等待恢复完成。对于 &lt;code&gt;--default&lt;/code&gt; 与 &lt;code&gt;--target-action=promote&lt;/code&gt;，命令会等待恢复实例上的 &lt;code&gt;pg_is_in_recovery()&lt;/code&gt; 变为 false；恢复与后续 SQL 探测会绑定恢复数据目录 &lt;code&gt;postmaster.pid&lt;/code&gt; 中的端口，并在存在时使用其中的 socket 目录。以下情况必须或通常应使用 &lt;code&gt;--no-restart&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自定义 &lt;code&gt;-D&lt;/code&gt; side restore，因为恢复出的配置仍保留原端口，需要手动指定空闲端口启动&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--target-action=shutdown&lt;/code&gt;，因为 PostgreSQL 到达恢复目标后会退出&lt;/li&gt;
&lt;li&gt;需要人工检查恢复目录后再决定是否启动&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%bd%bf%e7%94%a8%e7%a4%ba%e4%be%8b&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;场景一误删数据恢复&#34;&gt;场景一：误删数据恢复&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%9c%ba%e6%99%af%e4%b8%80%e8%af%af%e5%88%a0%e6%95%b0%e6%8d%ae%e6%81%a2%e5%a4%8d&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-5&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;12&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-5&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-5-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;&lt;span class=&#34;c1&#34;&gt;# 1. 查看可用备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 预览恢复计划&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-15 09:30:00+08&amp;#34;&lt;/span&gt; --plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 执行恢复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-01-15 09:30:00+08&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. 验证数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg psql
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SELECT * FROM important_table&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;场景二恢复到最新状态&#34;&gt;场景二：恢复到最新状态&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%9c%ba%e6%99%af%e4%ba%8c%e6%81%a2%e5%a4%8d%e5%88%b0%e6%9c%80%e6%96%b0%e7%8a%b6%e6%80%81&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-6&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-6&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-6-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;pig pitr -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;场景三恢复到备份一致性点&#34;&gt;场景三：恢复到备份一致性点&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%9c%ba%e6%99%af%e4%b8%89%e6%81%a2%e5%a4%8d%e5%88%b0%e5%a4%87%e4%bb%bd%e4%b8%80%e8%87%b4%e6%80%a7%e7%82%b9&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-7&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-7&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-7-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;pig pitr -I&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;场景四恢复后保持停止&#34;&gt;场景四：恢复后保持停止&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%9c%ba%e6%99%af%e5%9b%9b%e6%81%a2%e5%a4%8d%e5%90%8e%e4%bf%9d%e6%8c%81%e5%81%9c%e6%ad%a2&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-8&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-8&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-8-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;pig pitr -d --no-restart
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# PostgreSQL 与 Patroni 都保持停止；手动检查目录或日志后再启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h3 id=&#34;场景五自定义目录-side-restore&#34;&gt;场景五：自定义目录 side restore&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%9c%ba%e6%99%af%e4%ba%94%e8%87%aa%e5%ae%9a%e4%b9%89%e7%9b%ae%e5%bd%95-side-restore&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-9&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-9&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-9-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;install -d -m &lt;span class=&#34;m&#34;&gt;700&lt;/span&gt; -o postgres -g postgres /tmp/pg-restore
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pitr -d -D /tmp/pg-restore --no-restart
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 使用空闲端口手动启动 side restore&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg_ctl -D /tmp/pg-restore -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;-p 5433&amp;#34;&lt;/span&gt; start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;执行计划示例&#34;&gt;执行计划示例&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%89%a7%e8%a1%8c%e8%ae%a1%e5%88%92%e7%a4%ba%e4%be%8b&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;执行 &lt;code&gt;pig pitr -d --plan&lt;/code&gt; 会显示类似以下的计划：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-10&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;text&#34; data-td-line-count=&#34;21&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-10&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-10-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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;══════════════════════════════════════════════════════════════════
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; PITR Execution Plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;══════════════════════════════════════════════════════════════════
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Current State:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Data Directory:  /pg/data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Database User:   postgres
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Patroni Service: active
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  PostgreSQL:      running (PID: 12345)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Recovery Target:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Latest (end of WAL stream)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Execution Steps:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  [1] Stop Patroni service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  [2] Ensure PostgreSQL is stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  [3] Execute pgBackRest restore
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  [4] Start PostgreSQL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  [5] Print post-restore guidance
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;══════════════════════════════════════════════════════════════════&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id=&#34;恢复后操作&#34;&gt;恢复后操作&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%81%a2%e5%a4%8d%e5%90%8e%e6%93%8d%e4%bd%9c&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;成功恢复后，请先验证数据，再决定如何恢复服务编排：&lt;/p&gt;
&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e04fe725-fence-11&#34; data-td-code data-td-code-auto-id
     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;
  &lt;button class=&#34;td-code__copy&#34; type=&#34;button&#34; hidden data-td-code-copy
          data-td-code-target=&#34;td-code-e04fe725-fence-11&#34; data-td-copy-mode=&#34;all&#34;
          data-td-label-copy=&#34;复制代码&#34;
          data-td-label-copied=&#34;已复制&#34;
          data-td-label-error=&#34;复制失败&#34;
          aria-label=&#34;复制代码&#34; title=&#34;复制代码&#34;&gt;
    &lt;i class=&#34;fa-regular fa-copy&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/div&gt;
  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e04fe725-fence-11-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;&lt;span class=&#34;c1&#34;&gt;# 验证数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg psql
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 如果恢复到了手工目标，且需要提升为主库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pg promote
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 验证完成后再恢复 Patroni 管理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl start patroni
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 如有需要，重新创建 pgBackRest stanza&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pig pb create&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;span class=&#34;visually-hidden&#34; role=&#34;status&#34; aria-live=&#34;polite&#34; data-td-code-status&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;托管数据目录恢复后，Patroni 保持停止是刻意设计：避免恢复出的旧状态在未经确认前重新进入 HA 编排。&lt;/p&gt;
&lt;h2 id=&#34;安全机制&#34;&gt;安全机制&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%ae%89%e5%85%a8%e6%9c%ba%e5%88%b6&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;恢复目标必填：&lt;/strong&gt; 不指定 &lt;code&gt;-d/-I/-t/--name/--lsn/--xid&lt;/code&gt; 时，命令只显示帮助，不执行 restore。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;确认机制：&lt;/strong&gt; 文本模式下，破坏性恢复会在执行前要求交互式 &lt;code&gt;y&lt;/code&gt;/&lt;code&gt;yes&lt;/code&gt; 确认；自动化脚本可使用 &lt;code&gt;-y|--yes&lt;/code&gt;。结构化输出模式不会交互提示，必须使用 &lt;code&gt;--yes&lt;/code&gt; 执行或 &lt;code&gt;--plan&lt;/code&gt; 预览。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patroni 边界：&lt;/strong&gt; 托管数据目录恢复时，命令会在需要时停止 Patroni，防止 Patroni 在 restore 期间重新拉起 PostgreSQL。恢复后不会自动重入 Patroni。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Side restore 边界：&lt;/strong&gt; 自定义 &lt;code&gt;-D&lt;/code&gt; side restore 必须使用 &lt;code&gt;--no-restart&lt;/code&gt;，因为恢复出来的 PostgreSQL 配置仍使用原端口；side restore 不管理 Patroni 或默认 PostgreSQL 服务。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;失败边界：&lt;/strong&gt; 如果 restore 在 Patroni 已停止后失败，Patroni 会保持停止，目标数据目录可能已经部分恢复。修复底层问题后应重新执行 PITR，或先验证恢复状态；不要在未确认前启动 Patroni。如果 restore 已执行但 PostgreSQL 启动失败，同样应先检查 PostgreSQL/pgBackRest 日志并验证数据目录，再决定是否恢复 Patroni 管理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;结构化输出：&lt;/strong&gt; 结构化执行需要 &lt;code&gt;--yes&lt;/code&gt;；&lt;code&gt;--plan&lt;/code&gt; 是预览路径。成功执行后的结构化 PITR 结果会把恢复后操作放在 Result envelope 的 &lt;code&gt;next_actions&lt;/code&gt;，而不是 &lt;code&gt;data&lt;/code&gt; 内部。&lt;code&gt;data&lt;/code&gt; 包含 &lt;code&gt;requested_data_dir&lt;/code&gt;、&lt;code&gt;effective_data_dir&lt;/code&gt;、&lt;code&gt;managed_data_dir&lt;/code&gt; 与 &lt;code&gt;side_restore&lt;/code&gt;，便于自动化区分用户输入和实际恢复目标。&lt;/p&gt;
&lt;h2 id=&#34;设计说明&#34;&gt;设计说明&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%ae%be%e8%ae%a1%e8%af%b4%e6%98%8e&#34; aria-label=&#34;标题锚点&#34;&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pig pitr&lt;/code&gt; 调用 pgBackRest restore，并在本地处理 Patroni/PostgreSQL 停止与可选启动。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pig pitr&lt;/code&gt; 不是集群恢复总控，不负责 Patroni failover、rejoin、VIP 或应用流量切换。&lt;/li&gt;
&lt;li&gt;需要底层 restore 语义或脚本细粒度控制时，使用 &lt;a href=&#34;https://pig.pgsty.com/zh/pb/#pb-restore&#34;&gt;&lt;code&gt;pig pb restore&lt;/code&gt;&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;需要手工切换 Patroni 集群时，使用 &lt;a href=&#34;https://pig.pgsty.com/zh/pt/&#34;&gt;&lt;code&gt;pig pt switchover CLUSTER&lt;/code&gt;&lt;/a&gt; 或 &lt;a href=&#34;https://pig.pgsty.com/zh/pt/&#34;&gt;&lt;code&gt;pig pt failover CLUSTER --candidate MEMBER&lt;/code&gt;&lt;/a&gt;（v1.6.0 起为 patronictl 原生透传，集群名必填）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;权限执行：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果当前用户已是 DBSU：直接执行命令&lt;/li&gt;
&lt;li&gt;如果当前用户是 root：使用 &lt;code&gt;su - postgres -c&lt;/code&gt; 执行&lt;/li&gt;
&lt;li&gt;其他用户：使用 &lt;code&gt;sudo -inu postgres --&lt;/code&gt; 执行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;平台支持：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;此命令专为 Linux 系统设计，依赖 pgBackRest、systemd（托管服务场景）以及 DBSU 可访问的数据目录与日志路径。&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
