Непрерывное архивирование в PostgreSQL
Непрерывное архивирование создает последовательность архивов, представляющих собой историю изменений в базе данных. При восстановлении данных система использует эти архивы, чтобы последовательно применять изменения к базе данных, возвращая ее к нужному моменту времени. Скопированный файл называется архивным журналом. Эта функция обычно используется для горячего резервного копирования и PITR (Point-in-Time Recovery), которые подробно описаны в разделе 10.
Путь к области архивации задается параметром конфигурации «archive_command» - команда локальной оболочки, которая будет выполняться для архивации завершённого сегмента WAL.
archive_command = 'cp %p /home/postgres/archives/%f'
Любое вхождение %p в этой строке заменяется путём архивируемого файла, а вхождение %f заменяется только его именем. (Путь задаётся относительно рабочего каталога сервера, то есть каталога данных кластера.)
Когда происходит переключение файла WAL сегмента WAL_7, этот файл копируется в область архивации как Archive log 7.
Параметр 'archive_command' можно установить для любой команды или инструмента Unix. Это означает, что вместо того, чтобы использовать простую команду копирования для передачи архивных журналов на другой хост, Вы можете использовать команду scp или любой другой инструмент резервного копирования файлов.
Примечание: archive_library
В версии 14 и более ранних версиях непрерывная архивация могла использовать только команды оболочки.
В версии 15 в PostgreSQL появилась функция загружаемой библиотеки, которая позволяет осуществлять непрерывное архивирование с помощью библиотеки.
Более подробную информацию Вы сможете найти здесь: archive_library и basic_archive.
Примечание:
PostgreSQL не производит автоматическую очистку созданных архивных журналов. Поэтому при использовании этой функции необходимо правильно управлять журналами. Если ничего не делать, количество архивных журналов будет продолжать расти.
Утилита pg_archivecleanup - один из полезнейших инструментов для управления архивными журналами.
Для удаления архивных журналов можно также использовать команду find. Например, следующая команда удалит все архивные журналы, созданные более трех дней назад: find /home/postgres/archives –
$ find /home/postgres/archives -mtime +3d -exec rm -f {} \;



