PG_ARCHIVECLEANUP(1) PostgreSQL 18.6 Documentation PG_ARCHIVECLEANUP(1)

pg_archivecleanup - پاک‌سازی فایل‌های آرشیو WAL در PostgreSQL

pg_archivecleanup [option...] archivelocation oldestkeptwalfile

ابزار pg_archivecleanup طراحی شده است تا به عنوان یک archive_cleanup_command برای پاک‌سازی آرشیوهای فایل WAL هنگام اجرا به عنوان یک سرور standby (بخش 26.2 را ببینید) استفاده شود. همچنین می‌توان از pg_archivecleanup به عنوان یک برنامه مستقل برای پاک‌سازی آرشیو فایل‌های WAL استفاده کرد.

جهت پیکربندی یک سرور standby برای استفاده از pg_archivecleanup، عبارت زیر را در فایل پیکربندی postgresql.conf آن قرار دهید:

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

که در آن archivelocation دایرکتوری‌ای است که فایل‌های بخش WAL باید از آن حذف شوند.

هنگامی که درون archive_cleanup_command استفاده شود، تمام فایل‌های WAL که از نظر منطقی قبل از مقدار آرگومان %r قرار دارند از archivelocation حذف خواهند شد. این امر تعداد فایل‌هایی را که باید نگهداری شوند به حداقل می‌رساند، در حالی که قابلیت راه‌اندازی مجدد پس از خرابی (crash-restart) را حفظ می‌کند. استفاده از این پارامتر زمانی مناسب است که archivelocation یک ناحیه موقت (staging) برای این سرور standby به‌خصوص باشد، اما زمانی که archivelocation به عنوان یک ناحیه بلندمدت آرشیو WAL در نظر گرفته شده است، یا زمانی که چند سرور standby در حال بازیابی از همان مکان آرشیو هستند، مناسب نیست.

هنگامی که به عنوان یک برنامه مستقل استفاده شود، تمام فایل‌های WAL که از نظر منطقی قبل از oldestkeptwalfile هستند، از archivelocation حذف خواهند شد. در این حالت، اگر نام فایلی با پسوند .partial یا .backup را مشخص کنید، تنها پیشوند فایل به عنوان oldestkeptwalfile استفاده خواهد شد. این شیوه برخورد با نام فایل .backup به شما اجازه می‌دهد تا تمام فایل‌های WAL آرشیو شده قبل از یک پشتیبان پایه (base backup) مشخص را بدون بروز خطا حذف کنید. به عنوان مثال، نمونه زیر تمام فایل‌های قدیمی‌تر از فایل WAL با نام 000000010000003700000010 را حذف می‌کند:

pg_archivecleanup -d archive 000000010000003700000010.00000020.backup
pg_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
pg_archivecleanup:  removing file "archive/00000001000000370000000F"
pg_archivecleanup:  removing file "archive/00000001000000370000000E"

pg_archivecleanup فرض می‌کند که archivelocation دایرکتوری‌ای با دسترسی خواندن و نوشتن برای کاربری است که مالک سرور می‌باشد.

pg_archivecleanup آرگومان‌های خط فرمان زیر را می‌پذیرد:

-b
--clean-backup-history

فایل‌های تاریخچه پشتیبان‌گیری (backup history) را نیز حذف می‌کند. برای جزئیات در مورد فایل‌های تاریخچه پشتیبان‌گیری به بخش 25.3.2 مراجعه کنید.

-d
--debug

چاپ خروجی زیاد لاگ رفع اشکال در stderr.

-n
--dry-run

چاپ نام فایل‌هایی که قرار بود حذف شوند در stdout (یک اجرای آزمایشی را انجام می‌دهد).

-V
--version

چاپ نسخه pg_archivecleanup و خروج.

-x extension
--strip-extension=extension

مشخص کردن پسوندی که قبل از تصمیم‌گیری برای حذف، از نام تمام فایل‌ها برداشته می‌شود. این گزینه معمولاً برای پاک‌سازی آرشیوهایی که در طول ذخیره‌سازی فشرده شده‌اند و بنابراین پسوندی توسط برنامه فشرده‌سازی به آن‌ها اضافه شده است، مفید است. برای مثال: -x .gz.

-?
--help

نمایش راهنما درباره آرگومان‌های خط فرمان pg_archivecleanup و خروج.

متغیر محیطی PG_COLOR مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر. مقادیر معتبر عبارتند از always، auto و never.

pg_archivecleanup طراحی شده است تا هنگام استفاده به عنوان یک ابزار مستقل با PostgreSQL نسخه 8.0 و بالاتر، یا هنگام استفاده به عنوان دستور پاک‌سازی آرشیو با PostgreSQL نسخه 9.0 و بالاتر کار کند.

pg_archivecleanup به زبان C نوشته شده است و دارای کد منبعی با ویرایش آسان است که بخش‌های مشخصی در آن برای تغییر متناسب با نیازهای شما تعبیه شده است.

در سیستم‌های لینوکس یا یونیکس، می‌توانید از این دستور استفاده کنید:

archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'

در صورتی که دایرکتوری آرشیو به طور فیزیکی روی سرور standby واقع شده باشد، به طوری که archive_command از طریق NFS به آن دسترسی دارد، اما فایل‌ها برای سرور standby محلی هستند. این پیکربندی باعث می‌شود:

•خروجی رفع اشکال در cleanup.log تولید شود
•فایل‌هایی که دیگر نیازی به آن‌ها نیست از دایرکتوری آرشیو حذف شوند
2026 PostgreSQL 18.6