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

Проверка наличия пробелов в файлах Postgres WAL

Я хочу написать сценарий для проверки наличия пробелов в моих заархивированных файлах WAL, но я не могу найти никакой документации по схеме нумерации. Это выглядит довольно просто, но я хотел бы основывать свой сценарий на какой-то официальной документации, чтобы не пропустить никаких скрытых сложностей с переносом и т. Д.

Это не так просто сделать из файловой системы. Имя файла состоит из трех частей (по 8 символов каждая, шестнадцатеричные значения): шкала времени, логический XLOG, физический сегмент. Чтобы узнать, что это за «следующий» файл, вам действительно нужно знать, что случилось с базовой базой данных (новый xlog, новая временная шкала и т. Д.).

Лучшее решение, если вы архивируете журналы транзакций, состоит в том, чтобы ваша команда архивирования также добавляла имя архивируемого файла в какой-либо список - Postgres передает имя вашему архивному скрипту, поэтому вам не нужно беспокоиться о его вычислении из себя, и если все файлы в этом списке присутствуют, у вас нет пробелов.
(Это не решает проблему уверенности, что у вас нет пробелов перед вы реализовали это решение, поэтому вам следует сделайте резервную копию базы в соответствии с 24.3.2 в руководстве Postgres после реализации этого решения ...

За пределами исходного кода документации нет. Есть прохождение этого кода это объясняет это так же хорошо, как и все, что я знаю, пытаясь решить ту же проблему, что и вы. Подсчитайте две последние цифры вверх в шестнадцатеричном формате, пока они не достигнут FE, затем переведите курсор на 0 и увеличьте второе поле номера журнала посередине. Заметки на Понимание номенклатуры WAL полезны и здесь.

Одна из причин, по которой это не задокументировано, заключается в том, что вы можете изменить его во время компиляции; на практике никто не делает. Другая проблема заключается в том, что после того, как вы активируете резервную систему или сделаете что-то еще, чтобы изменить идентификатор временной шкалы, все гарантии последовательности исчезнут. Для большинства людей это тоже не проблема. Если это произойдет, вы все равно захотите проверить мониторинг.