basic_archive 是一个 contrib 模块,它提供了一个 WAL 归档模块的示例。
basic_archive 在 PostgreSQL 15 中被添加。
用法
basic_archive 将已完成的 WAL 段文件复制到一个指定的目录。这可以通过自定义 archive_command 设置来实现,但 basic_archive 的目的是作为开发更复杂归档模块的模板。
配置
必须设置以下 配置参数 来启用 basic_archive
archive_mode = 'on' archive_library = 'basic_archive' basic_archive.archive_directory = '/path/to/archive/directory'
请注意,如果正在使用 archive_library,则不得设置 archive_command。在这种情况下,当 PostgreSQL 尝试加载指定的归档库时,会记录一个 FATAL 错误。示例见下文。
变更历史
- PostgreSQL 15
- 添加于 (commit 5ef1eefd)
示例
如果已配置 basic_archive,其基本用法示例
postgres=# SELECT * FROM pg_ls_dir(current_setting('basic_archive.archive_directory'));
pg_ls_dir
-----------
(0 rows)
postgres=# SELECT pg_switch_wal();
pg_switch_wal
---------------
0/14FFEB8
(1 row)
postgres=# SELECT * FROM pg_ls_dir(current_setting('basic_archive.archive_directory'));
pg_ls_dir
--------------------------
000000010000000000000001
(1 row)
如果同时设置了 archive_command 和 archive_library,则会在日志文件中看到类似以下的错误:
[2023-03-07 17:21:38 UTC] FATAL: 22023: both archive_command and archive_library set [2023-03-07 17:21:38 UTC] DETAIL: Only one of archive_command, archive_library may be set.
如果 basic_archive.archive_directory 中指定的目录不存在或无法写入,则会记录类似以下的错误:
[2023-03-07 17:40:44 UTC] WARNING: 22023: invalid value for parameter "basic_archive.archive_directory": "/directory/does/not/exist" [2023-03-07 17:40:44 UTC] DETAIL: Specified archive directory does not exist.
参考资料
- PostgreSQL documentation: basic_archive
分类
另请参阅
basebackup_to_shell
