PolarDB PostgreSQL轻量版支持通过执行SQL命令,修改postgresql.conf文件或修改config.yaml文件调整集群参数配置。
基础概念
参数类型决定了设置该参数时使用的语法,支持以下五种参数类型:
布尔:该类型的参数值支持设置为
on/off、true/false、yes/no、1/0或其无歧义前缀。字符串:该类型的参数值必须使用单引号进行引用。若参数值仅为简单的数字或标识符,可省略引号。
整数和浮点数:
对于浮点数类型参数值,仅允许保留一位小数。
不需要使用千位分隔符和引号。
对于隐含单位的数字参数值(如内存或时间值),当省略单位时使用默认单位(参见
pg_settings.unit)。为了方便起见,也可以显式地指定一个与默认单位不同的单位,例如,设置时间值为120 ms,即参数的实际单位。
说明单位大小写敏感,且数字值和单位之间需保留一个空格。
可用内存单位包括:B(字节)、kB(千字节)、MB(兆字节)和GB(吉字节)。相邻内存单位换算以1024为基数。
可用时间单位包括:
ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。
枚举:该类型的参数值与字符串参数指定的方式相同,但枚举参数值大小写不敏感。具体参数可用值请查询
pg_settings.enumvals。
通过SQL配置参数
PolarDB PostgreSQL轻量版提供以下SQL语句用于修改集群配置。
全局配置
ALTER SYSTEM:实现全局配置更新,在效果上等于编辑postgresql.conf。对于重启参数需要使用pdbcli restart cluster重启集群,重启后新的参数配置将在集群所有节点生效。对于非重启参数可在各节点执行pg_ctl reload或调用SQL函数pg_reload_conf()使节点重新读取加载新的配置文件。ALTER DATABASE:实现数据库级别配置更新。ALTER ROLE:实现用户级别配置更新。
会话级配置
SET configuration_parameter TO value;:修改当前会话目标参数值,对其它会话无影响。
可通过SHOW configuration_parameter;查看目标参数当前值。也可以使用pg_settings系统视图查看和改变会话级别参数值。
使用UPDATE并且指定更新命令setting列,其效果等同于发出SET命令。例如:SET configuration_parameter TO DEFAULT;等效于UPDATE pg_settings SET setting = reset_val WHERE name= 'configuration_parameter'。
使用pdbcli修改参数
在config.yaml的all.db.vars.polardb_custom_params中添加参数实现多个参数修改。配置文件内容请参见配置文件示例。
完成在config.yaml文件的修改后,需要使用pdbcli restart cluster重启集群,重启后新的参数配置将在集群所有节点生效。每次通过pdbcli重启集群时,都会使每个节点的postgresql.conf文件中的配置参数符合配置模板中的设置。
参数名称和单位必须准确无误,修改非重启参数时也需要重启集群。
通过postgresql.conf文件修改参数
部分参数修改需要重启数据库后才能生效。
配置文件中的非法参数设置将在SIGHUP处理过程中被忽略,但会记录相关日志信息。
完成集群目录初始化后,postgresql.conf文件将默认安装于数据目录中。通过编辑postgresql.conf文件,可设置参数在集群中的默认值。例如:
log_connections = yes
log_destination = 'syslog'
search_path ='"$user", public'
shared_buffers = 128MB每一行由一个参数名(key)和其对应值(value)组成。
#表示该行内容为注释。非简单标识符或数字的参数值应使用成对的单引号进行引用,或在引号前添加反斜线进行标识。
同一参数若出现多次且设置的值不一致,则以最后一次设置的值作为有效值。
编辑postgresql.conf文件后,对于重启参数需要使用pdbcli restart cluster重启集群,重启后新的参数配置将在集群所有节点生效。对于非重启参数可在各节点执行pg_ctl reload或调用SQL函数pg_reload_conf()使节点重新读取加载新的配置文件。
除postgresql.conf之外,PolarDB PostgreSQL轻量版数据目录还包含postgresql.auto.conf文件用于保存ALTER SYSTEM SET类型的全局配置。该文件与postgresql.conf格式相同,但不支持手动编辑。 如两个文件中存在相同参数的不同配置,postgresql.auto.conf优先级更高。