Назад | Перейти на главную страницу

Очистка файлов Postgres WAL

Есть ли способ, как я могу очистить файлы postgres WAL НА ГЛАВНОМ СЕРВЕРЕ - ВЕДОМЫЙ в порядке, но у мастера wal keep сегмент установлен на 2000, и это приводит к увеличению использования дискового пространства. Я ищу способ очистить это дисковое пространство на МАСТЕРЕ, ничего не сломав. Я знаю, что установка для сегментов 2000 - безумие, но это было не мной.

Устраните основную причину, и проблема исчезнет (ваша основная проблема - кто-то, кто не знал, что делал, и не читал набор руководств Postgres wal_keep_segments до безумного значения):

  1. Уменьшить wal_keep_segments до разумного значения.
    (10 обычно разумно. 100 не является необоснованным).
  2. Перезагрузите сервер Postgres.

Подходящее значение для wal_keep_segments будет зависеть от ряда переменных. Никто не может сказать вам, на что это установить. Я установил для наших баз данных 64, так как 64 - это среднее количество файлов WAL, записываемых в период загруженности более 3 часов. Это будет означать, что у меня есть 3 часа, чтобы исправить любую проблему между основным и резервным за это время. Если я прохожу более 3 часов, мне придется либо повторно активировать режим ожидания, либо начать передачу файлов WAL из каталога архива.

Я столкнулся с этой проблемой на предпроизводственном сервере, для которого раньше выполнялось резервное копирование, а теперь нет. Оказывается, конфигурация была изменена на:

archive_command = ''
archive_mode    = on

... предположительно, чтобы удалить команду rsync. Это привело к pg_xlog бесконечно растет. Ты не можешь изменить archive_mode выключено, для этого требуется перезапуск экземпляра.

Решил проблему поменяв archive_command = '/bin/true', сделал select pg_reload_conf(); и каталог был очищен в течение следующих нескольких контрольных точек.