# polar

> PolarDB for PostgreSQL 内核，提供 Aurora 风格的存算分离能力

---

LLMS index: [llms.txt](/llms.txt)

---

`polar` 配置模板使用阿里云 PolarDB for PostgreSQL 数据库内核替代原生 PostgreSQL，提供"云原生" Aurora 风格的存算分离能力。

完整教程请参考：**[PolarDB for PostgreSQL (POLAR) 内核使用说明](/docs/pgsql/kernel/polardb/)**；所有内核分支的差异与版本口径见 [PGSQL 内核总览](/docs/pgsql/kernel/)。


--------

## 配置概览

- 配置名称： `polar`
- 节点数量： 单节点
- 配置说明：使用 PolarDB for PostgreSQL 内核
- 适用系统：`el8`, `el9`, `el10`, `d12`, `d13`, `u22`, `u24`, `u26`
- 适用架构：`x86_64`, `aarch64`
- 相关配置：[`meta`](/docs/conf/meta/)

启用方式：

```bash
./configure -c polar [-i <primary_ip>]
```


--------

## 配置内容

源文件地址：[`pigsty/conf/polar.yml`](https://github.com/pgsty/pigsty/blob/main/conf/polar.yml)

<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># File      :   polar.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Desc      :   Pigsty 1-node PolarDB Kernel Config Template</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Ctime     :   2020-08-05</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Mtime     :   2026-07-08</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Docs      :   https://pigsty.io/docs/conf/polar</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># License   :   Apache-2.0 @ https://pigsty.io/docs/about/license/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Copyright :   2018-2026  Ruohang Feng / Vonng (rh@vonng.com)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># This is the config template for PolarDB PG Kernel,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Which is a PostgreSQL 17 fork with RAC flavor features</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># tutorial: https://pigsty.io/docs/pgsql/kernel/polardb</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Usage:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#   curl https://repo.pigsty.io/get | bash</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#   ./configure -c polar</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#   ./deploy.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">all</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">children</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">infra</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">infra_seq</span><span class="p">:</span><span class="w"> </span><span class="nt">1 }} ,vars</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">repo_enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span>}}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">etcd</span><span class="p">:</span><span class="w">  </span>{<span class="w"> </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">etcd_seq</span><span class="p">:</span><span class="w"> </span><span class="nt">1  }} ,vars</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">etcd_cluster</span><span class="p">:</span><span class="w"> </span><span class="l">etcd  }}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#minio: { hosts: { 10.10.10.10: { minio_seq: 1 }} ,vars: { minio_cluster: minio }}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># PolarDB Database Cluster</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg-meta</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">hosts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">pg_seq</span><span class="p">:</span><span class="w"> </span><span class="nt">1, pg_role</span><span class="p">:</span><span class="w"> </span><span class="l">primary }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_cluster</span><span class="p">:</span><span class="w"> </span><span class="l">pg-meta</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_users</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbuser_meta ,password</span><span class="p">:</span><span class="w"> </span><span class="nt">DBUser.Meta   ,pgbouncer</span><span class="p">:</span><span class="w"> </span><span class="nt">true ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[dbrole_admin]    ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty admin user }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbuser_view ,password</span><span class="p">:</span><span class="w"> </span><span class="nt">DBUser.Viewer ,pgbouncer</span><span class="p">:</span><span class="w"> </span><span class="nt">true ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[dbrole_readonly] ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">read-only viewer for meta database }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_databases</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">meta ,baseline</span><span class="p">:</span><span class="w"> </span><span class="nt">cmdb.sql ,comment</span><span class="p">:</span><span class="w"> </span><span class="nt">pigsty meta database ,schemas</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="l">pigsty]}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_hba_rules</span><span class="p">:</span><span class="w">   </span><span class="c"># https://pigsty.io/docs/pgsql/config/hba</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="nt">all ,db</span><span class="p">:</span><span class="w"> </span><span class="nt">all ,addr</span><span class="p">:</span><span class="w"> </span><span class="nt">intra ,auth</span><span class="p">:</span><span class="w"> </span><span class="nt">pwd ,title</span><span class="p">:</span><span class="w"> </span><span class="nt">&#39;everyone intranet access with password&#39; ,order</span><span class="p">:</span><span class="w"> </span><span class="m">800</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_crontab</span><span class="p">:</span><span class="w">     </span><span class="c"># https://pigsty.io/docs/pgsql/admin/crontab</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- <span class="s1">&#39;00 01 * * * /pg/bin/pg-backup full&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c"># PolarDB Ad Hoc Settings</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_version</span><span class="p">:</span><span class="w"> </span><span class="m">17</span><span class="w">                            </span><span class="c"># PolarDB PG is based on PG 17</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_mode</span><span class="p">:</span><span class="w"> </span><span class="l">polar                           </span><span class="w"> </span><span class="c"># PolarDB PG Compatible mode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_packages</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="l">polardb, pgsql-common ]   </span><span class="w"> </span><span class="c"># Replace PG kernel with PolarDB kernel</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_exporter_exclude_database</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;template0,template1,postgres,polardb_admin&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_default_roles</span><span class="p">:</span><span class="w">                         </span><span class="c"># PolarDB require replicator as superuser</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbrole_readonly  ,login</span><span class="p">:</span><span class="w"> </span><span class="nt">false ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">role for global read-only access     }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbrole_offline   ,login</span><span class="p">:</span><span class="w"> </span><span class="nt">false ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">role for restricted read-only access }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbrole_readwrite ,login</span><span class="p">:</span><span class="w"> </span><span class="nt">false ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[dbrole_readonly] ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">role for global read-write access }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbrole_admin     ,login</span><span class="p">:</span><span class="w"> </span><span class="nt">false ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[pg_monitor, dbrole_readwrite] ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">role for object creation }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">postgres     ,superuser</span><span class="p">:</span><span class="w"> </span><span class="nt">true  ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">system superuser }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">replicator   ,superuser</span><span class="p">:</span><span class="w"> </span><span class="nt">true  ,replication</span><span class="p">:</span><span class="w"> </span><span class="nt">true ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[pg_monitor, dbrole_readonly] ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">system replicator }</span><span class="w"> </span><span class="c"># &lt;- superuser is required for replication</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbuser_dba   ,superuser</span><span class="p">:</span><span class="w"> </span><span class="nt">true  ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[dbrole_admin]  ,pgbouncer</span><span class="p">:</span><span class="w"> </span><span class="nt">true ,pool_mode</span><span class="p">:</span><span class="w"> </span><span class="nt">session, pool_connlimit</span><span class="p">:</span><span class="w"> </span><span class="nt">16 ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">pgsql admin user }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">dbuser_monitor ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[pg_monitor] ,pgbouncer</span><span class="p">:</span><span class="w"> </span><span class="nt">true ,parameters</span><span class="p">:</span><span class="w"> </span>{<span class="nt">log_min_duration_statement</span><span class="p">:</span><span class="w"> </span><span class="nt">1000 } ,pool_mode</span><span class="p">:</span><span class="w"> </span><span class="nt">session ,pool_connlimit</span><span class="p">:</span><span class="w"> </span><span class="nt">8 ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">pgsql monitor user }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">vars</span><span class="p">:</span><span class="w">                               </span><span class="c"># global variables</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># INFRA : https://pigsty.io/docs/infra/param</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l">v4.5.0                  </span><span class="w"> </span><span class="c"># pigsty version string</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">admin_ip</span><span class="p">:</span><span class="w"> </span><span class="m">10.10.10.10</span><span class="w">             </span><span class="c"># admin node ip address</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">region</span><span class="p">:</span><span class="w"> </span><span class="l">default                  </span><span class="w"> </span><span class="c"># upstream mirror region: default,china,europe</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">infra_portal</span><span class="p">:</span><span class="w">                     </span><span class="c"># infra services exposed via portal</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">home </span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">domain</span><span class="p">:</span><span class="w"> </span><span class="l">i.pigsty }    </span><span class="w"> </span><span class="c"># default domain name</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># NODE : https://pigsty.io/docs/node/param</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">nodename_overwrite</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">           </span><span class="c"># do not overwrite node hostname on single node mode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">node_repo_modules</span><span class="p">:</span><span class="w"> </span><span class="l">node,infra,pgsql</span><span class="w"> </span><span class="c"># add these repos directly to the singleton node</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">node_tune</span><span class="p">:</span><span class="w"> </span><span class="l">oltp                    </span><span class="w"> </span><span class="c"># node tuning specs: oltp,olap,tiny,crit</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># PGSQL : https://pigsty.io/docs/pgsql/param</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_version</span><span class="p">:</span><span class="w"> </span><span class="m">17</span><span class="w">                      </span><span class="c"># PolarDB is compatible with PG 17</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_conf</span><span class="p">:</span><span class="w"> </span><span class="l">oltp.yml                  </span><span class="w"> </span><span class="c"># pgsql tuning specs: {oltp,olap,tiny,crit}.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># PASSWORD : https://pigsty.io/docs/setup/security/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">grafana_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">grafana_view_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Viewer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.DBA</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_monitor_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Monitor</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_replication_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Replicator</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">patroni_password</span><span class="p">:</span><span class="w"> </span><span class="l">Patroni.API</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">haproxy_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">minio_secret_key</span><span class="p">:</span><span class="w"> </span><span class="l">S3User.MinIO</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">etcd_root_password</span><span class="p">:</span><span class="w"> </span><span class="l">Etcd.Root</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">...</span><span class="w">
</span></span></span></code></pre></div>


--------

## 配置解读

`polar` 模板使用阿里云开源的 PolarDB for PostgreSQL 内核，提供云原生数据库能力。

**关键特性**：
- 存算分离架构，计算节点和存储节点可独立扩展
- 支持一写多读，读副本秒级扩展
- 兼容 PostgreSQL 生态，保持 SQL 兼容性
- 支持共享存储场景，适合云环境部署
- 默认 PolarDB 内核路径为 `/usr/polar-17`
- 可用扩展以 PolarDB 17 内核为准，常用扩展可参考 [`pgaudit`](/ext/e/pgaudit/)、[`pg_partman`](/ext/e/pg_partman/)、[`pg_profile`](/ext/e/pg_profile/)、[`pg_repack`](/ext/e/pg_repack/)、[`pg_stat_kcache`](/ext/e/pg_stat_kcache/)、[`pg_cron`](/ext/e/pg_cron/)、[`pg_hint_plan`](/ext/e/pg_hint_plan/)

**适用场景**：
- 需要存算分离架构的云原生场景
- 读多写少的业务负载
- 需要快速扩展读副本的场景
- 评估 PolarDB 特性的测试环境

**注意事项**：
- PolarDB 当前基于 PostgreSQL 17
- 复制用户需要超级用户权限（与原生 PostgreSQL 不同）
- 部分 PostgreSQL 扩展可能存在兼容性问题
- 当前模板已提供 `x86_64` 与 `aarch64` 软件包支持
