GaussDB数据库GUC参数修改参考
【摘要】 修改GaussDB数据库GUC参数是运维工作与性能调优人员经常做得事项,这篇论文详细阐述了如何修改GUC参数以及修改之后验证修改的结果。
1 问题现象
GaussDB数据库在使用和优化过程中,部分参数需要根据实际的使用情况进行修改,根据实际场景的不同,有不同的修改方式。
2 技术背景
GaussDB的参数实际都是保存在配置文件(一般是“gaussdb.conf”、“gs_hba.conf”)中的,数据库启动时,会读取配置文件使其生效,所以修改参数,其实质就是修改配置文件。
3 处理过程
根据参数类型,GaussDB提供了几种修改方法,具体的参数分类和修改方法如下表格:
参数类型 |
说明 |
设置方式 |
INTERNAL |
固定参数,在创建数据库的时候确定,用户无法修改,只能通过show语法或者pg_settings视图进行查看。 |
无 |
POSTMASTER |
数据库服务端参数,在数据库启动时确定,可以通过配置文件指定。 |
guc的set命令 |
SIGHUP |
数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载。 |
guc的set和reload均可 |
BACKEND |
会话连接参数。在创建会话连接时指定,连接建立后无法修改。连接断掉后参数失效。内部使用参数,不推荐用户设置。 |
guc的set和reload均可 说明: 设置该参数后,下一次建立会话连接时生效。 |
SUSET |
数据库管理员参数。可在数据库启动时、数据库启动后或者数据库管理员通过SQL进行设置。 |
guc的set和reload均可,也可以使用数据库管理员执行set参数的sql命令修改设置。 |
USERSET |
普通用户参数。可被任何用户在任何时刻设置。 |
guc的set和reload均可,也可以通过执行set参数的sql命令修改设置。 说明: 设置USERSET类型的参数时,ALTER DATABASE设置的参数值优先级高于gs_guc设置。如果想要gs_guc设置的参数值生效,则需要执行“alter database xxx reset xxx”进行重置。 |
说明:
通常情况下,能使用reload方法修改的,一定是能通过set方式修改的;能通过gs_guc命令修改的,修改配置文件后重启也是可以生效的。
3.1 GUC命令
GUC命令是最常用的修改方法,修改参数前,一般需要使用数据库初始化用户登录到服务器环境。
GUC命令修改参数格式
gs_guc {set|reload} -Z NOTE-TYPE [-N NODE-NAME] [-I INSTANCE-NAME | -D DATADIR] -c "parameter='value'"
参数说明:
参数的生效情况分两种场景:一种则需要重新启动数据库加载参数生效,修改时使用set,只会修改配置文件;另一种是即时生效的,修改时使用reload,会修改配置文件,并发送信号量给数据库进程,使其重新加载配置文件。
-Z后面是节点类型,可以是CN、DN、cmserver、cmagent,最常见的是coordinator(CN)和datanode(DN)
-Z为cmserver或者cmagent时,只修改配置文件中参数(cmserver.conf/cmagent.conf)
-N后面是节点名称,当参数取值为ALL时,表示设置集群中所有的主机;暂不支持一次设置中指定多个-N参数,指定多个-N会报错
-I后面是实例名称,当参数取值为ALL时,表示设置主机中所有的实例;暂不支持一次设置中指定多个-I参数,指定多个-I会报错
-D后面是集群实例路径
- 简单示例:
同时修改CN和DN上max_process_memory参数:
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "max_process_memory=450GB"
也可以单独只在CN或者DN上执行。
单独在CN上执行时:
gs_guc reload -Z coordinator -N all -I all -c "max_process_memory=450GB"
单独在DN上执行时:
gs_guc reload -N all -I all -c "max_process_memory=450GB"
3.2 修改配置文件
通常我们都是修改cn和dn的参数,参数的配置文件一般保存在节点对应服务器目录下,当前以及数据库安装目录为/data/cluster为例,展示配置文件存放路径。
分布式:
CN:/data/cluster/data/cn
DN: /data/cluster/data/dn,该目录下有对应节点目录
主备单机版:/data/cluster/data/dn
修改gaussdb.conf中对应的参数,如果参数不存在,可以增加。
注意:修改配置文件不会使参数立即生效,即使是guc命令中reload类型的参数,需要数据库重新启动后才生效。
3.3 管控平台修改
如果数据库是使用管控平台安装(tpops),那数据库会被平台纳管,可以登录平台后,在“参数模板管理”中进行管理,具体可以参考对应管理平台的用户操作指导。
注意:该方法不适合所有参数,有部分参数不支持在平台修改,需要修改配置文件或者使用GUC命令修改
3.4 SQL命令
前面三种方法修改的参数都是全局生效,还可以使用SQL脚本修改参数,根据sql脚本的不同,生效的范围也不相同。
使参数在某个数据库生效
可以使用alter database,如下示例:
alter database dbName set b_format_behavior_compat_options='enable_set_variables';
也可以执行sql,使参数只在当前session生效
set max_datanode_for_plan=1;
4 验证方法
一般情况下,我们用gsql工具登入到数据做参数修改验证:
gsql ((GaussDB Kernel 505.1.0 build da28c417) compiled at 2024-04-18 22:54:55 commit 8474 last mr 17213 release)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
gaussdb=#
gaussdb=# show max_connections;
max_connections
-----------------
2000
(1 row)
gaussdb=# select name,setting from pg_settings where name='max_connections';
name | setting
-----------------+---------
max_connections | 2000
(1 row)
gaussdb=#
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)