pg_archivecleanup
pg_archivecleanup â вÑÑиÑÑиÑÑ ÑÐ°Ð¹Ð»Ñ Ð°ÑÑ Ð¸Ð²Ð¾Ð² WAL Postgres Pro
СинÑакÑиÑ
pg_archivecleanup [паÑамеÑÑ...] ÑаÑположение_аÑÑ
ива ÑÑаÑейÑий_ÑоÑ
ÑанÑемÑй_Ñайл
ÐпиÑание
УÑилиÑа pg_archivecleanup пÑедназнаÑена Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² каÑеÑÑве archive_cleanup_command Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑÑаÑÑÑ
Ñайлов WAL на ÑезеÑвном ÑеÑвеÑе (Ñм. Раздел 25.2). pg_archivecleanup можно иÑполÑзоваÑÑ Ð¸ как оÑделÑнÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑеÑ
же дейÑÑвий.
ЧÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ pg_archivecleanup на ÑезеÑвном ÑеÑвеÑе, добавÑÑе ÑÑÑ ÑÑÑÐ¾ÐºÑ Ð² Ñайл конÑигÑÑаÑии postgresql.conf:
archive_cleanup_command = 'pg_archivecleanup ÑаÑположение_аÑÑ
ива %r' ÐдеÑÑ ÑаÑположение_аÑÑ
ива опÑеделÑÐµÑ ÐºÐ°Ñалог, из коÑоÑого Ð´Ð¾Ð»Ð¶Ð½Ñ ÑдалÑÑÑÑÑ ÑÐ°Ð¹Ð»Ñ ÑегменÑов WAL.
ÐÑзÑÐ²Ð°ÐµÐ¼Ð°Ñ Ð² каÑеÑÑве archive_cleanup_command, ÑÑа пÑогÑамма пÑоÑмаÑÑÐ¸Ð²Ð°ÐµÑ ÑаÑположение_аÑÑ
ива и ÑдалÑÐµÑ Ð²Ñе ÑÐ°Ð¹Ð»Ñ WAL, логиÑеÑки пÑедÑеÑÑвÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð°ÑгÑменÑа %r. ЦелÑÑ ÑÑой опеÑаÑии ÑвлÑеÑÑÑ ÑокÑаÑение ÑиÑла ÑоÑ
ÑанÑемÑÑ
Ñайлов без поÑеÑи возможноÑÑи воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñи пеÑезапÑÑке. Такой ваÑÐ¸Ð°Ð½Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑмеÑÑен, когда ÑаÑположение_аÑÑ
ива ÑказÑÐ²Ð°ÐµÑ Ð½Ð° облаÑÑÑ ÑабоÑиÑ
Ñайлов конкÑеÑного ÑезеÑвного ÑеÑвеÑа, но не когда ÑаÑположение_аÑÑ
ива â каÑалог Ñ Ð°ÑÑ
ивом WAL Ð´Ð»Ñ Ð´Ð¾Ð»Ð³Ð¾Ð²Ñеменного Ñ
ÑанениÑ, или когда неÑколÑко ÑезеÑвнÑÑ
ÑеÑвеÑов воÑÑÑанавливаÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL из одного ÑаÑположениÑ.
ÐÑи оÑделÑном иÑполÑзовании ÑÑой пÑогÑÐ°Ð¼Ð¼Ñ Ð¸Ð· каÑалога ÑаÑположение_аÑÑ
ива бÑдÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð²Ñе ÑÐ°Ð¹Ð»Ñ WAL, логиÑеÑки пÑедÑеÑÑвÑÑÑие ÑÐ°Ð¹Ð»Ñ ÑÑаÑейÑий_ÑоÑ
ÑанÑемÑй_Ñайл. Ð ÑÑом Ñежиме, еÑли Ð²Ñ ÑкажеÑе Ð¸Ð¼Ñ Ñайла Ñ ÑаÑÑиÑением .partial или .backup, ÑÑаÑейÑий_ÑоÑ
ÑанÑемÑй_Ñайл бÑÐ´ÐµÑ Ð¾Ð¿ÑеделÑÑÑÑÑ Ð¿Ð¾ имени без ÑаÑÑиÑениÑ. ÐлагодаÑÑ Ñакой инÑеÑпÑеÑаÑии ÑаÑÑиÑÐµÐ½Ð¸Ñ .backup бÑдÑÑ ÐºÐ¾ÑÑекÑно ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð²Ñе ÑÐ°Ð¹Ð»Ñ WAL, зааÑÑ
ивиÑованнÑе до опÑеделÑнной базовой копии. ÐапÑимеÑ, ÑледÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ÑÐ´Ð°Ð»Ð¸Ñ Ð²Ñе ÑÐ°Ð¹Ð»Ñ ÑÑаÑее Ñайла 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 ÑаÑÑÑиÑÑÐ²Ð°ÐµÑ Ð½Ð° Ñо, ÑÑо ÑаÑположение_аÑÑ
ива доÑÑÑпно Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ Ð¸ запиÑи полÑзоваÑелÑ, владеÑÑÐµÐ¼Ñ ÑеÑвеÑнÑм пÑоÑеÑÑом.
ÐаÑамеÑÑÑ
pg_archivecleanup пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑледÑÑÑие аÑгÑменÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑоки:
-b--clean-backup-historyУдалиÑÑ Ñакже ÑÐ°Ð¹Ð»Ñ Ð¸ÑÑоÑии ÑезеÑвного копиÑованиÑ. Ðа более подÑобной инÑоÑмаÑией о ÑÐ°Ð¹Ð»Ð°Ñ Ð¸ÑÑоÑии ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ðº ÑÐ°Ð·Ð´ÐµÐ»Ñ ÐодÑаздел 24.3.2.
-d--debugÐÑводиÑÑ Ð¿Ð¾Ð´ÑобнÑе оÑладоÑнÑе ÑообÑÐµÐ½Ð¸Ñ Ð²
stderr.-n--dry-runÐÑвеÑÑи имена Ñайлов, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑдаленÑ, в
stdout(не вÑполнÑÑ Ñдаление).-V--versionÐÑвеÑÑи веÑÑÐ¸Ñ pg_archivecleanup и завеÑÑиÑÑÑÑ.
-xÑаÑÑиÑение--strip-extension=ÑаÑÑиÑениеУÑÑановиÑÑ ÑаÑÑиÑение, коÑоÑое бÑÐ´ÐµÑ ÑбÑано из имÑн Ñайлов до пÑинÑÑÐ¸Ñ ÑеÑÐµÐ½Ð¸Ñ Ð¾Ð± Ñдалении опÑеделÑннÑÑ Ñайлов. ÐÑо обÑÑно полезно Ð´Ð»Ñ Ð¾ÑиÑÑки Ñайлов аÑÑ Ð¸Ð²Ð¾Ð², коÑоÑÑе ÑжимаÑÑÑÑ Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸ полÑÑаÑÑ ÑаÑÑиÑение, задаваемое пÑогÑаммой ÑжаÑиÑ. ÐапÑимеÑ:
-x .gz.-?--helpÐÑвеÑÑи ÑпÑÐ°Ð²ÐºÑ Ð¾Ð± аÑгÑменÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑоки pg_archivecleanup и завеÑÑиÑÑÑÑ.
ÐеÑеменнÑе окÑÑжениÑ
ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑÐ¶ÐµÐ½Ð¸Ñ PG_COLOR вÑбиÑÐ°ÐµÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑвеÑа в диагноÑÑиÑеÑкиÑ
ÑообÑениÑÑ
. ÐозможнÑе знаÑениÑ: always (вÑегда), auto (авÑомаÑиÑеÑки) и never (никогда).
ÐÑимеÑаниÑ
ÐÑогÑамма pg_archivecleanup ÑаÑÑÑиÑана на ÑабоÑÑ Ñ PostgreSQL 8.0 и новее как оÑделÑÐ½Ð°Ñ ÑÑилиÑа, а Ñакже Ñ PostgreSQL 9.0 и новее как команда оÑиÑÑки аÑÑ Ð¸Ð²Ð°.
ÐÑогÑамма pg_archivecleanup напиÑана на C; ÐµÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñй код легко поддаÑÑÑÑ Ð¼Ð¾Ð´Ð¸ÑикаÑии (он ÑодеÑÐ¶Ð¸Ñ ÑекÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñи надобноÑÑи)
ÐÑимеÑÑ
Ð ÑиÑÑÐµÐ¼Ð°Ñ Linux или Unix можно иÑполÑзоваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ:
archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
ÐÑедполагаеÑÑÑ, ÑÑо каÑалог аÑÑ
ива ÑизиÑеÑки ÑаÑполагаеÑÑÑ Ð½Ð° ÑезеÑвном ÑеÑвеÑе, Ñак ÑÑо команда archive_command обÑаÑаеÑÑÑ Ðº Ð½ÐµÐ¼Ñ Ð¿Ð¾ NFS, но Ð´Ð»Ñ ÑезеÑвного ÑеÑвеÑа ÑÑи ÑÐ°Ð¹Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑнÑе. ÐÑа команда бÑдеÑ:
вÑводиÑÑ Ð¾ÑладоÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð²
cleanup.logÑдалÑÑÑ ÑÑавÑие ненÑжнÑми ÑÐ°Ð¹Ð»Ñ Ð¸Ð· каÑалога аÑÑ Ð¸Ð²Ð°