PostgreSQL的pg_archivecleanup工具

news/2024/10/19 5:26:25/

PostgreSQL的pg_archivecleanup工具

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 OLDESTKEPTWALFILEOptions:-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 exitFor 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.backupReport 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 系统的健康非常有助益。


http://www.ppmy.cn/news/1448284.html

相关文章

CentOS系统如何设置系统默认语言以及命令行输出的语言为英文? locale

要点 locale是地区相关&#xff1a;The locale command displays information about the current locale, or all locales, on standard output.通过全局变量进行配置&#xff0c;后台应该有程序读取环境变脸后进行输出确认。全局变量包括LANG和LC_ALL系统启动后首先初次读取/…

C#(C Sharp)学习笔记_方法(Medthod)【十六】

什么是方法&#xff1f; 在编程中&#xff0c;方法&#xff08;Method&#xff09;是一个执行特定操作的代码块。它是一种将逻辑封装起来的方式&#xff0c;使得代码更加模块化、重用性更高&#xff0c;并且易于维护。以下是方法的一些关键特性&#xff1a; 封装性&#xff1a…

通过自然语言处理执行特定任务的AI Agents;大模型控制NPC执行一系列的动作;个人化的电子邮件助手Panza

✨ 1: OpenAgents 通过自然语言处理执行特定任务的AI代理 OpenAgents是一个开放平台&#xff0c;旨在使语言代理&#xff08;即通过自然语言处理执行特定任务的AI代理&#xff09;的使用和托管变得更加便捷和实用。它特别适合于日常生活中对数据分析、工具插件获取和网络浏览…

基础款:Dockerfile 文件

# bash复制代码# 使用 Node.js 16 作为基础镜像 # 指定一个已经存在的镜像作为模版&#xff0c;第一条必须是from FROM node:16# 将当前工作目录设置为/app # WORKDIR /app# 方法一&#xff1a;用dockerfile命令&#xff1a;进行下载打包文件 # 将 package.json 和 package-loc…

C#技巧之窗体去鼠标化

简介 在窗体程序中不用鼠标&#xff0c;直接使用键盘完成想要的操作。 实现的方法有两种&#xff0c;一种是使用键盘上的Tab键使控件获得焦点&#xff0c;然后用enter键触发该控件上的事件&#xff08;一般为click事件&#xff09;。另一种是&#xff0c;为控件添加快捷键&am…

LM193、LM293、LM293A、LM393、LM393A和LM2903

这份文件是德州仪器&#xff08;Texas Instruments Incorporated&#xff09;关于其电压比较器产品系列的数据手册&#xff0c;具体型号包括LM193、LM293、LM293A、LM393、LM393A和LM2903。以下是该文件的核心内容概要&#xff1a; 产品描述&#xff1a; 这些设备包含两个独立的…

QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框

菜单栏工具栏 新建工程基类是QMainWindow 1、 2、 3、 点.pro文件&#xff0c;添加配置 因为之后用到lambda&#xff1b; 在.pro文件添加配置c11 CONFIG c11 #不能加分号 添加头文件 #include <QMenuBar>//菜单栏的头文件 主窗口代码mainwindow.cpp文件 #include &q…

一文解决ArcGIS生成点和管段 含案例讲解

背景 在工作中&#xff0c;我们经常遇到要将坐标数据导入 GIS&#xff0c;生成点位&#xff0c;若是地理坐标系&#xff08;经纬度&#xff09;&#xff0c;那么直接用 arcgis或者QGIS 导入数据就行了&#xff0c;可实际中总会遇到各种问题&#xff1a; 坐标数据集为大地 200…