1

注意:这个问题是关于 PostgreSQL 版本 13。
在我的 Ubuntu 服务器上,我有一个名为的集群main,其中有 2 个数据库(第一个用于水果公司,第二个用于汽车公司)。

这是我的 postgresql.conf 文件设置:

wal_level = replica
archive_mode = on
archive_command = 'pxz --compress --keep --force -6 --to-stdout --quiet %p > /datadrive/postgresql/13/wal_archives/%f.xz'

/datadrive/postgresql/13/wal_archives/这会按预期创建 .xz 文件。例如:文件名可能如下所示:

0000000100000460000000A4.xz

现在我关于这个归档过程的问题如下:

  1. 这个特定的 .xz 文件是 postgresql 集群中所有数据库的存档吗?即,这个特定的 xz 文件是否包含水果和汽车数据库的存档,还是仅包含其中一个的存档?
  2. 什么是存档文件?它只是一个 WAL 文件还是一个存档点 + 一个 WAL 文件?

我已阅读此处此处找到的官方文档,还查看了大量 stackoverflow 和数据库堆栈交换问题,但未能很好地理解存档概念。

4

1 回答 1

1

这样的文件称为“WAL 段”。WAL 是“write ahead log”的缩写,是事务日志,它包含了为整个数据库集群重放数据修改所需的信息。因此它包含集群中所有数据库的数据。

WAL 是一个无限的仅附加流,它被分成固定大小的段。WAL 存档只不过是 WAL 段的忠实副本。

WAL 存档与基本备份一起使用以执行时间点恢复。WAL 文件的其他用途是崩溃恢复和复制,但这些不需要存档的 WAL 段。

于 2020-11-16T07:16:41.770 回答