提问人:roussidis 提问时间:11/11/2023 更新时间:11/12/2023 访问量:38
pg_wal 目录中存储的文件数是否有限制?
Is there a limit regarding the number of files that are stored in the pg_wal directory?
问:
我正在尝试查找有关存储在我的 pg_wal 目录中的实际文件数的解释。
我在具有大量更新、插入和删除的大型数据库上使用 postgres v13,因此我希望 pg_wal 目录中有很多文件。
根据我到目前为止的理解,pg_wal 目录上的文件数取决于 和 值。因此,无论哪一个先命中,pg_wal目录都会轮换checkpoint_timeout
max_wal_size
我在我的环境中遇到了一种奇怪的行为,我经常看到 7 pg_wal段文件。这意味着我经常有 7*16MB = 112MB 的文件。
然后我查看了文件的时间戳,找出最旧和最早的时间戳,下面的示例显示它们的时间戳超过 5 分钟。最早的是 19:54,最新的是 20:05
-rw------- 1 postgres postgres 16777216 Nov 10 20:04 000000010000E76A00000097
-rw------- 1 postgres postgres 16777216 Nov 10 20:05 000000010000E76A00000098
-rw------- 1 postgres postgres 16777216 Nov 10 20:10 000000010000E76A00000099
-rw------- 1 postgres postgres 16777216 Nov 10 19:54 000000010000E76A0000009A
-rw------- 1 postgres postgres 16777216 Nov 10 19:56 000000010000E76A0000009B
-rw------- 1 postgres postgres 16777216 Nov 10 20:02 000000010000E76A0000009C
-rw------- 1 postgres postgres 16777216 Nov 10 20:03 000000010000E76A0000009D
-rw------- 1 postgres postgres 16777216 Nov 10 20:01 000000010000E76A0000009E
试图弄清楚为什么我总是有 7 个pg_wal段文件。 我的 conf 值是
checkpoint_timeout = 5min
max_wal_size = 2GB
我算了一下,在那个特定时间,有 112MB 的数据发生了变化,因为有多个脚本在不同的时刻运行,并且文件的数量从未或多或少地改变过。
我正在研究创建复制品的方法,并坚持这些值,并试图理解更多的东西。
试图确定问题是否仅在一天中的特定时间存在,但事实并非如此。实际上,无论我在哪里检查pg_wal目录,我都会看到 7 个文件。
变化的是最旧文件和最新文件之间的时间。有时可能是 10 分钟,有时可能是 30 分钟或更长时间(但这取决于数据库中正在写入或更改的实际数据)
答:
如果您计划构建备用服务器,则不必担心 WAL 段的数量。您所要做的就是配置 PostgreSQL,以便它为备用服务器保留足够的 WAL。有三种方法可以做到这一点:pg_wal
设置在主服务器上,以便它始终保留一定量的旧 WAL。
wal_keep_size
设置和配置,以便 PostgreSQL 创建 WAL 存档。然后设置为待机状态,以便它可以从存档中恢复。您可以在备用数据库上使用删除不再需要的已存档 WAL 段。
archive_mode = on
archive_command
restore_command
archive_cleanup_command
使用复制槽,使主服务器保留适量的 WAL。
我推荐选项 2 或 3。
评论
min_wal_size
wal_keep_size