Обзор базового инструментария
Установка и управление, psql
16
Авторские права
© Postgres Professional, 2017–2024
Авторы: Егор Рогов, Павел Лузанов, Илья Баштанов, Игорь Гнатюк
Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Варианты установки PostgreSQL
Управление сервером
Журнал сообщений сервера
Настройка параметров конфигурации
Использование psql
3
Кластер БД, сервер, клиент
PostgreSQL
база
данных
кластер баз данных
клиент
драйвер
подключение
Начнем с основных понятий.
PostgreSQLпрограмма, которая относится к классу систем
управления базами данных.
Когда эта программа выполняется, мы называем ее сервером
PostgreSQL или экземпляром сервера. Пока сервер представляется для
нас «черным ящиком», но постепенно мы познакомимся с тем, как он
устроен.
Данные, которыми управляет PostgreSQL, хранятся в базах данных.
Один экземпляр PostgreSQL одновременно работает с несколькими
базами данных. Этот набор баз данных называется кластером баз
данных. Подробнее мы будем говорить о базах данных в теме
«Организация данных. Логическая структура».
С сервером взаимодействуют клиенты — внешние приложения,
которые могут подключаться к одной из баз сервера и посылать
запросы для выполнения.
Итак: кластер баз данных — это данные в файлах; сервер или
экземпляр сервера — программа, управляющая кластером баз данных,
а клиент — программа, позволяющая «общаться» с сервером.
4
Установка
Варианты
готовые пакеты (предпочтительный способ)
установка из исходных кодов
без установки — облачные сервисы
Расширения
дополнительный функционал
устанавливаются отдельно
в поставке с сервером — модули и программы (~50 штук)
Предпочтительный вариант установки PostgreSQL — использование
пакетных менеджеров (таких, как apt или rpm) и готовых пакетов.
В этом случае получается понятная, поддерживаемая и легко
обновляемая установка. Пакеты существуют для большинства
операционных систем.
Другой вариант — самостоятельная сборка PostgreSQL из исходных
кодов. Это может понадобиться для установки нестандартных значений
параметров или при использовании не популярной платформы.
Готовые пакеты и исходные коды: http://www.postgresql.org/download/
Кроме того, можно использовать готовые облачные решения, что
позволяет обойтись вообще без установки. Такую возможность дают
многие ведущие зарубежные (Amazon RDS, Google Cloud SQL, Microsoft
Azure) и отечественные (Yandex Cloud, Облако Mail.ru) платформы.
В курсе мы будем использовать виртуальную машину с ОС Xubuntu 22
и сервер PostgreSQL 16, установленный из пакета для этой ОС. В этом
случае сразу настраивается автоматический запуск и останов сервера
PostgreSQL при запуске и останове операционной системы.
Для PostgreSQL существует большое количество расширений, которые
подключают новый функционал к СУБД «на лету», без изменения ядра
системы. В состав дистрибутива входит 50 расширений.
Список доступных расширений и статус их установки можно посмотреть
в представлении pg_available_extensions.
5
Управление сервером
Утилита для управления
Основные задачи
запуск сервера
останов сервера
обновление параметров конфигурации
pg_ctlcluster
pg_ctl
К основным операциям управления сервером относятся начальная
инициализация кластера баз данных, запуск и останов сервера,
обновление конфигурации и некоторые другие. Для выполнения этих
действий предназначена утилита pg_ctl, входящая в состав PostgreSQL.
В пакетном дистрибутиве для Ubuntu доступ к утилите pg_ctl
осуществляется не напрямую, а через специальную обертку
pg_ctlcluster. Справку по использованию pg_ctlcluster можно получить
командой:
$ man pg_ctlcluster
Также можно получить информацию об установленных кластерах и их
текущем состоянии при помощи команд:
$ pg_lsclusters
$ pg_ctlcluster status
Более подробная информация об управлении сервером для
администраторов баз данных:
7
Журнал сообщений
В журнал записываются
служебные сообщения сервера
сообщения пользовательских сеансов
сообщения приложений
Настройка журнала
расположение
формат записей
какие события регистрировать
Информация о ходе работы СУБД записывается в журнал сообщений
сервера. Сюда попадают сведения о запуске и останове сервера,
различная служебная информация, в том числе сообщения
о возникающих проблемах.
Также сюда могут выводиться сообщения о выполняющихся командах
и времени их работы, о возникающих блокировках и тому подобное.
Это позволяет выполнять трассировку пользовательских сеансов.
Разработчики приложений могут формировать и записывать в журнал
сервера свои собственные сообщения.
Настройки PostgreSQL позволяют гибко определять, какие именно
сообщения и в каком формате должны попадать в журнал сервера.
Например, вывод в форматах csv и json удобен для автоматизации
анализа журнала.
9
Параметры конфигурации
Для всего экземпляра
основной файл параметров — postgresql.conf
ALTER SYSTEM postgresql.auto.conf
Для текущего сеанса
SET/RESET
set_config()
Просмотр текущего значения
SHOW
current_setting()
pg_settings
Сервер PostgreSQL настраивается с помощью разнообразных
параметров конфигурации, которые позволяют управлять ресурсами,
настраивать служебные процессы и пользовательские сеансы,
управлять журналом сервера и решать многие другие задачи. Поэтому
нужно знать, как проверить текущие значения параметров и установить
новые.
Настройки всего сервера обычно задаются в конфигурационных
файлах. Основной конфигурационный файл — postgresql.conf, он
редактируется вручную. Второй конфигурационный файл —
postgresql.auto.conf — предназначен для изменения специальной
командой ALTER SYSTEM. Параметры, установленные через ALTER
SYSTEM, имеют приоритет над параметрами в postgresql.conf.
Директивы включения файлов и каталогов include и include_dir
позволяют разделять сложные файлы postgresql.conf на части. Это
может быть удобно, например, при управлении несколькими серверами
с похожими конфигурациями.
Большинство параметров конфигурации допускает изменение значений
в пользовательских сеансах прямо во время выполнения. Помимо
системных, можно определять и пользовательские параметры и
работать с ними с помощью этих же команд и функций.
Варианты установки и управления параметрами:
Текущие значения параметров доступны в представлении pg_settings:
11
Клиент psql
Терминальный клиент для работы с PostgreSQL
Поставляется вместе с СУБД
Используется администраторами и разработчиками
для интерактивной работы и выполнения скриптов
Для работы с СУБД PostgreSQL существуют различные сторонние
инструменты, рассмотрение которых не входит в рамки курса.
В курсе мы будем использовать терминальный клиент psql:
1. psql — это единственный клиент, поставляемый вместе с СУБД.
2. Навыки работы c psql пригодятся разработчикам и администраторам
вне зависимости от того, с каким инструментом они будут работать.
Для интерактивной работы в psql встроена поддержка readline,
программ постраничного просмотра результатов запросов (таких, как
less и pspg), а также подключения внешних редакторов. Возможности
psql позволяют взаимодействовать с ОС, просматривать содержимое
системного каталога, создавать скрипты для автоматизации
повторяющихся задач.
13
Итоги
Установка PostgreSQL из готовых пакетов —
предпочтительный способ установки
Пакетные дистрибутивы учитывают особенности ОС,
которые нужно знать
как запускать и останавливать сервер
расположение файлов конфигурации
расположение журнала сервера
psql — клиент для работы с PostgreSQL
14
Практика
1. Установите для всех сеансов значение параметра work_mem
равным 8 Мбайт.
Обновите конфигурацию и проверьте, что изменения
вступили в силу.
Восстановите значение по умолчанию.
2. Запишите в файл ddl.sql команду CREATE TABLE
на создание любой таблицы.
Запишите в файл populate.sql команды на вставку строк
в эту таблицу.
Выполните оба скрипта и проверьте, что таблица создалась и
в ней появились записи.
3. Найдите в журнале сервера строки за сегодняшний день.
Для запуска psql в окне терминала наберите psql без параметров:
student:~$ psql
Для выполнения заданий каждой темы удобно создавать отдельную
базу данных:
student/student=# CREATE DATABASE tools_overview;
CREATE DATABASE
student/student=# \c tools_overview
You are now connected to database "tools_overview" as user
"student".
student/tools_overview=#
1. Воспользуйтесь командой ALTER SYSTEM.
2. Если результат запроса не помещается в окно терминала, psql
передает его утилите less для постраничной выдачи. Чтобы вернуться в
режим ввода команд, нажмите клавишу q.