Обзор базового инструментария
Установка и управление, 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.
PostgreSQL предоставляет возможности для разделения сложных
файлов postgresql.conf на физически отдельные части, для этого
предусмотрены директивы включения файлов и каталогов
конфигураций include и include_dir. Это может быть удобно, например,
при управлении несколькими серверами с похожими конфигурациями.
Большинство параметров конфигурации допускает изменение значений
в пользовательских сеансах прямо во время выполнения.
Варианты установки и управления параметрами:
Текущие значения доступны для просмотра в представлении
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 Мбайт и разместите его
в каталоге conf.d.
Обновите конфигурацию и проверьте, что изменения
вступили в силу.
2. Запишите в файл ddl.sql команду CREATE TABLE
на создание любой таблицы.
Запишите в файл populate.sql команды на вставку строк
в эту таблицу.
Войдите в psql, выполните оба скрипта и проверьте, что
таблица создалась и в ней появились записи.
3. Найдите в журнале сервера строки за сегодняшний день.
Для выполнения практических заданий нужно войти в операционную
систему под пользователем student (пароль student).
Для запуска 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. Воспользуйтесь любым текстовым редактором. В виртуальной
машине установлены mousepad, gedit, vim, nano.
Обратите внимание: если вы запускаете редактор из графической
среды, он будет запущен под пользователем ОС student. В этом случае
у вас не будет прав на редактирование файла postgresql.conf, который
принадлежит пользователю postgres. Поэтому вам необходимо либо
переключиться в пользователя postgres, либо действовать с правами
суперпользователя ОС:
student:~$ sudo gedit