PostgreSQL хранит сегменты WAL, которые не требуются ни одному слоту репликации.

У меня wal_keep_segments установлено на 3000. Но каталог pg_xlog содержит более 6000 сегментов WAL. Интересно, что есть ~ 3000 файлов, датированных после 14 августа, поэтому файлов, датированных до 14 августа, я думаю, не должно быть. Также эти файлы имеют исполняемый бит.

$ ls -al pg_xlog | grep -A2 -B2 00000001000034DB0000003B
-rwx------  1 postgres postgres 16777216 Jul 19 07:58 00000001000034DB00000039
-rwx------  1 postgres postgres 16777216 Jul 19 07:58 00000001000034DB0000003A
-rwx------  1 postgres postgres 16777216 Jul 19 07:58 00000001000034DB0000003B
-rw-------  1 postgres postgres 16777216 Aug 14 19:17 0000000100003826000000EA
-rw-------  1 postgres postgres 16777216 Aug 14 19:17 0000000100003826000000EB

```

В этом кластере нет слотов репликации, archive_mode включен, но archive_command установлен на /bin/true. Я думаю, что новые сегменты WAL переработаны, и их общее количество составляет около 6000, но postgres почему-то не удаляет старые файлы. Любые идеи?


person pensnarik    schedule 15.08.2018    source источник
comment
Найдены файлы .ready для тех, которые не удалены в каталоге archive_status.   -  person pensnarik    schedule 15.08.2018


Ответы (1)


PostgreSQL не имеет привычки устанавливать исполняемые флаги в сегментах WAL.

Кроме того, похоже, что есть пробел в нумерации.

Эти файлы должны быть там случайно, их можно удалить.

person Laurenz Albe    schedule 15.08.2018
comment
Я виню в этом бармена. Понимаю, что я могу их удалить, но я пытаюсь понять, в чем причина этого. - person pensnarik; 15.08.2018
comment
Я не знаю бармена, поэтому не могу ответить на этот вопрос. Часто бывает трудно восстановить то, что произошло. - person Laurenz Albe; 15.08.2018