powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Когда pg_archivecleanup начинает чистить на Реплике?
10 сообщений из 10, страница 1 из 1
Когда pg_archivecleanup начинает чистить на Реплике?
    #40041514
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Подскажите, пожалуйста, через какие промежутки времени (или еще какие-то факторы) утилита "pg_archivecleanup" приступает к чистке ненужных для восстановления wal-архивов на стороне Реплики?

На данный момент имею следующий recovery.conf на реплике (версия PostgreSQL = 11.6):

Код: plsql
1.
2.
3.
4.
standby_mode = 'on'
primary_conninfo = 'user=replicator password=*** host=*** port=5432 sslmode=prefer sslcompression=0 krbsrvname=postgres target_session_attrs=any'
restore_command = 'rsync -az --delete postgres@srv-tst-node1.test.com:/data/11/wal_arch/ /data/11/data/pg_wal'
archive_cleanup_command = 'pg_archivecleanup /data/11/data/pg_wal %r 2>> /home/postgres/arch_cleanup.log'



Хочу просто понять, на основе каких факторов происходит решение, что пора подчищать. На данный момент на реплике несколько Гигабайт архивов, которые уже не нужны для синхронизации с Мастером. В документации и интернетах не нашел быстро ответ (плохо искал?).
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40041621
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. Oracle,

после окончания checkpoint (restartpoint)
https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/access/transam/xlog.c#L9457
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40041697
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, но либо я Вас не правильно понял, либо Вы меня.

Мне нужно, чтобы на Реплике подчищались архивы , за счет команды из recovery.conf выше, потому что они уже не нужны постгресу для восстановления. Но этого не происходит.

На Мастере у меня уже выполнелось куча чекпоинтов, которые давно приехали на Реплику, но архивы еще лежат не тронутыми.
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40041726
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, невнимательно посмотрел в содержимое ваших команд.

Прочитайте описание restore_command и посмотрите, что вместо этого делаете вы. Затем исправьте его. Старые wal в pg_wal база уже удалила. Вы их обратно записали. База о них заботиться не будет.

А pg_archivecleanup предназначен чистить непосредственно архив wal. А не локальный pg_wal.
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40041787
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Переделал следующим образом на Реплике:
Код: plsql
1.
2.
3.
4.
standby_mode = 'on'
primary_conninfo = 'user=***password=***host=*** port=5432 sslmode=prefer sslcompression=0 krbsrvname=postgres target_session_attrs=any'
restore_command = 'rsync -az --delete postgres@srv-tst-node1.test.com:/data/11/wal_arch/ /data/11/wal_arch'
archive_cleanup_command = 'pg_archivecleanup /data/11/wal_arch %r 2>> /home/postgres/arch_cleanup.log'



Но все равно "pg_archivecleanup" ничего не чистит на на Реплике, в директории " /data/11/wal_arch" по прежнему много wal-архивов, но по сути они уже не нужны ...
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40041793
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. Oracle
Melkij,

Переделал следующим образом на Реплике:
Код: plsql
1.
2.
3.
4.
standby_mode = 'on'
primary_conninfo = 'user=***password=***host=*** port=5432 sslmode=prefer sslcompression=0 krbsrvname=postgres target_session_attrs=any'
restore_command = 'rsync -az --delete postgres@srv-tst-node1.test.com:/data/11/wal_arch/ /data/11/wal_arch'
archive_cleanup_command = 'pg_archivecleanup /data/11/wal_arch %r 2>> /home/postgres/arch_cleanup.log'



Но все равно "pg_archivecleanup" ничего не чистит на на Реплике, в директории " /data/11/wal_arch" по прежнему много wal-архивов, но по сути они уже не нужны ...

докаПри отдельном использовании этой программы из каталога расположение_архива будут удалены все файлы WAL, логически предшествующие файлу старейший_сохраняемый_файл. В этом режиме, если вы укажете имя файла с расширением .partial или .backup, старейший_сохраняемый_файл будет определяться по имени без расширения. Благодаря такой интерпретации расширения .backup будут корректно удалены все файлы WAL, заархивированные до определённой базовой копии.
Файлы вида .partial или .backup в директории есть?
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40041995
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваша команда

Код: sql
1.
rsync -az --delete postgres@srv-tst-node1.test.com:/data/11/wal_arch/ /data/11/wal_arch



тянет ВСЕ, а должна конкретный файл, который в данный момент нужен postgres-у.
Почитайте про параметры %p и %f для restore_command
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40042036
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya,

Да-да-да. Я это только сегодня утром понял - поправил. Все в порядке, всем спасибо.
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40042041
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итого так выглядит конечный вариант recovery.conf

Код: plsql
1.
2.
3.
standby_mode = 'on'
primary_conninfo = 'user=replicator password=*** host=*** port=5432 sslmode=prefer sslcompression=0 krbsrvname=postgres target_session_attrs=any'
restore_command = 'scp postgres@srv-tst-node1.test.com:/data/11/wal_arch/%f /data/11/data/pg_wal/'



Команду для "archive_cleanup_command" убрал вовсе, поскольку получается, что у меня архив лежит на Мастере, откуда мы тянем нужные wal'ы (в случае когда реплика например не работала некоторое время и Мастер удалил нужные для восстановления wal'лы из $PGDATA/pg_wal) напрямую в каталог с wal'ами на Реплике и на ней у меня ничего не архивируется, поэтому в "archive_cleanup_command" нет смысла. А Постгрес я так понимаю сам на стороне Релики позаботится о том, когда удалить/переиспользовать wal'ы из $PGDATA/pg_wal.

Я правильно все понял?
...
Рейтинг: 0 / 0
Когда pg_archivecleanup начинает чистить на Реплике?
    #40042060
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вместо
Код: sql
1.
/data/11/data/pg_wal/



можно просто %p указать
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Когда pg_archivecleanup начинает чистить на Реплике?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]