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
доступ не ограничен. Обращение к файлу возможно как через относительный путь, так и через абсолютный.-
pg_file_write
. Создать или дописать в существующий файлtest1.txt
в каталоге$PGDATA
текст Test:SELECT * FROM pg_catalog.pg_file_write ('test1.txt', 'Test', '1');
Пример вывода:Раскрыть type=sqlpg_file_write --------------- 4 (1 row)
-
pg_file_write
. Создать или дописать в существующий файлtest1.txt
в указанном каталоге текст Test:SELECT * FROM pg_catalog.pg_file_write ('/home/postgres/test1.txt', 'Test', '1');
-
pg_file_rename
. Cохранить файл$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.txt
:SELECT * FROM pg_catalog.pg_file_unlink ('test1.txt');
-
pg_logdir_ls
. Проверить log-каталог и показать список файлов журнала:SELECT * FROM pg_catalog.pg_logdir_ls () AS (LogDate timestamp, Filename text);
Пример вывода:Раскрыть type=sqlLogDate | 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 можно получить по ссылке.