9.27. Функции для системного администрирования
- 9.27.1. Функции для управления конфигурацией
- 9.27.2. Функции для передачи сигналов серверу
- 9.27.3. Функции управления резервным копированием
- 9.27.4. Функции управления восстановлением
- 9.27.5. Функции синхронизации снимков
- 9.27.6. Функции управления репликацией
- 9.27.7. Функции управления объектами баз данных
- 9.27.8. Функции обслуживания индексов
- 9.27.9. Функции для работы с обычными файлами
- 9.27.10. Функции управления рекомендательными блокировками
- 9.27.2. Функции для передачи сигналов серверу
Функции, описанные в этом разделе, предназначены для контроля и управления сервером PostgreSQL.
9.27.1. Функции для управления конфигурацией
В Таблице 9.83 показаны функции, позволяющие получить и изменить значения параметров конфигурации выполнения.
Таблица 9.83. Функции для управления конфигурацией
Функция Описание Пример(ы) |
|---|
Выдаёт текущее значение параметра
|
Устанавливает для параметра
|
9.27.2. Функции для передачи сигналов серверу
Функции, перечисленные в Таблице 9.84, позволяют передавать управляющие сигналы другим серверным процессам. Вызывать эти функции по умолчанию разрешено только суперпользователям, но доступ к ним можно дать и другим пользователям командой GRANT, кроме явно отмеченных исключений.
Каждая из этих функций возвращает true при успешном завершении и false в противном случае.
Таблица 9.84. Функции для передачи сигналов серверу
pg_cancel_backend и pg_terminate_backend передают сигналы (SIGINT и SIGTERM, соответственно) серверному процессу с заданным кодом PID. Код активного процесса можно получить из столбца pid представления pg_stat_activity или просмотрев на сервере процессы с именем postgres (используя ps в Unix или Диспетчер задач в Windows). Роль пользователя активного процесса можно узнать в столбце usename представления pg_stat_activity.
9.27.3. Функции управления резервным копированием
Функции, перечисленные в Таблице 9.85, предназначены для выполнения резервного копирования «на ходу». Эти функции нельзя выполнять во время восстановления (за исключением немонопольных вариантов pg_start_backup и pg_stop_backup, а также функций pg_is_in_backup, pg_backup_start_time и pg_wal_lsn_diff).
Подробнее практическое применение этих функций описывается в Разделе 25.3.
Таблица 9.85. Функции управления резервным копированием
Функция Описание |
|---|
Создаёт в журнале предзаписи именованный маркер, который можно использовать как цель при восстановлении, и возвращает соответствующую ему позицию в журнале. Полученное имя затем можно указать в параметре recovery_target_name, определив тем самым точку, до которой будет выполняться восстановление. Учтите, что если будет создано несколько точек восстановления с одним именем, восстановление остановится на первой точке с этим именем. По умолчанию доступ к этой функции имеют только суперпользователи, но право на её выполнение (EXECUTE) можно дать и другим пользователям. |
Выдаёт текущую позицию сброса данных в журнале предзаписи (см. примечания ниже). |
Выдаёт текущую позицию добавления в журнале предзаписи (см. примечания ниже). |
Выдаёт текущую позицию записи в журнале предзаписи (см. примечания ниже). |
Подготавливает сервер к резервному копированию «на лету». Единственный обязательный параметр задаёт произвольную пользовательскую метку резервной копии. (Обычно это имя, которое получит файл резервной копии.) Если необязательный второй параметр задан и имеет значение При копировании в монопольном режиме эта функция записывает файл метки ( По умолчанию доступ к этой функции имеют только суперпользователи, но право на её выполнение (EXECUTE) можно дать и другим пользователям. |
Завершает процедуру немонопольного или монопольного копирования «на лету». Значение параметра У этой функции есть также необязательный второй параметр типа При выполнении на ведущем эта функция также создаёт файл истории резервного копирования в области архива журнала предзаписи. В этом файле для данной резервной копии сохраняется метка, заданная при вызове В результате эта функция выдаёт единственную запись. Столбец По умолчанию доступ к этой функции имеют только суперпользователи, но право на её выполнение (EXECUTE) можно дать и другим пользователям. |
Завершает процедуру монопольного копирования «на лету». Вызов этой упрощённой вариации равнозначен По умолчанию доступ к этой функции имеют только суперпользователи, но право на её выполнение (EXECUTE) можно дать и другим пользователям. |
Возвращает true, если в данный момент выполняется исключительное резервное копирование. |
Выдаёт время начала исключительного резервного копирования, если оно выполняется в данный момент, иначе — |
Производит принудительное переключение журнала предзаписи на новый файл, что позволяет архивировать текущий (в предположении, что выполняется непрерывная архивация). Результат функции — конечная позиция в только что законченном файле журнала предзаписи + 1. Если с момента последнего переключения файлов не было активности, отражающейся в журнале предзаписи, По умолчанию доступ к этой функции имеют только суперпользователи, но право на её выполнение (EXECUTE) можно дать и другим пользователям. |
Выдаёт для заданной позиции в журнале предзаписи имя соответствующего файла WAL. |
Выдаёт для заданной позиции в журнале предзаписи имя соответствующего файла и байтовое смещение в нём. |
Вычисляет разницу в байтах ( |
pg_current_wal_lsn выводит текущую позицию записи в журнале предзаписи в том же формате, что и вышеописанные функции. pg_current_wal_insert_lsn подобным образом выводит текущую позицию добавления, а pg_current_wal_flush_lsn — позицию сброса данных журнала. Позицией добавления называется «логический» конец журнала предзаписи в любой момент времени, тогда как позиция записи указывает на конец данных, фактически вынесённых из внутренних буферов сервера, а позиция сброса показывает, до какого места данные считаются сохранёнными в надёжном хранилище. Позиция записи отмечает конец данных, которые может видеть снаружи внешний процесс, и именно она представляет интерес при копировании частично заполненных файлов журнала. Позиция добавления и позиция сброса выводятся в основном для отладки серверной части. Все эти функции выполняются в режиме «только чтение» и не требуют прав суперпользователя.
Используя функцию pg_walfile_name_offset, из значения pg_lsn можно получить имя соответствующего ему файла журнала предзаписи и байтовое смещение в этом файле. Например:
postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup());
file_name | file_offset
--------------------------+-------------
00000001000000000000000D | 4039624
(1 row) Родственная ей функция pg_walfile_name извлекает только имя файла журнала предзаписи. Когда заданная позиция в журнале предзаписи находится ровно на границе файлов, обе эти функции возвращают имя предыдущего файла. Обычно это поведение предпочтительно при архивировании журнала предзаписи, так как именно предыдущий файл является последним подлежащим архивации.
9.27.4. Функции управления восстановлением
Функции, показанные в Таблице 9.86, предоставляют сведения о текущем состоянии ведомого сервера. Эти функции могут выполняться как во время восстановления, так и в обычном режиме работы.
Таблица 9.86. Функции для получения информации о восстановлении
Функции, перечисленные в Таблице 9.87 управляют процессом восстановления. Вызывать их в другое время нельзя.
Таблица 9.87. Функции управления восстановлением
Функции pg_wal_replay_pause и pg_wal_replay_resume нельзя выполнять в процессе повышения. Если повышение запрашивается, когда восстановление приостановлено, сервер выходит из состояния паузы и продолжает процедуру повышения.
Когда потоковая репликация отключена, пауза при восстановлении может длиться сколь угодно долго без каких-либо проблем. Если же потоковая репликация осуществляется, новые записи WAL продолжат поступать и заполнят весь диск рано или поздно, в зависимости от длительности паузы, интенсивности записи в WAL и объёма свободного пространства.
9.27.5. Функции синхронизации снимков
PostgreSQL позволяет синхронизировать снимки состояния между сеансами баз данных. Снимок состояния определяет, какие данные видны транзакции, работающей с этим снимком. Синхронизация снимков необходима, когда в двух или более сеансах нужно видеть одно и то же содержимое базы данных. Если в двух сеансах транзакции запускаются независимо, всегда есть вероятность, что некая третья транзакция будет зафиксирована между командами START TRANSACTION для первых двух, и в результате в одном сеансе будет виден результат третьей, а в другом — нет.
Для решения этой проблемы PostgreSQL позволяет транзакции экспортировать снимок состояния, с которым она работает. Пока экспортирующая этот снимок транзакция выполняется, другие транзакции могут импортировать его и, таким образом, увидеть абсолютно то же состояние базы данных, что видит первая транзакция. Но учтите, что любые изменения, произведённые этими транзакциями, будут не видны для других, как это и должно быть с изменениями в незафиксированных транзакциях. Таким образом, транзакции синхронизируют только начальное состояние данных, а последующие производимые в них изменения изолируются как обычно.
Снимки состояния экспортируются с помощью функции pg_export_snapshot, показанной в Таблице 9.88, и импортируются командой SET TRANSACTION.
Таблица 9.88. Функции синхронизации снимков
Функция Описание |
|---|
Сохраняет текущий снимок состояния транзакции и возвращает строку типа Если необходимо, транзакция может экспортировать несколько снимков. Заметьте, что это имеет смысл только для транзакций уровня |
9.27.6. Функции управления репликацией
В Таблице 9.89 показаны функции, предназначенные для управления механизмом репликации и взаимодействия с ним. Чтобы изучить этот механизм детальнее, обратитесь к Подразделу 26.2.5, Подразделу 26.2.6 и Главе 49. Использовать эти функции для источников репликации разрешено только суперпользователям, а для слотов репликации — только суперпользователям и пользователям, имеющим право REPLICATION.
Многие из этих функций соответствуют командам в протоколе репликации; см. Раздел 52.4.
Функции, описанные в Подразделе 9.27.3, Подразделе 9.27.4 и Подразделе 9.27.5, также имеют отношение к репликации.
Таблица 9.89. Функции управления репликацией
Функция Описание |
|---|
Создаёт новый физический слот репликации с именем |
Удаляет физический или логический слот репликации с именем |
Создаёт новый логический (декодирующий) слот репликации с именем |
Копирует существующий слот физической репликации с именем |
Копирует существующий слот логической репликации с именем |
Возвращает изменения в слоте |