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

打印 上一主题 下一主题

主题 878|帖子 878|积分 2644

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

  1. 基础信息
  2. OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
  3. DB版本:16.2
  4. pg软件目录:/home/pg16/soft
  5. pg数据目录:/home/pg16/data
  6. 端口:5777
复制代码
pg_archivecleanup 是 PostgreSQL 中用于管理 WAL(Write-Ahead Logging)归档目录的工具。在使用基于归档的日记复制或持久化存储时,pg_archivecleanup 用来清算那些不再必要的归档日记文件,帮助节省存储空间,并维持归档目录的整洁。
WAL 是 PostgreSQL 事件日记的一部分,用于保证数据库的事件完整性和持久性。在配置了WAL归档的PostgreSQL数据库中,每个事件会先写入 WAL 文件,然后定期这些 WAL 文件会被归档到指定的目录。随着时间的推移,这些归档的 WAL 文件可以累积到非常大的体积,特别是在高负载的系统中。因此,符合地清算这些不再必要的 WAL 归档文件对于管理存储非常关键。
使用方式

pg_archivecleanup 通常在备份策略或复制配置中自动调用,尤其是与归档清算相关的操纵中。它的基本用法如下:
  1. 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查察更多信息
  1. [pg16@test bin]$ pg_archivecleanup --help
  2. pg_archivecleanup removes older WAL files from PostgreSQL archives.
  3. Usage:
  4.   pg_archivecleanup [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE
  5. Options:
  6.   -d             generate debug output (verbose mode)
  7.   -n             dry run, show the names of the files that would be removed
  8.   -V, --version  output version information, then exit
  9.   -x EXT         clean up files if they have this extension
  10.   -?, --help     show this help, then exit
  11. For use as archive_cleanup_command in postgresql.conf:
  12.   archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %r'
  13. e.g.
  14.   archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %r'
  15. Or for use as a standalone archive cleaner:
  16. e.g.
  17.   pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup
  18. Report bugs to <pgsql-bugs@lists.postgresql.org>.
  19. PostgreSQL home page: <https://www.postgresql.org/>
复制代码
测试:删除 000000010000000000000005 之前的归档日记
  1. [pg16@test archivelog]$ ll
  2. total 458752
  3. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000002
  4. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000003
  5. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000004
  6. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000005
  7. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000006
  8. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000007
  9. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000008
  10. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000009
  11. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 00000001000000000000000A
  12. -rw------- 1 pg16 pg16 16777216 Apr 17 08:11 00000001000000000000000B
  13. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000C
  14. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000D
  15. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000E
  16. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000F
  17. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 000000010000000000000010
  18. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 000000010000000000000011
  19. -rw------- 1 pg16 pg16 16777216 Apr 17 08:22 000000010000000000000012
  20. -rw------- 1 pg16 pg16 16777216 Apr 17 08:27 000000010000000000000013
  21. -rw------- 1 pg16 pg16 16777216 Apr 22 07:20 000000010000000000000014
  22. -rw------- 1 pg16 pg16 16777216 Apr 22 07:56 000000010000000000000015
  23. -rw------- 1 pg16 pg16 16777216 Apr 24 21:17 000000010000000000000016
  24. -rw------- 1 pg16 pg16 16777216 Apr 24 21:22 000000010000000000000017
  25. -rw------- 1 pg16 pg16 16777216 Apr 24 21:37 000000010000000000000018
  26. -rw------- 1 pg16 pg16 16777216 Apr 24 21:38 000000010000000000000019
  27. -rw------- 1 pg16 pg16 16777216 Apr 24 21:39 00000001000000000000001A
  28. -rw------- 1 pg16 pg16 16777216 Apr 24 21:44 00000001000000000000001B
  29. -rw------- 1 pg16 pg16 16777216 Apr 25 03:52 00000001000000000000001C
  30. -rw------- 1 pg16 pg16 16777216 Apr 26 03:45 00000001000000000000001D
  31. [pg16@test archivelog]$ which pg_archivecleanup
  32. ~/soft/bin/pg_archivecleanup
  33. [pg16@test archivelog]$ pg_archivecleanup ~/archivelog/ 000000010000000000000005
  34. [pg16@test archivelog]$ ll
  35. total 409600
  36. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000005
  37. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000006
  38. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000007
  39. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000008
  40. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 000000010000000000000009
  41. -rw------- 1 pg16 pg16 16777216 Apr 17 07:16 00000001000000000000000A
  42. -rw------- 1 pg16 pg16 16777216 Apr 17 08:11 00000001000000000000000B
  43. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000C
  44. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000D
  45. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000E
  46. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 00000001000000000000000F
  47. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 000000010000000000000010
  48. -rw------- 1 pg16 pg16 16777216 Apr 17 08:19 000000010000000000000011
  49. -rw------- 1 pg16 pg16 16777216 Apr 17 08:22 000000010000000000000012
  50. -rw------- 1 pg16 pg16 16777216 Apr 17 08:27 000000010000000000000013
  51. -rw------- 1 pg16 pg16 16777216 Apr 22 07:20 000000010000000000000014
  52. -rw------- 1 pg16 pg16 16777216 Apr 22 07:56 000000010000000000000015
  53. -rw------- 1 pg16 pg16 16777216 Apr 24 21:17 000000010000000000000016
  54. -rw------- 1 pg16 pg16 16777216 Apr 24 21:22 000000010000000000000017
  55. -rw------- 1 pg16 pg16 16777216 Apr 24 21:37 000000010000000000000018
  56. -rw------- 1 pg16 pg16 16777216 Apr 24 21:38 000000010000000000000019
  57. -rw------- 1 pg16 pg16 16777216 Apr 24 21:39 00000001000000000000001A
  58. -rw------- 1 pg16 pg16 16777216 Apr 24 21:44 00000001000000000000001B
  59. -rw------- 1 pg16 pg16 16777216 Apr 25 03:52 00000001000000000000001C
  60. -rw------- 1 pg16 pg16 16777216 Apr 26 03:45 00000001000000000000001D
  61. [pg16@test archivelog]$
复制代码
配置场景

pg_archivecleanup 的一个常见应用场景是在流复制的备用服务器上用作 restore_command 的一部分,以自动清算那些不再必要应用到备用服务器上的 WAL 归档文件。例如,在 recovery.conf 或针对 PostgreSQL 12 及以后版本的 postgresql.conf 文件中,可以如许配置:
  1. 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 系统的康健非常有助益。
谨记:心存敬畏,行有所止。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表