Базовый инструментарий
Установка и управление, psql
12
Авторские права
© Postgres Professional, 2017–2021
Авторы: Егор Рогов, Павел Лузанов
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Варианты установки PostgreSQL
Управление сервером
Журнал сообщений сервера
Настройка параметров конфигурации
Использование psql
3
Кластер БД и сервер
PostgreSQL
база
данных
кластер
баз
данных
Начнем с основных понятий.
PostgreSQLпрограмма, которая относится к классу систем
управления базами данных.
Когда эта программа выполняется, мы называем ее сервером
PostgreSQL или экземпляром сервера. Пока сервер представляется для
нас «черным ящиком», но постепенно мы познакомимся с тем, как он
устроен.
Данные, которыми управляет PostgreSQL, хранятся в базах данных.
Один экземпляр PostgreSQL одновременно работает с несколькими
базами данных. Этот набор баз данных называется кластером баз
данных. Подробнее мы будем говорить о базах данных в теме
«Организация данных. Логическая структура».
Итак: кластер баз данных — это данные в файлах; сервер или
экземпляр сервера — программа, управляющая кластером баз данных.
4
Установка
Варианты
готовые пакеты (предпочтительный способ)
установка из исходных кодов
без установки — облачные сервисы
Расширения
дополнительный функционал
устанавливаются отдельно
в поставке с сервером — модули и программы (~50 штук)
Предпочтительный вариант установки PostgreSQLиспользование
пакетных менеджероваких, как rpm или dpkg) и готовых пакетов.
В этом случае получается понятная, поддерживаемая и легко
обновляемая установка. Пакеты существуют для большинства
операционных систем.
Другой вариант — самостоятельная сборка PostgreSQL из исходных
кодов. Это может понадобиться для установки нестандартных значений
параметров или при использовании не очень популярной платформы.
Готовые пакеты и исходные коды: http://www.postgresql.org/download/
Кроме того, можно использовать готовые облачные решения, что
позволяет обойтись вообще без установки. Такую возможность дают
все ведущие зарубежные (Amazon RDS, Google Cloud SQL, Microsoft
Azure) и отечественные (Яндекс.Облако, облако Mail.ru) платформы.
В курсе мы будем использовать виртуальную машину с ОС Xubuntu и
сервер PostgreSQL, установленный из пакета для этой ОС.
Для PostgreSQL существует большое количество расширений, которые
подключают новый функционал к СУБД «на лету», без изменения ядра
системы. В состав дистрибутива входит примерно 50 расширений.
Список доступных расширений и статус их установки можно посмотреть
в представлении pg_available_extensions.
5
Управление сервером
Утилита для управления
Основные задачи
запуск сервера
останов сервера
обновление параметров конфигурации
pg_ctlcluster
pg_ctl
К основным операциям управления сервером относятся начальная
инициализация кластера баз данных, запуск и останов сервера,
обновление конфигурации и некоторые другие. Для выполнения этих
действий предназначена утилита pg_ctl, идущая в составе PostgreSQL.
В пакетном дистрибутиве для Ubuntu доступ к утилите pg_ctl
осуществляется не напрямую, а через специальную обертку
pg_ctlcluster. Справку по использованию pg_ctlcluster можно получить
командой:
$ man pg_ctlcluster
Более подробная информация об управлении сервером для
администраторов баз данных:
7
Журнал сообщений
В журнал записываются
служебные сообщения сервера
сообщения пользовательских сеансов
сообщения приложений
Настройка журнала
расположение
формат записей
какие события регистрировать
Информация о ходе работы СУБД записывается в журнал сообщений
сервера. Сюда попадают сведения о запуске и останове сервера,
различные служебные сообщения о возникающих проблемах.
Также сюда могут попадать сообщения о выполняющихся командах
и времени их работы, о возникающих блокировках и тому подобное.
Это позволяет выполнять трассировку пользовательских сеансов.
Разработчики приложений могут записывать в журнал сервера свои
собственные сообщения.
Настройки PostgreSQL позволяют гибко определять, какие именно
сообщения и в каком формате должны попадать в журнал сервера.
Например, вывод в формате csv удобен для автоматизации анализа
журнала.
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.
Большинство параметров конфигурации допускает изменение значений
в пользовательских сеансах прямо во время выполнения.
Варианты установки и управления параметрами:
Текущие значения доступны в представлении pg_settings:
11
Клиент psql
Терминальный клиент для работы с PostgreSQL
Поставляется вместе с СУБД
Используется администраторами и разработчиками
для интерактивной работы и выполнения скриптов
Для работы с СУБД PostgreSQL существуют различные сторонние
инструменты, рассмотрение которых не входит в рамки курса.
В курсе мы будем использовать терминальный клиент psql:
1. psql — это единственный клиент, поставляемый вместе с СУБД.
2. Навыки работы c psql пригодятся разработчикам и администраторам
вне зависимости от того, с каким инструментом они будут работать.
Для интерактивной работы в psql встроена поддержка readline,
программ постраничного просмотра результатов запросов (таких, как
less). Возможности psql позволяют взаимодействовать с ОС,
просматривать содержимое системного каталога, создавать скрипты
для автоматизации повторяющихся задач.
13
Итоги
Установка PostgreSQL из готовых пакетов —
предпочтительный способ установки
Пакетные дистрибутивы учитывают особенности ОС,
которые нужно знать
как запускать и останавливать сервер
расположение файлов конфигурации
расположение журнала сервера
psql — клиент для работы с PostgreSQL
14
Практика
1. Установите в postgresql.conf для параметра work_mem
значение 8 Мбайт.
Обновите конфигурацию и проверьте, что изменения
вступили в силу.
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.