×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

3.4.5. Write Ahead Log - журнал предзаписи

3.4.5.1. Параметры
3.4.5.2. Контрольные точки
3.4.5.3. Архивирование
3.4.5.4. Восстановление
3.4.5.5. Восстановление из архива
3.4.5.6. Целевая точка восстановления
3.4.5.7. Суммирование WAL

Для получения дополнительной информации о настройке данных параметров см. Раздел 3.13.5.

3.4.5.1. Параметры #

wal_level (enum) #

wal_level определяет объем информации, записываемой в журнал WAL. Значение по умолчанию — replica, при котором записывается объем данных, достаточный для архивирования WAL и репликации, включая выполнение запросов в режиме «только чтение» на резервном сервере. minimal удаляет все логирование, за исключением информации, необходимой для восстановления после сбоя или немедленного выключения. Наконец, логическое добавляет информацию, необходимую для поддержки логического декодирования. Каждый уровень включает информацию, регистрируемую на всех нижележащих уровнях. Данный параметр может быть установлен только при запуске сервера.

Команда minimal уровень генерирует минимальный объем WAL. В этом режиме не записывается информация о строках для постоянных отношений в транзакциях, которые создают или перезаписывают их. Это может значительно ускорить выполнение операций (см. Раздел 2.11.4.7). К операциям, инициирующим данную оптимизацию, относятся:

ALTER ... SET TABLESPACE
CLUSTER
CREATE TABLE
REFRESH MATERIALIZED VIEW (без CONCURRENTLY)
REINDEX
TRUNCATE

Однако минимальный уровень WAL не содержит информации, достаточной для восстановления на момент времени (PITR), поэтому replica или необходимо использовать более высокие значения для обеспечения непрерывного архивирования (archive_mode) и потоковой бинарной репликации. Фактически, сервер не запустится в данном режиме, если параметр max_wal_senders имеет ненулевое значение. Обратите внимание, что изменение параметра wal_level для minimal делает предыдущие базовые резервные копии непригодными для восстановления на момент времени и использования резервных серверов.

На логическое уровне записывается та же информация, что и при с replica, а также сведения, необходимые для извлекать логические наборы изменений из WAL. Использование уровня логическое увеличит объем WAL, особенно если многие таблицы настроены для REPLICA IDENTITY FULL и многие UPDATE и DELETE выполняются. выполнены.

В версиях до 9.6 данный параметр также допускал значения archive и hot_standby. Они по-прежнему принимаются, но сопоставляются с replica.

fsync (boolean) #

Если данный параметр включен, то Digital Q.DataBase сервер будет пытаться обеспечить физическую запись обновлений на диск посредством выполнения fsync() системных вызовов или различных эквивалентные методы (см. wal_sync_method). Это гарантирует возможность восстановления кластера баз данных до согласованного состояния после сбоя операционной системы или аппаратного обеспечения.

Хотя отключение параметра fsync часто обеспечивает прирост производительности, это может привести к невосстановимому повреждению данных в случае сбоя электропитания или системного сбоя. Таким образом, отключать параметр рекомендуется fsync только в том случае, если существует возможность легко воссоздать всю базу данных из внешних источников данных.

Примеры безопасных условий для отключения параметра fsync включают первоначальную загрузку нового кластера баз данных из файла резервной копии, использование кластера для пакетной обработки данных, после завершения которой база данных будет удалена и создана заново, либо использование клона базы данных в режиме «только чтение», который часто перезаписывается и не применяется для обеспечения отказоустойчивости. Высокая наличие одного лишь качественного оборудования не является достаточным основанием для отключения fsync.

Для обеспечения надежного восстановления при изменении значения параметра fsync с off на on необходимо принудительно перенести все измененные буферы из ядра в постоянное хранилище. Данную операцию можно выполнить, пока кластер остановлен, либо когда параметр fsync имеет значение on, посредством запуска initdb --sync-only, выполнения команды sync, размонтирования файловой системы или перезагрузки сервера.

Во многих ситуациях отключение параметра synchronous_commit для некритичных транзакций может обеспечить большую часть потенциального прироста производительности, сопоставимого с отключением fsync, без сопутствующие риски повреждения данных.

fsync может быть задан только в postgresql.conf файле или в командной строке сервера. При отключении данного параметра также следует рассмотреть возможность отключения full_page_writes.

synchronous_commit (enum) #

Определяет необходимый объем завершенной обработки WAL перед тем, как сервер баз данных возвращает «подтверждение успешного выполнения» клиенту. Допустимые значения: remote_apply, on (по умолчанию), remote_write, localи off.

Если synchronous_standby_names пусто, единственными значимыми настройками являются on и off; remote_apply, remote_write и local все обеспечивают одинаковый уровень локальной синхронизации в качестве on. Локальное поведение всех не-off режимов заключается в ожидании локального сброса WAL на диск. В off режиме ожидание не производится, в связи с чем возможна задержка между моментом подтверждения успешного завершения операции клиенту и моментом, когда транзакция будет гарантированно защищена от сбоя сервера. (Максимальная задержка составляет три интервала wal_writer_delay.) В отличие от fsync, установка данного параметра в значение off не создает риска нарушения целостности базы данных: сбой операционной системы или базы данных может привести к потере некоторых последних предположительно зафиксированных транзакций, однако состояние базы данных будет таким же, как если бы эти транзакции были корректно отменены. Таким образом, отключение параметра synchronous_commit off может быть полезной альтернативой в случаях, когда производительность важнее абсолютной уверенности в сохранности транзакции. Для более подробного обсуждения см. Раздел 3.13.4.

Если synchronous_standby_names имеет непустое значение, synchronous_commit также определяет, будут ли операции фиксации транзакций ожидать записи своих WAL-логов в обрабатываются на резервном сервере (серверах).

При установке значения remote_apply, фиксации транзакций будут ожидать, пока ответы от текущих синхронных резервных серверов не подтвердят, что они получили запись о фиксации транзакции и применили её, в результате чего она стала видимой для запросов на резервных серверах, а также записали её в долговременное хранилище на резервных серверах. Это приведёт к значительно большим задержкам фиксации, чем при предыдущих значениях параметров, так как производится ожидание воспроизведения WAL. При установке значения on, фиксации транзакций ожидают, пока ответы от текущих синхронных резервных серверов не подтвердят получение записи о фиксации транзакции и её сброс в долговременное хранилище. Это гарантирует, что транзакция не будет потеряна, если только основной сервер и все синхронные резервные серверы не столкнутся с повреждением хранилища данных. При установке значения remote_write, фиксации транзакций будут ожидать, пока ответы от текущих синхронных резервных серверов не подтвердят, что они получили запись о фиксации транзакции и записали её в свои файловые системы. Данный параметр обеспечивает сохранность данных в случае, если экземпляр резервного сервера Digital Q.DataBase завершается сбоем, однако это не относится к случаям, когда резервный сервер претерпевает сбой на уровне операционной системы, поскольку данные не обязательно достигли энергонезависимого хранилища на резервном сервере. Указанный параметр local вызывает ожидание операциями фиксации локального сброса данных на диск, но не завершения репликации. Обычно это не является целесообразным при использовании синхронной репликации, но предусмотрено для полноты функциональных возможностей.

Данный параметр может быть изменен в любое время; поведение для любой отдельной транзакции определяется значением, действующим в момент её фиксации. Следовательно, существует возможность и целесообразность настройки синхронной фиксации для одних транзакций и асинхронной — для других. Например, чтобы обеспечить асинхронную фиксацию отдельной многооператорной транзакции, когда по умолчанию задан обратный режим, выполните команду SET LOCAL synchronous_commit TO OFF внутри данной транзакции.

Таблица 3.4.1 обобщает возможности synchronous_commit параметров.

Таблица 3.4.1. Режимы параметра synchronous_commit

Параметр synchronous_commitлокальная надежная фиксациянадежная фиксация на резервном сервере после сбоя PGнадежная фиксация на резервном сервере после сбоя ОСсогласованность запросов на резервном сервере
remote_apply••••
on••• 
remote_write••  
local•   
off    

wal_sync_method (enum) #

Метод, используемый для принудительной записи обновлений WAL на диск. Если fsync выключен, то данный параметр не учитывается, так как принудительная запись обновлений файлов WAL производиться не будет. Допустимые значения:

  • open_datasync (запись файлов WAL с использованием open() параметра O_DSYNC)

  • fdatasync (вызов функции fdatasync() при каждой фиксации транзакции)

  • fsync (вызов функции fsync() при каждой фиксации транзакции)

  • fsync_writethrough (вызов функции fsync() при каждой фиксации транзакции с принудительной сквозной записью любого дискового кэша записи)

  • open_sync (запись файлов WAL с использованием open() параметра O_SYNC)

Не все из этих вариантов доступны на всех платформах. Значением по умолчанию является первый поддерживаемый платформой метод из вышеуказанного списка, за исключением того, что fdatasync является значением по умолчанию в Linux и FreeBSD. Значение по умолчанию не всегда оптимально; может потребоваться изменение данного параметра или других аспектов конфигурации системы для создания отказоустойчивой конфигурации или достижения оптимальной производительности. Эти аспекты обсуждаются в Раздел 3.13.1. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

full_page_writes (boolean) #

Когда данный параметр включен, сервер Digital Q.DataBase сервер записывает полное содержимое каждой дисковой страницы в WAL при первом изменении этой страницы после контрольной точки. Это необходимо, так как запись страницы, выполняемая в момент сбоя операционной системы, может выполнена лишь частично, что приведет к формированию на диске страницы, содержащей смесь старых и новых данных. Данных об изменениях на уровне строк, обычно сохраняемых в WAL, будет недостаточно для полного восстановления такой страницы в процессе восстановления после сбоя. Сохранение полных образов страниц гарантирует возможность корректного восстановления страницы, но ценой увеличения объема данных, записываемых в WAL. (Поскольку воспроизведение WAL всегда начинается с контрольной точки, достаточно выполнять эту операцию при первом изменении каждой страницы после прохождения контрольной точки. Таким образом, одним из способов снижения затрат на запись полных страниц является увеличение значений параметров интервала контрольных точек.)

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

Отключение данного параметра не влияет на использование архивирования WAL для восстановления на момент времени (PITR) (см. Раздел 3.10.3).

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера. Значение по умолчанию — on.

wal_log_hints (boolean) #

Когда данный параметр on, the Digital Q.DataBase сервер записывает полное содержимое каждой дисковой страницы в WAL при первом изменении этой страницы после контрольной точки, даже в случае некритичных изменений так называемых бит-подсказок (hint bits).

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

Данный параметр может быть установлен только при запуске сервера. Значение по умолчанию — off.

wal_compression (enum) #

Данный параметр включает сжатие WAL с использованием указанного метода сжатия. Если этот параметр включен, то Digital Q.DataBase сервер сжимает полные образы страниц, записываемые в WAL, когда full_page_writes активен или во время создания базовой резервной копии. Сжатый образ страницы распаковывается в процессе воспроизведения WAL. Поддерживаются следующие методы: pglz, lz4 (если Digital Q.DataBase был скомпилирован с флагом --with-lz4) и zstd (если Digital Q.DataBase был скомпилирован с флагом --with-zstd). Значение по умолчанию — off. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

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

wal_init_zero (boolean) #

При установке значения on (по умолчанию) данный параметр обеспечивает заполнение новых файлов WAL нулями. В некоторых файловых системах это гарантирует что пространство выделяется до возникновения необходимости в записи записей WAL. Однако Copy-On-Write файловые системы с механизмом COW могут не получить преимуществ от данного метода, поэтому предусмотрена возможность пропуска этой избыточной операции. Если параметр установлен в значение off, при создании файла записывается только последний байт, чтобы обеспечить соответствие файла ожидаемому размеру.

wal_recycle (boolean) #

При установке значения on (значение по умолчанию), данный параметр инициирует циклическое использование файлов WAL посредством их переименования, что исключает необходимость создания новых объектов. В файловых системах с поддержкой COW создание новых файлов может выполняться быстрее, поэтому предусмотрена возможность отключения данного поведения.

wal_buffers (integer) #

Объем разделяемой памяти, используемой для хранения данных WAL, которые еще не были перенесены на диск. При значении по умолчанию -1 выбирается объем, равный 1/32 части (около 3 %) от shared_buffers, но не менее чем 64kB и не более размера одного сегмента WAL сегмент, как правило, 16MB. Данный параметр может быть задан вручную, если автоматически выбранное значение является слишком большим или слишком малым, но любое положительное значение меньше 32kB будет интерпретируется как 32kB. Если данное значение указано без единиц измерения, оно принимается в блоках WAL, то есть XLOG_BLCKSZ байт, обычно 8 Кбайт. Данный параметр может быть задан только при запуске сервера.

Содержимое буферов WAL записывается на диск при каждой фиксации транзакции, поэтому крайне маловероятно, что чрезмерно большие значения обеспечат значительное преимущество. Тем не менее, установка данного значения как минимум в несколько мегабайтов может повысить производительность записи на высоконагруженном сервере при одновременной фиксации множества клиентских транзакций. Автоматическая настройка, выполняемая при значении по умолчанию -1, должна обеспечивать приемлемые результаты в большинстве случаев.

wal_writer_delay (integer) #

Определяет периодичность сброса данных WAL процессом записи WAL (WAL writer) во временном исчислении. После сброса данных WAL процесс записи переходит в состояние ожидания на указанный период времени значением wal_writer_delay, если он не будет пробужден ранее асинхронно фиксируемой транзакцией. Если последний сброс данных произошел менее чем wal_writer_delay назад и было чем wal_writer_flush_after сгенерировано менее чем объема WAL с тех пор, то данные WAL записываются только в операционную систему, а не сбрасываются на диск. Если данное значение указано без единиц измерения, оно интерпретируется в миллисекундах. Значение по умолчанию составляет 200 миллисекунд (200ms). Обратите внимание, что в некоторых системах эффективное разрешение задержек в режиме ожидания составляет 10 миллисекунд; установка wal_writer_delay параметра в значение, которое не кратно 10, может привести к тем же результатам, что и установка значения, кратного следующему большему числу 10. Данный параметр может быть задан только в postgresql.conf конфигурационном файле или в командной строке запуска сервера.

wal_writer_flush_after (integer) #

Определяет частоту сброса данных WAL процессом записи WAL (WAL writer) в единицах объема. Если последний сброс произошел менее чем wal_writer_delay назад и было чем wal_writer_flush_after сгенерировано менее чем объема WAL с тех пор, то данные WAL записываются только в операционную систему, а не сброшено на диск. Если параметр wal_writer_flush_after установлен в 0 то данные WAL всегда сбрасываются немедленно. Если данное значение указано без единиц измерения, оно принимается в блоках WAL, то есть XLOG_BLCKSZ байт, обычно 8 Кбайт. Значение по умолчанию — 1 мегабайт. Данный параметр может быть задан только в postgresql.conf конфигурационном файле или в командной строке запуска сервера.

wal_skip_threshold (integer) #

В случае когда wal_level выполняется minimal и фиксация транзакции после создания или перезаписи постоянного отношения, данный параметр определяет способ сохранения новых данных. Если объем данных меньше установленного значения, они записываются в лог WAL; в противном случае используется вызов fsync для соответствующих файлов. В зависимости от характеристик подсистемы хранения, изменение этого значения может быть полезным, если такие операции фиксации замедляют параллельные транзакции. Если данное значение указано без единиц измерения, оно трактуется как значение в килобайтах. Значение по умолчанию — два мегабайта (2MB).

commit_delay (integer) #

Установка значения параметра commit_delay добавляет временную задержку перед инициированием сброса буферов WAL на диск. Это позволяет повысить эффективность групповой фиксации, обеспечивая фиксацию большего числа транзакций в рамках одной операции сброса WAL при достаточно высокой системной нагрузке вероятность готовности дополнительных транзакций к фиксации в течение заданного интервала. Однако это также увеличивает задержку на величину до commit_delay для каждой операции сброса WAL. Поскольку задержка нецелесообразна, если другие транзакции не готовы к фиксации, она выполняется только в том случае, если как минимум commit_siblings другие транзакции находятся в активном состоянии в момент инициирования сброса. Кроме того, задержки не применяются, если параметр fsync отключен. Если данное значение указано без единиц измерения, оно считывается в микросекундах. Значение параметра по умолчанию commit_delay составляет ноль (задержка отсутствует). Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

На Digital Q.DataBase в выпусках до версии 9.3, commit_delay функционировал иначе и был значительно менее эффективен: его действие распространялось только на фиксации, а не на все сбросы WAL, при этом ожидание длилось в течение всего заданного интервала, даже если сброс WAL завершался быстрее. Начиная с версии Digital Q.DataBase 9.3, первый процесс, готовый к выполнению сброса данных на диск, ожидает в течение заданного интервала, в то время как последующие процессы ожидают только завершения операции сброса ведущим процессом.

commit_siblings (integer) #

Минимальное количество одновременно открытых транзакций, необходимое для активации commit_delay задержки. Увеличение этого параметра повышает вероятность того, что как минимум одна дополнительная транзакция будет готова к фиксации в течение интервала задержки. Значение по умолчанию — пять транзакций.

3.4.5.2. Контрольные точки #

checkpoint_timeout (integer) #

Максимальный интервал времени между автоматическими контрольными точками WAL. Если данное значение указано без указания единиц измерения, оно интерпретируется как значение в секундах. Допустимый диапазон значений составляет от 30 секунд до одного дня. Значение по умолчанию — пять минут (5min). Увеличение значения данного параметра может привести к увеличению времени, требуемого для восстановления после сбоя. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

checkpoint_completion_target (floating point) #

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

checkpoint_flush_after (integer) #

Если в процессе выполнения контрольной точки объем записанных данных превышает указанный лимит, предпринимается попытка принудительно заставить ОС отправить эти данные на физическое хранилище. Данное действие позволяет ограничить объем «грязных» страниц в кэше ядра, снижая вероятность возникновения задержек при выполнении системного вызова fsync в завершающей фазе контрольной точки или при выполнении ОС фоновой записи данных большими порциями. Часто это приводит к значительному снижению задержек транзакций задержку, однако существуют также ситуации, в частности при рабочих нагрузках, превышающих shared_buffers, но меньших, чем объем кэша страниц ОС, когда производительность может снизиться. Данный параметр может не иметь эффекта на некоторых платформах. Если данное значение указано без единиц измерения, оно измеряется в блоках, то есть BLCKSZ байт, обычно 8 Кбайт. Допустимый диапазон значений — от 0, что отключает функцию принудительной обратной записи, и 2MB. Значение по умолчанию — 256 Кбайт on Linux, 0 в других системах. (Если значение параметра BLCKSZ не является 8 Кбайт, значения по умолчанию и максимальные значения масштабируются пропорционально ему.) Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

checkpoint_warning (integer) #

Записывать сообщение в журнал сервера, если контрольные точки, вызванные заполнением файлов сегментов WAL, происходят чаще, чем через данный интервал времени (что указывает на то, что параметр max_wal_size должен быть увеличен). Если данное значение указано без указания единиц измерения, оно интерпретируется как значение в секундах. Значение по умолчанию — 30 секунд (30s). Нулевое значение отключает предупреждение. Предупреждения не будут выводиться, если значение checkpoint_timeout меньше, чем checkpoint_warning. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

max_wal_size (integer) #

Максимальный размер, до которого может увеличиваться WAL в процессе автоматических контрольных точек. Это нестрогое ограничение; размер WAL может превышать его max_wal_size при определенных обстоятельствах, таких как высокая нагрузка, сбой archive_command или archive_library, или высокого значения wal_keep_size параметра. Если данное значение указано без единиц измерения, оно измеряется в мегабайтах. Значение по умолчанию — 1 ГБ. Увеличение значения данного параметра может привести к увеличению времени, необходимого для восстановления после сбоя. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

min_wal_size (integer) #

До тех пор пока объем дискового пространства, используемого WAL, остается ниже установленного значения, старые файлы WAL всегда перерабатываются для последующего использования в контрольной точке, а не удаляются. Данный параметр можно использовать для резервирования объема пространства WAL, достаточного для обработки резких скачков нагрузки на WAL, например, при выполнении крупных пакетных заданий. Если данное значение указано без единиц измерения, оно измеряется в мегабайтах. Значение по умолчанию — 80 МБ. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

3.4.5.3. Архивирование #

archive_mode (enum) #

В случае когда archive_mode включено, завершенные сегменты WAL отправляются в архивное хранилище посредством настройки параметра archive_command или archive_library. В дополнение к значению off, для отключения, предусмотрено два режима: on, а также always. В обычном режиме эксплуатации различие между двумя режимами отсутствует, однако при установке значения always архиватор WAL активируется также во время восстановления из архива или в режиме ожидания (standby). В режиме always все файлы, восстановленные из архива или переданные посредством потоковой репликации, будут архивироваться (повторно). См. Раздел 3.11.2.9 для получения подробной информации.

archive_mode является отдельным параметром относительно archive_command и archive_library что позволяет archive_command и archive_library изменять параметр без выхода из режима архивирования. Данный параметр может быть задан только при запуске сервера. archive_mode не может быть задействован, когда wal_level устанавливается в значение minimal.

archive_command (string) #

Команда локальной командной оболочки, выполняемая для архивирования завершенного сегмента файла WAL. Любое вхождение %p в строке заменяется путем к архивируемому файлу, а каждое вхождение %f заменяется исключительно именем файла. (Путь указывается относительно рабочего каталога сервера, то есть каталога данных кластера.) Используйте %% для включения символа % в команду. Важно, чтобы команда возвращала нулевой код завершения только в случае успешного выполнения. Для получения дополнительной информации см. Раздел 3.10.3.1.

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера. Данный параметр используется только в том случае, если archive_mode был включен при запуске сервера и archive_library задан в виде пустой строки. Если оба параметра archive_command и archive_library заданы, будет выдана ошибка. Если archive_command является пустой строкой (по умолчанию), в то время как параметр archive_mode включен (и параметр archive_library задан в виде пустой строки), архивирование WAL временно отключено, однако сервер продолжает накапливать файлы сегментов WAL в ожидании того, что команда вскоре будет предоставлена. Установка значения параметра archive_command команде, которая не выполняет никаких действий, кроме возврата значения true, например, /bin/true (REM on Windows), что фактически отключает архивирование, а также разрывает цепочку файлов WAL, необходимых для восстановления из архива, поэтому данный параметр следует использовать только в исключительных случаях.

archive_library (string) #

Библиотека, используемая для архивирования сегментов заполненных файлов WAL. Если задана пустая строка (по умолчанию), включается архивирование через командную оболочку и archive_command используется. Если оба archive_command и archive_library параметра заданы, будет выдана ошибка. В противном случае для архивирования используется указанная общая библиотека. Процесс архиватора WAL перезапускается процессом postmaster при изменении данного параметра. Для получения дополнительной информации см. Раздел 3.10.3.1 и Глава 5.14.

Данный параметр может быть задан только в postgresql.conf конфигурационном файле или в командной строке запуска сервера.

archive_timeout (integer) #

Команда archive_command или archive_library вызывается только для заполненных сегментов WAL. Следовательно, если сервер генерирует небольшой объем трафика WAL (или в его работе возникают периоды низкой активности), возможна длительная задержка между завершением транзакции и её надежной записью в архивное хранилище. Для ограничения максимального возраста неархивированных данных можно задать значение параметра, archive_timeout инициирующее принудительное периодическое переключение сервера на новый файл сегмента WAL. Если данный параметр больше нуля, сервер будет переключаться на новый файл сегмента по истечении указанного времени с момента последнего переключения сегмента при наличии любой активности базы данных, включая выполнение одной контрольной точки (контрольные точки пропускаются при отсутствии активности базы данных). Учтите, что архивные файлы, закрытые досрочно из-за принудительного переключения, имеют ту же длину, что и полностью заполненные файлы. Поэтому не рекомендуется устанавливать слишком малый интервал archive_timeout — это приведет к избыточному росту объема архива хранилища. archive_timeout значения параметров порядка одной минуты являются обычно приемлемыми. Следует рассмотреть возможность использования потоковой репликации вместо архивирования, если требуется обеспечить копирование данных с основного сервера быстрее, чем при указанных настройках. Если данное значение указано без указания единиц измерения, оно интерпретируется как значение в секундах. Данный параметр может быть задан только в postgresql.conf конфигурационном файле или в командной строке запуска сервера.

3.4.5.4. Восстановление #

В данном разделе описываются параметры, применяемые к процессу восстановления в целом и влияющие на аварийное восстановление, потоковую репликацию и репликацию на основе архивов.

recovery_prefetch (enum) #

Определяет необходимость выполнения упреждающей выборки блоков, на которые ссылается WAL и которые еще отсутствуют в буферном пуле, в процессе восстановления. Допустимые значения: off, on и try (значение по умолчанию). Параметр try активирует упреждающую выборку только при условии поддержки операционной системой posix_fadvise функции, используемой в настоящее время для реализации механизма упреждающей выборки. Следует учитывать, что некоторые операционные системы предоставляют функция, которая не выполняет никаких действий.

Упреждающее чтение блоков, потребность в которых возникнет в ближайшее время, позволяет сократить время ожидания операций ввода-вывода в процессе восстановления при определенных типах нагрузки. См. также wal_decode_buffer_size и maintenance_io_concurrency параметры, ограничивающие интенсивность упреждающего чтения.

wal_decode_buffer_size (integer) #

Предел глубины просмотра записей WAL сервером для поиска блоков для упреждающего чтения. Если данное значение указано без единиц измерения, оно принимается в байтах. Значение по умолчанию — 512kB.

3.4.5.5. Восстановление из архива #

В данном разделе описываются параметры, применяемые только на протяжении процесса восстановления. Их необходимо настраивать заново для каждого последующего сеанса восстановления.

«Восстановление» описывает использование сервера в качестве резервного или для выполнения целевого восстановления. Как правило, режим резервного сервера используется для обеспечения высокой доступности и/или масштабируемости чтения, в то время как целевое восстановление применяется для устранения последствий потери данных.

Для запуска сервера в режиме резервного сервера необходимо создать файл с именем standby.signal в каталоге данных. Сервер перейдет в режим восстановления и не прекратит процесс восстановления по достижении конца архивного WAL, а продолжит попытки восстановления путем подключения к передающему серверу, как указано в параметре primary_conninfo и/или путем получения новых сегментов WAL с помощью restore_command. Для данного режима представляют интерес параметры из этого раздела и Раздел 3.4.6.3 . Параметры из Раздел 3.4.5.6 также будут применены, но обычно они не используются в этом режиме.

Для запуска сервера в режиме целевого восстановления создайте файл с именем recovery.signal в каталоге данных. Если созданы оба файла, standby.signal и recovery.signal , режим ожидания имеет приоритет. Режим целевого восстановления завершается после полного воспроизведения архивного WAL или при достижении recovery_target . В данном режиме будут использоваться параметры как из этого раздела, так и из Раздел 3.4.5.6 will be used.

restore_command (string) #

Команда локальной оболочки, выполняемая для получения архивного сегмента последовательности файлов WAL. Данный параметр является обязательным для восстановления из архива, но не является обязательным для потоковой репликации. Любое вхождение %f в строке заменяется именем файла, извлекаемого из архива, а любое вхождение %p заменяется путем к месту назначения копии на сервере. (Путь указывается относительно текущего рабочего каталога, то есть каталога данных кластера.) Любое вхождение %r заменяется именем файла, содержащего последнюю корректную точку перезапуска. Это самый ранний файл, который необходимо сохранить для обеспечения возможности перезапуска процесса восстановления, поэтому данная информация может быть использована для усечения архива до минимально необходимого объема в целях поддержки перезапуска текущего процесса восстановления. %r обычно данный параметр используется только в конфигурациях «теплого резерва» (warm-standby) (см. Раздел 3.11.2). Запись %% для включения символа % символ.

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

restore_command = 'cp /mnt/server/archivedir/%f "%p"'
restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows

Исключением является случай, когда выполнение команды было прервано по сигналу (за исключением чем SIGTERM, который используется в рамках процедуры завершения работы сервера баз данных) или из-за ошибки командной оболочки (например, команда не найдена); в таких ситуациях восстановление прерывается, и сервер не запускается.

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

archive_cleanup_command (string) #

Данный необязательный параметр задает команду оболочки, которая будет выполняться при каждой контрольной точке перезапуска. Назначение параметра archive_cleanup_command заключается в обеспечении механизма для очистки старых архивных файлов WAL, которые более не требуются для резервный сервер. Любое вхождение %r заменяется именем файла, содержащего последняя корректная точка перезапуска. Это самый ранний файл, который должен быть сохранен для обеспечения возможности возобновления восстановления, поэтому все файлы, созданные ранее, чем %r могут быть безопасно удалены. Данная информация может быть использована для сокращения объема архива до минимума, необходимого для поддержки перезапуска текущего процесса восстановления. Команда pg_archivecleanup модуль часто используется в archive_cleanup_command для конфигураций с одним резервным сервером, например:

archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'

Однако следует учитывать, что если несколько резервных серверов выполняют восстановление из одного и того же каталога архива, необходимо обеспечить сохранение файлов WAL до тех пор, пока они не перестанут требоваться любому из этих серверов. archive_cleanup_command обычно используется в конфигурация теплого резерва (см. Раздел 3.11.2). Запись %% для включения символа % в команду.

Если команда возвращает ненулевой код завершения, то в журнал будет записано предупреждающее сообщение. Исключением является случай, когда команда была завершена по сигналу или вследствие ошибки командной оболочки (например, если команда не найдена), что приведет к возникновению фатальной ошибки.

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

recovery_end_command (string) #

Данный параметр задает команду оболочки, которая будет выполнена только один раз по завершении процесса восстановления. Данный параметр является необязательным. Назначение данного параметра recovery_end_command заключается в обеспечении механизма очистки после выполнения репликации или восстановления. Любое вхождение %r заменяется именем файла, содержащего последняя корректная точка перезапуска, как в archive_cleanup_command.

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

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

3.4.5.6. Целевая точка восстановления #

По умолчанию восстановление выполняется до конца журнала WAL. Для указания более ранней точки остановки могут быть использованы следующие параметры. Допускается использование не более одного из параметров recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time, или recovery_target_xid может быть использован; если в конфигурационном файле указано несколько таких параметров, будет выдана ошибка. Данные параметры могут быть заданы только при запуске сервера.

recovery_target = 'immediate' #

Данный параметр указывает, что восстановление должно завершиться сразу после достижения согласованного состояния, то есть максимально оперативно. При восстановлении из оперативной резервной копии это соответствует моменту завершения процедуры создания резервной копии.

Технически это строковый параметр, однако 'immediate' в настоящее время является единственным допустимым значением.

recovery_target_name (string) #

Данный параметр задает именованную точку восстановления (созданную с помощью функции pg_create_restore_point()), до которой будет выполняться процесс восстановления.

recovery_target_time (timestamp) #

Данный параметр задает метку времени, до которой будет выполняться процесс восстановления будет продолжено. На точную точку остановки также влияет recovery_target_inclusive.

Значение данного параметра представляет собой метку времени в том же формате, который поддерживает timestamp with time zone тип данных, за исключением того, что использование сокращений часовых поясов не допускается (если значение timezone_abbreviations параметра не было задано ранее в конфигурационном файле). Рекомендуется использовать числовое смещение относительно UTC или указывать полное имя часового пояса, например, Europe/Helsinki а не в EEST.

recovery_target_xid (string) #

Данный параметр задает идентификатор транзакции, до которого восстановление будет выполняться. Следует учитывать, что хотя идентификаторы транзакций назначаются последовательно при старте, завершаться транзакции могут в ином числовом порядке. Восстановлению подлежат те транзакции, фиксация которых была выполнена до (и, при необходимости, включая) указанного значения. На точную точку остановки также влияет recovery_target_inclusive.

recovery_target_lsn (pg_lsn) #

Данный параметр определяет значение LSN в журнале упреждающей записи, до которого будет выполняться восстановление. На точную точку остановки также влияет значение параметра recovery_target_inclusive. Данный параметр анализируется с использованием системного типа данных pg_lsn.

Следующие параметры дополнительно уточняют цель восстановления и определяют действия при достижении целевого значения:

recovery_target_inclusive (boolean) #

Определяет, следует ли выполнить остановку сразу после указанной цели восстановления (on) или непосредственно перед ней (off). Параметр применяется, когда указан recovery_target_lsn, recovery_target_timeили recovery_target_xid is specified. Данная настройка определяет, будут ли транзакции, имеющие в точности целевое местоположение в WAL (LSN), время фиксации или идентификатор транзакции соответственно, включены в процесс восстановления. Значение по умолчанию — on.

recovery_target_timeline (string) #

Задает восстановление в определенную линию времени. Значением может быть числовой идентификатор временной шкалы или специальное значение. Значение current выполняет восстановление по той же временной шкале, которая была актуальной на момент создания базовой резервной копии. Значение value latest выполняет восстановление до последней временной шкалы, найденной в архиве, что полезно для резервного сервера. latest используется по умолчанию.

Чтобы указать идентификатор временной шкалы в шестнадцатеричном формате (например, если он извлечен из имени WAL-файла или файла истории), добавьте к нему префикс 0x. Например, если имя WAL-файла — 00000011000000A10000004F, то идентификатор временной шкалы равен 0x11 (или 17 в десятичной системе).

Обычно данный параметр требуется устанавливать только в сложных ситуациях повторного восстановления, когда требуется возврат к состоянию, которое само было достигнуто в результате восстановления на определенный момент времени. См. Раздел 3.10.3.6 для обсуждения.

recovery_target_action (enum) #

Определяет действие, которое сервер должен выполнить после того, как целевой ориентир восстановления будет достигнут. Значением по умолчанию является pause, что предполагает приостановку процесса восстановления. promote означает завершение процесса восстановления, после чего сервер начнет принимать входящие соединения. Наконец, shutdown приведет к остановке сервера после достижения целевого ориентира восстановления.

Назначение данного параметра pause состоит в том, чтобы разрешить выполнение запросов к базе данных для проверки достижения целевой точки восстановления является наиболее предпочтительным моментом для восстановления. Состояние паузы может быть прервано с помощью функции pg_wal_replay_resume() (см. Таблица 2.6.97), что приводит к завершению процесса восстановления. Если данная цель восстановления не является желаемой точкой остановки, следует остановить сервер, изменить значения параметров цели восстановления на более позднюю цель и выполнить перезапуск для продолжения восстановления.

Команда shutdown данный параметр полезен для подготовки экземпляра точно в требуемой точке воспроизведения. Экземпляр сохранит возможность воспроизведения дополнительных записей WAL (и фактически будет должен воспроизвести записи WAL, созданные после последней контрольной точки, при следующем запуске).

Обратите внимание: так как recovery.signal не будут удалены в случае, когда recovery_target_action устанавливается в значение shutdown, любой последующий запуск приведет к немедленной остановке, если только изменена конфигурация или recovery.signal файл удален вручную.

Данный параметр не оказывает влияния, если не задана цель восстановления. Если hot_standby не задействована, значение параметра pause будет интерпретироваться так же, как и shutdown. Если цель восстановления будет достигнута в процессе повышения роли сервера, значение параметра pause будет интерпретироваться так же, как и promote.

В любом случае, если цель восстановления настроена, но восстановление из архива завершается до достижения целевой точки, сервер прекратит работу с критической ошибкой.

3.4.5.7. Суммирование WAL #

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

summarize_wal (boolean) #

Активирует процесс суммирования WAL (WAL summarizer). Обратите внимание, что суммирование WAL может быть включено как на основном, так и на резервном сервере. Данный параметр может быть задан только задаваться в postgresql.conf конфигурационном файле или в командной строке сервера командной строке. Значение по умолчанию — off.

Запуск сервера невозможен при установленном параметре summarize_wal=on если wal_level устанавливается в значение minimal. Если summarize_wal=on настраивается после запуска сервера в то время как wal_level=minimal, процесс суммирования будет выполняться но будет отклонять генерацию файлов сводки для любых записей WAL, созданных при wal_level=minimal.

wal_summary_keep_time (integer) #

Настраивает период времени, по истечении которого процесс суммирования WAL автоматически удаляет устаревшие файлы сводки WAL. Временная метка файла используется для определения файлов, подлежащих удалению по сроку давности. Как правило, следует устанавливать данное значение значительно выше интервала времени, который может пройти между операциями резервного копирования и на последующую инкрементную резервную копию, зависящую от нее. Сводные данные WAL (WAL summaries) должны быть доступны для всего диапазона записей WAL между предыдущей резервной копией и создаваемой новой; в противном случае выполнение инкрементного резервного копирования завершится ошибкой. Если данный параметр установлен в значение ноль, автоматическое удаление сводок WAL производиться не будет, однако допускается ручное удаление файлов, которые заведомо не потребуются для будущих инкрементных резервных копий. Данный параметр может быть задан только в postgresql.conf конфигурационном файле или в командной строке запуска сервера. Если данное значение указано без единиц измерения, оно интерпретируется в минутах. Значение по умолчанию — 10 дней. Если параметр summarize_wal = off, существующие сводки WAL не будут удалены независимо от значения данного параметра, так как процесс суммирования WAL (WAL summarizer) не будет запущен.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению