ITPub博客

首页 > 数据库 > 数据库开发技术 > openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数

openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数

原创 数据库开发技术 作者:shuchaoyang 时间:2023-08-10 07:00:00 0 删除 编辑

openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数130.1 背景信息130.2 GUC参数设置130.3 操作步骤130.4 示例

openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数

130.1 背景信息

openGauss提供了多种修改GUC参数的方法,用户可以方便的针对数据库、用户、会话进行设置。

  • 参数名称不区分大小写。

  • 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。

    • 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。

    • 枚举类型的取值是在系统表pg_settings的enumvals字段取值定义的。

  • 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。

    • 参数的默认单位在系统表pg_settings的unit字段定义的。

    • 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。

    • 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。

具体参数说明请参见GUC参数说明。

130.2 GUC参数设置

openGauss提供了六类GUC参数,具体分类和设置方式请参考表1:

表 1 GUC参数分类

openGauss提供了四种方式来修改GUC参数,具体操作如下:

表 2 GUC参数设置方式

方式一:

  1. 使用如下命令修改参数。

gs_guc set -D datadir -c "paraname=value"

说明:

如果参数是一个字符串变量,则使用-c parameter="'value'"或者使用-c "parameter = 'value'"。

使用以下命令在数据库节点上同时设置某个参数。

gs_guc set -N all -I all -c "paraname=value"

使用以下命令在数据库节点上设置cm_agent某个参数。

gs_guc set -Z cmagent -c "paraname=value"
gs_guc set -Z cmagent -N all -I all -c "paraname=value"

使用以下命令在数据库节点上设置cm_server某个参数。

gs_guc set -Z cmserver -c "paraname=value"
gs_guc set -Z cmserver -N all -I all -c "paraname=value"
  1. 重启数据库使参数生效。

说明:

重启openGauss操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。

gs_om -t stop && gs_om -t start

方式二:

gs_guc reload -D datadir -c "paraname=value"

说明:

使用以下命令在数据库节点上同时设置某个参数。

gs_guc reload -N all -I all -c "paraname=value"

方式三:

修改指定数据库、用户、会话级别的参数。

  • 设置数据库级别的参数

    openGauss=# ALTER DATABASE dbname SET paraname TO value;

    在下次会话中生效。

  • 设置用户级别的参数

    openGauss=# ALTER USER username SET paraname TO value;

    在下次会话中生效。

  • 设置会话级别的参数

    openGauss=# SET paraname TO value;

    修改本次会话中的取值。退出会话后,设置将失效。

    说明:

    SET设置的会话级参数优先级最高,其次是ALTER设置的,其中ALTER DATABASE设置的参数值优先级高于ALTER USER设置,这三种设置方式设置的优先级都高于gs_guc设置方式。

方式四:

使用ALTER SYSTEM SET修改数据库参数。

  • 设置POSTMASERT级别的参数

    openGauss=# ALTER SYSTEM SET paraname TO value;

    重启后生效。

  • 设置SIGHUP级别的参数

    openGauss=# ALTER SYSTEM SET paraname TO value;

    立刻生效(实际等待线程重新加载参数略有延迟)。

  • 设置BACKEND级别的参数

    openGauss=# ALTER SYSTEM SET paraname TO value;

    在下次会话中生效。

注意: 使用方式一和方式二设置参数时,若所设参数不属于当前环境,数据库会提示参数不在支持范围内的相关信息。

130.3 操作步骤

使用方式一设置数据库参数,以在数据库主节点设置archive_mode参数为例。

  1. 以操作系统用户omm登录数据库主节点。

  2. 查看archive_mode参数。

    cat /gaussdb/data/dbnode/postgresql.conf | grep archive_mode
    archive_mode = on

    on表示日志要进行归档操作。

  3. 设置archive_mode参数为off,关闭日志的归档操作。

    gs_guc set -D /gaussdb/data/dbnode -c "archive_mode=off"

    说明:

    可以使用以下命令在数据库节点上设置archive_mode参数为off。

    gs_guc set -N all -I all -c "archive_mode=off"
  4. 重启数据库使参数生效。

    gs_om -t stop && gs_om -t start
  5. 使用如下命令连接数据库。

    gsql -d postgres -p 8000

    postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

    连接成功后,系统显示类似如下信息:

    gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
    Non-SSL connection (SSL connection is recommended when requiring high-security)
    Type "help" for help.

    openGauss=#
  6. 检查参数设置的正确性。

    openGauss=# SHOW archive_mode;
    archive_mode
    --------------
    off
    (1 row)

使用方式二设置参数,以在数据库主节点设置authentication_timeout参数为例。

  1. 以操作系统用户omm登录数据库主节点。

  2. 查看authentication_timeout参数。

    cat /gaussdb/data/dbnode/postgresql.conf | grep authentication_timeout
    authentication_timeout = 1min
  3. 设置authentication_timeout参数为59s。

    gs_guc reload -N all -I all -c "authentication_timeout = 59s"

    Total instances: 2. Failed instances: 0.
    Success to perform gs_guc!

    说明:

    可以使用以下命令在数据库节点上设置authentication_timeout参数为59s。

    gs_guc reload -N all -I all -c "authentication_timeout = 59s"
  4. 使用如下命令连接数据库。

    gsql -d postgres -p 8000

    postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

    连接成功后,系统显示类似如下信息:

    gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
    Non-SSL connection (SSL connection is recommended when requiring high-security)
    Type "help" for help.

    openGauss=#
  5. 检查参数设置的正确性。

    openGauss=# SHOW authentication_timeout;
    authentication_timeout
    ------------------------
    59s
    (1 row)

使用方式三设置参数,以设置explain_perf_mode参数为例。

  1. 以操作系统用户omm登录数据库主节点。

  2. 使用如下命令连接数据库。

    gsql -d postgres -p 8000

    postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

    连接成功后,系统显示类似如下信息:

    gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
    Non-SSL connection (SSL connection is recommended when requiring high-security)
    Type "help" for help.

    openGauss=#
  3. 查看explain_perf_mode参数。

    openGauss=# SHOW explain_perf_mode;
    explain_perf_mode
    -------------------
    normal
    (1 row)
  4. 设置explain_perf_mode参数。

    使用以下任意方式进行设置:

  • 设置数据库级别的参数

    openGauss=# ALTER DATABASE postgres SET explain_perf_mode TO pretty;

    当结果显示为如下信息,则表示设置成功。

    ALTER DATABASE

    在下次会话中生效。

  • 设置用户级别的参数

    openGauss=# ALTER USER omm SET explain_perf_mode TO pretty;

    当结果显示为如下信息,则表示设置成功。

    ALTER ROLE

    在下次会话中生效。

  • 设置会话级别的参数

    openGauss=# SET explain_perf_mode TO pretty;

    当结果显示为如下信息,则表示设置成功。

    SET
  • 检查参数设置的正确性。

    openGauss=# SHOW explain_perf_mode;
    explain_perf_mode
    --------------
    pretty
    (1 row)
  • 130.4 示例

    • 示例1:使用方式一修改openGauss数据库主节点的最大连接数。

    1. 以操作系统用户omm登录数据库主节点。

    2. 使用如下命令连接数据库。

      gsql -d postgres -p 8000

      postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

      连接成功后,系统显示类似如下信息:

      gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
      Non-SSL connection (SSL connection is recommended when requiring high-security)
      Type "help" for help.

      openGauss=#
    3. 查看最大连接数。

      openGauss=# SHOW max_connections;
      max_connections
      -----------------
      200
      (1 row)
    4. 使用如下命令退出数据库。

      openGauss=# \q
    5. 修改openGauss数据库主节点的最大连接数。

      gs_guc set -N all -I all -c "max_connections = 800"
    6. 重启openGauss。

      gs_om -t stop && gs_om -t start
    7. 使用如下命令连接数据库。

      gsql -d postgres -p 8000

      postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

      连接成功后,系统显示类似如下信息:

      gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
      Non-SSL connection (SSL connection is recommended when requiring high-security)
      Type "help" for help.

      openGauss=#
    8. 查看最大连接数。

      openGauss=# SHOW max_connections;
      max_connections
      -----------------
      800
      (1 row)
  • 示例2:使用方式二设置数据库主节点的客户端认证最长时间参数“authentication_timeout”

    1. 以操作系统用户omm登录数据库主节点。

    2. 使用如下命令连接数据库。

      gsql -d postgres -p 8000

      postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

      连接成功后,系统显示类似如下信息:

      gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
      Non-SSL connection (SSL connection is recommended when requiring high-security)
      Type "help" for help.

      openGauss=#
    3. 查看客户端认证的最长时间。

      openGauss=# SHOW authentication_timeout;
      authentication_timeout
      ------------------------
      1min
      (1 row)
    4. 使用如下命令退出数据库。

      openGauss=# \q
    5. 修改数据库主节点的客户端认证最长时间。

      gs_guc reload -N all -I all -c "authentication_timeout = 59s"
    6. 使用如下命令连接数据库。

      gsql -d postgres -p 8000

      postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

      连接成功后,系统显示类似如下信息:

      gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
      Non-SSL connection (SSL connection is recommended when requiring high-security)
      Type "help" for help.

      openGauss=#
    7. 查看客户端认证的最长时间。

      openGauss=# SHOW authentication_timeout;
      authentication_timeout
      ------------------------
      59s
      (1 row)
  • 示例3:修改openGauss数据库节点的最大连接数。

    1. 以操作系统用户omm登录数据库主节点。

    2. 使用如下命令连接数据库。

      gsql -d postgres -p 8000

      postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

      连接成功后,系统显示类似如下信息:

      gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
      Non-SSL connection (SSL connection is recommended when requiring high-security)
      Type "help" for help.

      openGauss=#
    3. 查看最大连接数。

      openGauss=# SHOW max_connections;
      max_connections
      -----------------
      200
      (1 row)
    4. 使用如下命令退出数据库。

      openGauss=# \q
    5. 修改openGauss数据库节点的最大连接数。

      gs_guc set -N all -I all -c "max_connections = 500"
    6. 重启openGauss。

      gs_om -t stop
      gs_om -t start
    7. 使用如下命令连接数据库。

      gsql -d postgres -p 8000

      postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

      连接成功后,系统显示类似如下信息:

      gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
      Non-SSL connection (SSL connection is recommended when requiring high-security)
      Type "help" for help.

      openGauss=#
    8. 查看最大连接数。

      openGauss=# SHOW max_connections;
      max_connections
      -----------------
      500
      (1 row)
  • 示例4:设置数据库节点的客户端认证最长时间参数“authentication_timeout”

    1. 以操作系统用户omm登录数据库主节点。

    2. 使用如下命令连接数据库。

      gsql -d postgres -p 8000

      postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

      连接成功后,系统显示类似如下信息:

      gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
      Non-SSL connection (SSL connection is recommended when requiring high-security)
      Type "help" for help.

      openGauss=#
    3. 查看客户端认证的最长时间。

      openGauss=# SHOW authentication_timeout;
      authentication_timeout
      ------------------------
      1min
      (1 row)
    4. 使用如下命令退出数据库。

      openGauss=# \q
    5. 修改openGauss数据库节点的客户端认证最长时间。

      gs_guc reload -N all -I all -c "authentication_timeout = 30s"
    6. 使用如下命令连接数据库。

      gsql -d postgres -p 8000

      postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

      连接成功后,系统显示类似如下信息:

      gsql((openGauss x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
      Non-SSL connection (SSL connection is recommended when requiring high-security)
      Type "help" for help.

      openGauss=#
    7. 查看客户端认证的最长时间。

      openGauss=# SHOW authentication_timeout;
      authentication_timeout
      ------------------------
      30s
      (1 row)


    👍 点赞,你的认可是我创作的动力!

    ⭐️ 收藏,你的青睐是我努力的方向!


    有什么吐槽或反馈意见,直接告诉我!

    温馨提示:如出现二维码失效也可直接添加微信号:ysc13803862469。


    原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。

    请登录后发表评论 登录
    全部评论
    专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

    注册时间:2021-08-27

    • 博文量
      552
    • 访问量
      303747