Postgresql 13 更改 WAL 段大小

tal*_*ish 4 postgresql write-ahead-logging

在我的 Ubuntu 20 服务器上,我使用 apt 管理器安装了 PostgreSQL 13。我阅读了一些有关 PostgreSQL 性能调优的文章 [1],并考虑增加 WAL 段大小(默认为 16MB)。我看到以下指令,但是,我不知道在哪里运行它。

initdb -D ./data --wal-segment=1024

我猜文档指的是从 PostgreSQL 源代码安装,我不打算这样做。我该如何更改 WAL 段大小?

[1] https://software.intel.com/content/dam/develop/external/us/en/documents/Open-Source-Database-Tuning-Guide-on-3rd-Generation-Intel-Xeon-Scalable-Processors .pdf


根据丹尼尔的回答,我执行了以下步骤

$ pg_lsclusters
$ sudo pg_dropcluster --stop 13 main
$ sudo pg_createcluster 13 main -- --wal-segsize=256
$ sudo pg_ctlcluster 13 main start
Run Code Online (Sandbox Code Playgroud)

您可以验证 WAL 段的大小为

# du -hcs /var/lib/postgresql/13/main/pg_wal/*
Run Code Online (Sandbox Code Playgroud)

Lau*_*lbe 6

如果要更改现有集群的 WAL 段大小,可以使用pg_resetwal

警告:为此,请pg_resetwal仅在已完全关闭的集群上运行。pg_resetwal在崩溃的集群上运行将导致潜在的数据丢失。

该命令看起来有点像这样:

/usr/lib/postgresql/13/bin/pg_resetwal -D /var/lib/postgresql/13/main --wal-segsize 64
Run Code Online (Sandbox Code Playgroud)

min_wal_size如果增加 WAL 段大小,则可能需要增加。