PGSQL定制

    Pigsty默认提供了近100关于PGSQL的参数,描述用户所需的PostgreSQL集群,通常可以满足绝大多数用户需求。

    但如果您对Pigsty创建的数据库集群进行更深一步的定制,则可以参考本文内容,对与Postgres模板进行定制

    Pigsty使用 Patroni 管理与初始化Postgres数据库集群。 如果用户希望修改PostgreSQL数据库集群的默认配置参数,规格与调优方案,高可用策略,DCS访问,管控API,可以通过修改Patroni模板的方式实现。

    Pigsty使用Patroni完成供给的主体工作,即使用户选择了 ,拉起数据库集群也会由Patroni负责,并在创建完成后移除Patroni组件。 用户可以通过Patroni配置文件,完成大部分的PostgreSQL集群定制工作,Patroni配置文件格式详情请参考 Patroni官方文档

    Pigsty提供了几种预定义的初始化模板,初始化模板是用于初始化数据库集群的定义文件,默认位于roles/postgres/templates/。包括:

    在安装Pigsty进行Configure的过程中,Pigsty会检测根据当前机器(管理机)的规格,自动选择对应的默认规格。

    定制您自己的Patroni模板时,您可以用已有的几种基础模板作为基线,在此基础上进行修改。

    并放置于templates/目录中,以<mode>.yml格式命名即可。

    Patroni中的模板变量请保留,否则相关参数可能无法正常工作。例如

    最后,在配置文件的 pg_conf 配置项,指定您新创建的模板名称即可,例如

    通过这种方式确保任何在该数据库集群中新创建的数据库都带有相同的默认配置:模式,扩展,默认权限。

    定制数据库模板时,相关参数会首先被渲染为SQL脚本后,在部署好的数据库集群上执行。

    pg-init是用于自定义初始化模板的Shell脚本路径,该脚本将以postgres用户身份,仅在主库上执行,执行时数据库集群主库已经被拉起,可以执行任意Shell命令,或通过psql执行任意SQL命令。

    如果不指定该配置项,Pigsty会使用默认的 Shell脚本,如下所示。

    如果用户需要执行复杂的定制逻辑,可在该脚本的基础上进行追加。注意 pg-init 用于定制数据库集群,通常这是通过修改 模板数据库 实现的。在该脚本执行时,数据库集群已经启动,但业务用户与业务数据库尚未创建。因此模板数据库的修改会反映在默认定义的业务数据库中。