adminpack. Удаленное управление файлами журналов сервера#
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
pg_catalog.
Модуль adminpack включает в себя несколько вспомогательных функций, которыми могут пользоваться как pgAdmin, так и другие средства администрирования и управления базами данных. Среди дополнительных функций, например, есть возможность удаленного управления файлами журналов сервера. По умолчанию использовать эти функции разрешено только суперпользователям, однако при помощи команды GRANT доступ может быть предоставлен и другим пользователям.
Ниже приведены функции, предоставляющие право на редактирование файлов машины, где работает сервер:
pg_file_writeзаписывает данные (data) в файл с именемfilename:pg_catalog.pg_file_write (filename text, data text, append boolean);Если флаг
appendсброшен (принимает значение0/off/false), этот файл не должен существовать. Если же флагappendустановлен (в значении1/on/true), существование файла допускается, и в этом случае данные будут дописаны в него. Функция возвращает число записанных байт.pg_file_renameпереименовывает файл:pg_catalog.pg_file_rename(oldname text, newname text [, archivename text])Результаты выполнения функции в зависимости от значения необязательного параметра
archivename:если параметр не задан или равен
NULL, файлoldnameбудет переименован вnewname(файл с новым именем не должен существовать);если параметр задан, файл
newnameбудет переименован вarchivename(такой файл не должен существовать), затем файлoldnameбудет переименован вnewname. В случае неудачи на этом этапе файлarchivenameбудет переименован назад вnewnameи далее будет выдана ошибка.
Функция возвращает
trueв случае успеха,false, если исходные файлы отсутствуют или их невозможно изменить. В иных случаях будут возвращены ошибки.pg_file_unlinkудаляет заданный файл:pg_catalog.pg_file_unlink(filename text)Функция возвращает
trueв случае успеха,falseв случае отсутствия указанного файла либо при сбое в вызовеunlink(). В иных случаях возвращаются ошибки.pg_logdir_lsвозвращает время создания и пути всех файлов журналов в каталогеlog_directory(параметр СУБД):pg_catalog.pg_logdir_ls()Параметр
log_filenameдолжен иметь значение по умолчанию в форматеpostgresql-%Y-%m-%d_%H%M%S.log).pg_file_syncсбрасывает файл или каталог на диск:pg_catalog.pg_file_sync(filename text)Функция синхронизирует файл или каталог с именем
filename. В случае неудачи, например, при отсутствии соответствующего файла, будет выдана ошибка. Значениеdata_sync_retryна функциюpg_file_syncне влияет, поэтому даже при отказе в сбросе файлов БД ошибка уровняPANICвыдана не будет.
Примечание:
Обычные пользователи имеют доступ только к файлам директории кластера БД, тогда как для суперпользователей и пользователей с правами ролей
pg_read_server_filesилиpg_write_server_filesдоступ не ограничен. Обращение к файлу возможно как через относительный путь, так и через абсолютный.
Доработка#
Не проводилась.
Установка#
При наличии прав администратора СУБД включение модуля возможно выполнить вручную:
CREATE EXTENSION adminpack;
Настройка#
Не требуется.
Использование модуля#
Примеры:
pg_file_writeСоздать или дописать в существующий файл
test1.txtв каталоге$PGDATAтекст Test:SELECT * FROM pg_catalog.pg_file_write ('test1.txt', 'Test', '1'); # Пример вывода pg_file_write --------------- 4 (1 row)Создать или дописать в существующий файл
test1.txtв указанном каталоге текст Test:SELECT * FROM pg_catalog.pg_file_write ('/home/postgres/test1.txt', 'Test', '1');pg_file_renameCохранить файл
$PGDATA/test1.txtс именемtest1old.txtи переименовать его вtest1new.txt:SELECT * FROM pg_catalog.pg_file_rename ('test1.txt', 'test1new.txt', 'test1old.txt');pg_file_unlinkУдалить файл
$PGDATA/test1.txtSELECT * FROM pg_catalog.pg_file_unlink ('test1.txt');pg_logdir_lsФункция
pg_logdir_lsпроверяетlog-каталоги возвращает список файлов журнала:SELECT * FROM pg_catalog.pg_logdir_ls () AS (LogDate timestamp, Filename text); # Пример вывода LogDate | Filename ---------------------+-------------------------------------------------- 2023-01-20 15:06:44 | /pgerrorlogs/04/postgresql-2023-01-20_150644.log 2023-01-24 00:00:00 | /pgerrorlogs/04/postgresql-2023-01-24_000000.log 2023-01-23 00:00:00 | /pgerrorlogs/04/postgresql-2023-01-23_000000.log 2023-01-20 12:26:49 | /pgerrorlogs/04/postgresql-2023-01-20_122649.log 2023-01-25 00:00:00 | /pgerrorlogs/04/postgresql-2023-01-25_000000.log 2023-01-20 12:31:14 | /pgerrorlogs/04/postgresql-2023-01-20_123114.log 2023-01-26 00:00:00 | /pgerrorlogs/04/postgresql-2023-01-26_000000.log 2023-01-21 00:00:00 | /pgerrorlogs/04/postgresql-2023-01-21_000000.log 2023-01-27 00:00:00 | /pgerrorlogs/04/postgresql-2023-01-27_000000.log 2023-01-22 00:00:00 | /pgerrorlogs/04/postgresql-2023-01-22_000000.log 2023-01-20 12:28:09 | /pgerrorlogs/04/postgresql-2023-01-20_122809.log (11 rows)
Ссылки на документацию разработчика#
Дополнительно поставляемый модуль adminpack: https://www.postgresql.org/docs/15/adminpack.html.