<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>任务，参考 on PIGSTY</title><link>https://pigsty.cc/categories/%E4%BB%BB%E5%8A%A1%E5%8F%82%E8%80%83/</link><description>Recent content in 任务，参考 on PIGSTY</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://pigsty.cc/categories/%E4%BB%BB%E5%8A%A1%E5%8F%82%E8%80%83/index.xml" rel="self" type="application/rss+xml"/><item><title>备份恢复</title><link>https://pigsty.cc/docs/pgsql/backup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.cc/docs/pgsql/backup/</guid><description>&lt;p&gt;Pigsty 使用 &lt;a href="https://pgbackrest.org/"&gt;pgBackRest&lt;/a&gt; 管理 PostgreSQL 备份，这可能是生态系统中最强大的开源备份工具。
它支持增量/并行备份与恢复、加密、&lt;a href="https://pigsty.cc/docs/minio"&gt;MinIO&lt;/a&gt;/S3 等众多特性。Pigsty 默认为每个 &lt;a href="https://pigsty.cc/docs/pgsql"&gt;PGSQL&lt;/a&gt; 集群预配置了备份功能。&lt;/p&gt;
&lt;table class="full-width"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;章节&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/mechanism"&gt;机制&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;备份脚本、定时任务、pgbackrest、仓库与管理&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/policy"&gt;策略&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;备份策略、磁盘规划、恢复窗口权衡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/repository"&gt;仓库&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;配置备份仓库：本地、MinIO、S3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/admin"&gt;管理&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;常用备份管理命令&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/restore"&gt;恢复&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;使用剧本恢复到特定时间点&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/restore#%E5%88%86%E6%AD%A5%E6%89%A7%E8%A1%8C"&gt;示例&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;沙箱示例：手工执行恢复操作&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;免责声明&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Pigsty 尽最大努力提供可靠的 PITR 解决方案，但我们不对 PITR 操作导致的数据丢失承担任何责任，使用需自担风险。如需专业支持，请考虑我们的 &lt;a href="https://pigsty.cc/docs/about/service"&gt;专业服务&lt;/a&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="快速上手"&gt;快速上手&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/mechanism"&gt;备份策略&lt;/a&gt;：使用 Crontab 调度基础备份&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/policy"&gt;WAL 归档&lt;/a&gt;：持续记录写入活动&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pigsty.cc/docs/pgsql/backup/restore"&gt;恢复与还原&lt;/a&gt;：从备份和 WAL 归档中恢复&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;node_crontab&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;00 01 * * * postgres /pg/bin/pg-backup full&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./pgsql-pitr.yml -e &lt;span class="s1"&gt;&amp;#39;{&amp;#34;pg_pitr&amp;#34;: { &amp;#34;time&amp;#34;: &amp;#34;2025-07-13 10:00:00+00&amp;#34; }}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>数据迁移</title><link>https://pigsty.cc/docs/pgsql/migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.cc/docs/pgsql/migration/</guid><description>&lt;p&gt;Pigsty 内置了一个剧本 &lt;a href="https://github.com/Vonng/pigsty/blob/main/pgsql-migration.yml"&gt;&lt;code&gt;pgsql-migration.yml&lt;/code&gt;&lt;/a&gt;，基于逻辑复制来实现在线数据库迁移。&lt;/p&gt;
&lt;p&gt;通过预生成的自动化脚本，应用停机时间可以缩减到几秒内。但请注意，逻辑复制需要 PostgreSQL 10 以上的版本才能工作。&lt;/p&gt;
&lt;p&gt;当然如果您有充足的停机时间预算，那么总是可以使用 &lt;code&gt;pg_dump | psql&lt;/code&gt; 的方式进行停机迁移。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="定义迁移任务"&gt;定义迁移任务&lt;/h2&gt;
&lt;p&gt;想要使用 Pigsty 提供的在线迁移剧本，您需要创建一个定义文件，来描述迁移任务的细节。&lt;/p&gt;
&lt;p&gt;请查看任务定义文件示例作为参考： &lt;a href="https://github.com/Vonng/pigsty/blob/main/files/migration/pg-meta.yml"&gt;&lt;code&gt;files/migration/pg-meta.yml&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这个迁移任务要将 &lt;code&gt;pg-meta.meta&lt;/code&gt; 在线迁移到 &lt;code&gt;pg-test.test&lt;/code&gt;，前者称为 &lt;strong&gt;源集群（SRC）&lt;/strong&gt;， 后者称为 &lt;strong&gt;宿集群（DST）&lt;/strong&gt;。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pg-meta-1	10.10.10.10 --&amp;gt; pg-test-1	10.10.10.11 (10.10.10.12,10.10.10.13)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;基于逻辑复制的迁移以数据库为单位，您需要指定需要迁移的数据库名称，以及数据库源宿集群主节点的 IP 地址，以及超级用户的连接信息。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# PG_MIGRATION&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;context_dir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;~/migration &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 迁移手册 &amp;amp; 脚本的放置目录&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# SRC Cluster (旧集群)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;src_cls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pg-meta &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 源集群名称 &amp;lt;必填&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;src_db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;meta &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 源数据库名称 &amp;lt;必填&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;src_ip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10.10.10.10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 源集群主 IP &amp;lt;必填&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#src_pg: &amp;#39;&amp;#39; # 如果定义，使用此作为源 dbsu pgurl 代替：&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# # postgres://{{ pg_admin_username }}@{{ src_ip }}/{{ src_db }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# # 例如: &amp;#39;postgres://dbuser_dba:DBUser.DBA@10.10.10.10:5432/meta&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#sub_conn: &amp;#39;&amp;#39; # 如果定义，使用此作为订阅连接字符串代替：&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# # host={{ src_ip }} dbname={{ src_db }} user={{ pg_replication_username }}&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# # 例如: &amp;#39;host=10.10.10.10 dbname=meta user=replicator password=DBUser.Replicator&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# DST Cluster (新集群)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;dst_cls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pg-test &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 宿集群名称 &amp;lt;必填&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;dst_db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;test &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 宿数据库名称 &amp;lt;必填&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;dst_ip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10.10.10.11&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 宿集群主 IP &amp;lt;必填&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#dst_pg: &amp;#39;&amp;#39; # 如果定义，使用此作为目标 dbsu pgurl 代替：&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# # postgres://{{ pg_admin_username }}@{{ dst_ip }}/{{ dst_db }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# # 例如: &amp;#39;postgres://dbuser_dba:DBUser.DBA@10.10.10.11:5432/test&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# PGSQL&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg_dbsu&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;postgres&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg_replication_username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;replicator&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg_replication_password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;DBUser.Replicator&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg_admin_username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;dbuser_dba&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg_admin_password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;DBUser.DBA&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg_monitor_username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;dbuser_monitor&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pg_monitor_password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;DBUser.Monitor&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;默认情况下，源宿集群两侧的超级用户连接串会使用全局的管理员用户和各自主库的 IP 地址拼接而成，但您总是可以通过 &lt;code&gt;src_pg&lt;/code&gt; 和 &lt;code&gt;dst_pg&lt;/code&gt; 参数来覆盖这些默认值。
同理，您也可以通过 &lt;code&gt;sub_conn&lt;/code&gt; 参数来覆盖订阅连接串的默认值。&lt;/p&gt;</description></item><item><title>任务教程</title><link>https://pigsty.cc/docs/pgsql/tutorial/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.cc/docs/pgsql/tutorial/</guid><description/></item><item><title>使用 VIP-Manager 为 PostgreSQL 集群配置二层 VIP</title><link>https://pigsty.cc/docs/pgsql/tutorial/pg-vip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.cc/docs/pgsql/tutorial/pg-vip/</guid><description>&lt;p&gt;您可以在 PostgreSQL 集群上绑定一个可选的 L2 VIP —— 前提条件是：集群中的所有节点都在一个二层网络中。&lt;/p&gt;
&lt;p&gt;这个 L2 VIP 强制使用 Master - Backup 模式，Master 始终指向在数据库集群主库实例所在的节点。&lt;/p&gt;
&lt;p&gt;这个 VIP 由 &lt;a href="https://github.com/cybertec-postgresql/vip-manager"&gt;VIP-Manager&lt;/a&gt; 组件管理，它会从 DCS （etcd） 中直接读取由 Patroni 写入的 Leader Key，从而判断自己是否是 Master。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="启用vip"&gt;启用VIP&lt;/h2&gt;
&lt;p&gt;在 PostgreSQL 集群上定义 &lt;a href="https://pigsty.cc/docs/pgsql/param#pg_vip_enabled"&gt;&lt;code&gt;pg_vip_enabled&lt;/code&gt;&lt;/a&gt; 参数为 &lt;code&gt;true&lt;/code&gt;，即可在集群上启用 VIP 组件。当然您也可以在全局配置中启用此配置项。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# pgsql 3 node ha cluster: pg-test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pg-test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hosts:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.10.10.11: &lt;span class="o"&gt;{&lt;/span&gt; pg_seq: 1, pg_role: primary &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# primary instance, leader of cluster&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.10.10.12: &lt;span class="o"&gt;{&lt;/span&gt; pg_seq: 2, pg_role: replica &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# replica instance, follower of leader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.10.10.13: &lt;span class="o"&gt;{&lt;/span&gt; pg_seq: 3, pg_role: replica, pg_offline_query: &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# replica with offline access&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; vars:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pg_cluster: pg-test &lt;span class="c1"&gt;# define pgsql cluster name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pg_users: &lt;span class="o"&gt;[{&lt;/span&gt; name: &lt;span class="nb"&gt;test&lt;/span&gt; , password: &lt;span class="nb"&gt;test&lt;/span&gt; , pgbouncer: &lt;span class="nb"&gt;true&lt;/span&gt; , roles: &lt;span class="o"&gt;[&lt;/span&gt; dbrole_admin &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pg_databases: &lt;span class="o"&gt;[{&lt;/span&gt; name: &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="o"&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 启用 L2 VIP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pg_vip_enabled: &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pg_vip_address: 10.10.10.3/24
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pg_vip_interface: eth1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;请注意，&lt;a href="https://pigsty.cc/docs/pgsql/param#pg_vip_address"&gt;&lt;code&gt;pg_vip_address&lt;/code&gt;&lt;/a&gt; 必须是一个合法的 IP 地址，带有网段，且在当前二层网络中可用。&lt;/p&gt;</description></item><item><title>管理预案</title><link>https://pigsty.cc/docs/infra/admin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pigsty.cc/docs/infra/admin/</guid><description>&lt;p&gt;本章节介绍 Pigsty 部署的日常管理和运维操作。&lt;/p&gt;</description></item></channel></rss>