Описание упреждающего протоколирования.
При внесении изменений в базу данных, например INSERTS или DELETES, эти изменения сначала записываются в журнал, а затем записываются в файлы данных на диске. Эта операция называется журналом перед записью, так как изменения записываются в журнал перед фиксацией их в файлы данных. В случае возникновения проблемы, такой как отключение питания, в журнале всегда хранятся последние данные, и его можно использовать для обеспечения согласованного состояния базы данных.
Второе преимущество заключается в том, что при записи изменений сначала в журнал, изменения в таблицах и индексах можно записывать пакетами, а не по отдельности. Этот процесс сокращает количество операций записи дисков, необходимых для поддержания актуальности таблиц и индексов. Записи в журнал осуществляются быстро, так как выполняются последовательно. Более медленные операции записи в таблицы и индексы можно безопасно выполнять посредством пакетов, так как все данные можно восстановить из журнала. Для рабочих нагрузок, которые обычно включают множество небольших обновлений, производительность улучшается.
Примечание.
Для локальных реализаций PostgreSQL файл журнала хранится в каталоге pg_wal. База данных Azure для PostgreSQL не предоставляет доступ к файловой системе, поэтому вам не нужно беспокоиться о физическом хранилище файла журнала.
Существует несколько параметров сервера, которые позволяют вам контролировать работу упреждающего протоколирования и оптимизировать ее для вашей рабочей нагрузки:
- commit_delay — задержка между фиксацией транзакции и записью журнала на диск.
- wal_buffers — количество буферов дисковых страниц в общей памяти для упреждающего протоколирования (WAL).
- max_wal_size — максимальный размер, позволяющий увеличить WAL до активации автоматической контрольной точки.
- wal_writer_delay — интервал времени между записями WAL на диск, выполняемыми модулем записи WAL.
- wal_compression — сжимаются ли записи полной страницы в файле WAL.
- wal_level — определяет, сколько информации записывается в WAL. Допустимые значения: REPLICA или LOGICAL.
Восстановление до точки во времени
Основная цель упреждающего протоколирования (WAL) — обеспечить согласованность и устойчивость базы данных в случае сбоя. Локальная версия PostgreSQL позволяет использовать журнал в качестве архива, благодаря чему можно выполнять восстановление до точки во времени с помощью параметров конфигурации archive_mode и archive_command.
База данных Azure для PostgreSQL — это управляемая служба, которая не разрешает доступ к базовой файловой системе. Однако она включает автоматическое полное резервное копирование сервера, включая все базы данных. Эта резервная копия позволяет воссоздать данные на определенный момент времени. Резервное копирование выполняется автоматически один раз в день. Если необходимо восстановить, можно восстановить до количества дней, указанных для хранения резервных копий, до 35 дней. Чтобы указать, как долго должны храниться резервные копии, выполните приведенные ниже действия.
- На портале Azure перейдите к гибкому серверу Базы данных Azure для PostgreSQL.
- В разделе Обзор выберите свою конфигурацию.
- В разделе "Резервные копии" найдите параметр Срок хранения резервной копии (в днях). Ползунок позволяет выбрать количество дней, в течение которых должны храниться резервные копии.
- Выберите Сохранить, чтобы сохранить изменения.