PostgreSQL11修改--wal-segsize大小

0    1076    9

Tags:

👉 本文共约5207个字,系统预计阅读时间或需20分钟。

简介

编译安装PG的一些参数可以参考:https://www.dbaup.com/dbbao68shiyongyuanmabianyilaianzhuangpostgresql13-3shujuku.html

PostgreSQL11以前改变wal-segsize(WAL段大小)必须在编译时通过–with-wal-segsize参数确定,编译后不可更改。

PostgreSQL11之前的版本

  • 数据块按8K划分(--with-blocksize,单位为K,默认为8K)
  • WAL块尺寸按8k划分(--with-wal-blocksize,单位为K,默认为8K)
  • 数据文件按1G一个分解(--with-segsize,单位为G,默认为1G)
  • WAL段尺寸按16MB划分(--with-wal-segsize,单位为K,默认为16MB)

PostgreSQL 11 版本的一个重要调整是支持 initdb 和 pg_resetwal 修改 WAL 文件大小,而 11 版本之前只能在编译安装 PostgreSQL 时设置 WAL 文件大小。这一特性能够方便 WAL 文件的管理。PostgreSQL11取消了编译参数–with-wal-segsize。

使用pg_resetwal(--wal-segsize)更改WAL段大小

PostgreSQL11先编译程序

  • 数据块按8K划分(--with-blocksize,单位为K,默认为8K)
  • WAL块尺寸按8k划分(--with-wal-blocksize,单位为K,默认为8K)
  • 数据文件按1G一个分解(--with-segsize,单位为G,默认为1G)

编译完成并初始化后使用pg_resetwal修改wal-segsize

使用initdb时更改WAL段大小

initdb的参数--wal-segsize参数的取值范围是1MB到1024MB

查看

示例

使用 initdb 调整WAL文件大小

initdb 命令关于修改 WAL 文件大小选项,如下:

Set the WAL segment size, in megabytes. This is the size of each individual file in the WAL log. The default size is 16 megabytes. The value must be a power of 2 between 1 and 1024 (megabytes). This option can only be set during initialization, and cannot be changed later.

It may be useful to adjust this size to control the granularity of WAL log shipping or archiving. Also, in databases with a high volume of WAL, the sheer number of WAL files per directory can become a performance and management problem. Increasing the WAL file size will reduce the number of WAL files.

WAL 日志文件大小默认为16MB,该值必须是1到1024之间的2的次方,增大WAL文件大小能够减少WAL日志文件的产生。

初始化一个新的 PostgreSQL 数据库实例,指定WAL文件大小64MB,如下:

修改 postgresql.conf 相关配置,之后启动数据库。

验证WAL文件大小,如下:

可见WAL文件大小为64MB。

使用 pg_resetwal 调整WAL文件大小

pg_resetwal 用来重置WAL日志和一些控制信息,常用于数据库恢复场景,不到万不得已不轻易使用,以下演示使用pg_resetwal命令调整WAL日志文件大小,仅供测试参考,生产环境慎用。

pg_resetwal 命令关于调整WAL文件大小的选项,如下:

Set the new WAL segment size, in megabytes. The value must be set to a power of 2 between 1 and 1024 (megabytes). See the same option of initdb for more information.

以下演示在已有PostgreSQL实例基础上调整WAL日志文件大小。

查看当前数据库的 pg_wal 目录,如下:

pg_wal 目录中已有大量WAL日志文件,WAL文件大小为16MB,计划将WAL日志文件调整成64MB。

pg_resetwal 操作时需要关闭数据库,如下。

pg_resetwal 命令调整WAL日志文件大小为 64MB:

验证WAL文件大小,如下:

发现 pg_wal 目录中原有的WAL日志被清理,同时生成了大小为64MB新的WAL文件。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复