PostgreSQL自带的命令行工具01- pg_archivecleanup

本文介绍了PostgreSQL中的pg_archivecleanup工具,用于管理WAL归档,以节省存储空间并保持目录整洁。它在备份策略和流复制配置中常用,但使用时需谨慎以防止误删重要文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PostgreSQL自带的命令行工具01- pg_archivecleanup

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

pg_archivecleanup 是 PostgreSQL 中用于管理 WAL(Write-Ahead Logging)归档目录的工具。在使用基于归档的日志复制或持久化存储时,pg_archivecleanup 用来清理那些不再需要的归档日志文件,帮助节省存储空间,并维持归档目录的整洁。

WAL 是 PostgreSQL 事务日志的一部分,用于保证数据库的事务完整性和持久性。在配置了WAL归档的PostgreSQL数据库中,每个事务会先写入 WAL 文件,然后定期这些 WAL 文件会被归档到指定的目录。随着时间的推移,这些归档的 WAL 文件可以累积到非常大的体积,特别是在高负载的系统中。因此,合适地清理这些不再需要的 WAL 归档文件对于管理存储非常关键。

使用方式

pg_archivecleanup 通常在备份策略或复制配置中自动调用,尤其是与归档清理相关的操作中。它的基本用法如下:

pg_archivecleanup <archive_location> <oldest_required_wal_file>
  • <archive_location> 是 WAL 文件被归档到的目录路径。
  • <oldest_required_wal_file> 指定了在归档目录中需要保留的最旧的文件。pg_archivecleanup 会删除所有比这个文件更旧的 WAL 文件。

例如,pg_archivecleanup /var/lib/postgresql/wal_archives 00000001000000000000007B 命令会删除 /var/lib/postgresql/wal_archives 目录下所有早于文件 00000001000000000000007B 的归档 WAL 文件。

–通过help查看更多信息

[pg16@test bin]$ pg_archivecleanup --help
pg_archivecleanup removes older WAL files from PostgreSQL archives.

Usage:
  pg_archivecleanup [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE

Options:
  -d             generate debug output (verbose mode)
  -n             dry run, show the names of the files that would be removed
  -V, --version  output version information, then exit
  -x EXT         clean up files if they have this extension
  -?, --help     show this help, then exit

For use as archive_cleanup_command in postgresql.conf:
  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %r'
e.g.
  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %r'

Or for use as a standalone archive cleaner:
e.g.
  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup

Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>

测试:删除 000000010000000000000005 之前的归档日志

[pg16@test archivelog]$ ll
total 458752
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000002
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000003
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000004
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000005
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000006
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000007
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000008
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000009
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 00000001000000000000000A
-rw------- 1 pg16 pg16 16777216 Apr 17 08:11 00000001000000000000000B
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000C
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000D
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000E
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000F
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 000000010000000000000010
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 000000010000000000000011
-rw------- 1 pg16 pg16 16777216 Apr 17 08:22 000000010000000000000012
-rw------- 1 pg16 pg16 16777216 Apr 17 08:27 000000010000000000000013
-rw------- 1 pg16 pg16 16777216 Apr 22 07:20 000000010000000000000014
-rw------- 1 pg16 pg16 16777216 Apr 22 07:56 000000010000000000000015
-rw------- 1 pg16 pg16 16777216 Apr 24 21:17 000000010000000000000016
-rw------- 1 pg16 pg16 16777216 Apr 24 21:22 000000010000000000000017
-rw------- 1 pg16 pg16 16777216 Apr 24 21:37 000000010000000000000018
-rw------- 1 pg16 pg16 16777216 Apr 24 21:38 000000010000000000000019
-rw------- 1 pg16 pg16 16777216 Apr 24 21:39 00000001000000000000001A
-rw------- 1 pg16 pg16 16777216 Apr 24 21:44 00000001000000000000001B
-rw------- 1 pg16 pg16 16777216 Apr 25 03:52 00000001000000000000001C
-rw------- 1 pg16 pg16 16777216 Apr 26 03:45 00000001000000000000001D
[pg16@test archivelog]$ which pg_archivecleanup
~/soft/bin/pg_archivecleanup
[pg16@test archivelog]$ pg_archivecleanup ~/archivelog/ 000000010000000000000005
[pg16@test archivelog]$ ll
total 409600
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000005
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000006
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000007
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000008
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000009
-rw------- 1 pg16 pg16 16777216 Apr 17 07:16 00000001000000000000000A
-rw------- 1 pg16 pg16 16777216 Apr 17 08:11 00000001000000000000000B
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000C
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000D
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000E
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000F
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 000000010000000000000010
-rw------- 1 pg16 pg16 16777216 Apr 17 08:19 000000010000000000000011
-rw------- 1 pg16 pg16 16777216 Apr 17 08:22 000000010000000000000012
-rw------- 1 pg16 pg16 16777216 Apr 17 08:27 000000010000000000000013
-rw------- 1 pg16 pg16 16777216 Apr 22 07:20 000000010000000000000014
-rw------- 1 pg16 pg16 16777216 Apr 22 07:56 000000010000000000000015
-rw------- 1 pg16 pg16 16777216 Apr 24 21:17 000000010000000000000016
-rw------- 1 pg16 pg16 16777216 Apr 24 21:22 000000010000000000000017
-rw------- 1 pg16 pg16 16777216 Apr 24 21:37 000000010000000000000018
-rw------- 1 pg16 pg16 16777216 Apr 24 21:38 000000010000000000000019
-rw------- 1 pg16 pg16 16777216 Apr 24 21:39 00000001000000000000001A
-rw------- 1 pg16 pg16 16777216 Apr 24 21:44 00000001000000000000001B
-rw------- 1 pg16 pg16 16777216 Apr 25 03:52 00000001000000000000001C
-rw------- 1 pg16 pg16 16777216 Apr 26 03:45 00000001000000000000001D
[pg16@test archivelog]$ 

配置场景

pg_archivecleanup 的一个常见应用场景是在流复制的备用服务器上用作 restore_command 的一部分,以自动清理那些不再需要应用到备用服务器上的 WAL 归档文件。例如,在 recovery.conf 或针对 PostgreSQL 12 及以后版本的 postgresql.conf 文件中,可以这样配置:

restore_command = 'cp /mnt/server/archivedir/%f %p && pg_archivecleanup /mnt/server/archivedir %r'

这条命令在尝试恢复每个WAL文件后,使用 pg_archivecleanup 清理不再需要的文件,%f 代表要恢复的文件名,%p 代表要恢复到的路径,%r 代表此次恢复操作中需要的最旧的WAL文件。这样配置后,可以自动地维护归档目录的大小。

注意事项

  • 使用 pg_archivecleanup 时需要谨慎,以免不小心删除了仍然需要的 WAL 文件。
  • 确认 WAL 归档策略和备份恢复策略,并与之相配合使用 pg_archivecleanup
  • 在执行任何清理操作之前,确保已经有了对应的WAL文件的备份,以防万一。

pg_archivecleanup 是 PostgreSQL 提供的一个非常实用的工具,对于管理 WAL 归档和维持长期运行的 PostgreSQL 系统的健康非常有助益。

谨记:心存敬畏,行有所止。

### 下载 Windows 10 Pro for Workstations ISO 对于希望获取 Windows 10 Pro for Workstations 版本的用户来说,微软提供了多种途径来获得所需的操作系统镜像文件。通过访问官方渠道能够确保所使用的软件为正版且安全可靠。 根据提供的链接,在 Microsoft 的官方网站上可以找到不同版本的 Windows 10 镜像下载选项[^1]。然而特定提到的 Windows 10 Pro for Workstations 可能不会直接展示于首页推荐列表之中。为了更精确地定位到该版本,建议进入专门针对企业用户的页面或是利用 MSDN 订阅服务进行查找[^2]。 如果已经拥有有效的授权许可,则可以通过如下方式之一来下载: - **Microsoft Software Download 页面**: 使用产品密钥登录后按照提示操作直至完成下载。 - **MSDN 或 Volume Licensing Service Center (VLSC)**: 对于具有相应权限的企业客户而言,这里会提供更加全面的产品选择以及历史版本支持。 需要注意的是,由于操作系统属于受版权保护的作品,因此应当遵循合法合规的方式取得并安装使用。此外,考虑到安全性因素和个人隐私保护,强烈不建议从未知第三方站点下载此类重要软件资源。 ```bash # 假设已具备有效的产品密钥和网络环境允许的情况下, # 打开浏览器前往 https://www.microsoft.com/zh-cn/software-download/windows10 # 输入对应的产品密钥,并依照网页指引逐步完成下载过程。 ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值