Установка PostgreSQL#
Для установки Postgres имеется два варианта:
установка из исходных кодов;
установка из пакетов
Установка из исходных кодов выполняется чаще всего профессиональными разработчиками, в частности, разработчиками Postgres. Является достаточно трудоемким процессом, подразумевающим полное понимание происходящих процессов, особенностей операционной системы, тонкостей устанавливаемого программного обеспечения.
Администраторы в своей работе редко используют подобную практику, а пользуются уже готовыми решениями, которые предоставляются в виде готовых установочных пакетов, которые скачиваются из репозиториев. Этот вариант является предпочтительным, поскольку он собран из тех же исходных кодов с учетом операционной системы.
Обновить список репозиториев
$ sudo apt-get update
Установить программное обеспечение:
$ sudo apt-get install postgresql16-server
$ sudo apt-get install postgresql16-contrib
Создание кластера#
Прежде чем осуществлять работу с базами данных, необходимо проинициализировать область хранения баз данных на диске. Данное называется хранилище кластером баз данных.
Кластер (от англ. cluster — скопление, кисть, рой) — объединение нескольких однородных элементов, которое может рассматриваться как самостоятельная единица, обладающая определёнными свойствами.
Кластер в компьютерных сетях — это группа компьютеров, серверов или процессоров, объединённых высокоскоростными каналами связи и представляющих с точки зрения пользователя единый аппаратный ресурс.
Кластер баз данных PostgreSQL представляет собой набор баз, управляемых одним экземпляром работающего сервера.
При инициализации в каждом кластере создаются две базы: template1 и template0.
С точки зрения файловой системы кластер баз данных представляет собой один каталог (каталог данных или область данных), в котором будут храниться все данные.
Владелец кластера может определить переменную окружения PGDATA, указывающую на каталог кластера. Эту переменную используют некоторые утилиты сервера, когда им нужно узнать расположение кластера. К таким утилитам относится initdb, а также основная утилита управления сервером pg_ctl.
Какого-либо стандартного пути не существует, но часто данные размещаются в /usr/local/pgsql/data или в /var/lib/pgsql/data.
Для создания кластера предназначена утилита initdb. В процессе работы она создает конфигурационные файлы, необходимые для работы Postgres. Имеет множество ключей, например -k - ключ для включения подсчета контрольных сумм. Данная проверка выполняется при обращении к любой странице данных в кластере и позволяет оперативно обнаружить повреждения в данных.
В целях безопасности каталог, в котором инициализируется кластер, не может принадлежать суперпользователю ОС (root).
Владельцем кластера обычно является пользователь postgres.
Обычно, для создания кластера используется следующая последвательность команд:
mkdir /home/user/pgsql16/data
export PGDATA=/home/user/pgsql16/data
initdb -U postgres -k -D /home/user/pgsql16/data
Создание каталога для кластера, создание системной переменной PGDATA и запуск утилиты initdb от имени пользователя postgres (-U postgres).
В ALT LINUX процесс инициализации кластера автоматизирован скриптом /etc/init.d/postgresq:
/etc/init.d/postgresql initdb
Среди команд данного скрипта присутствуют:
PGDATA = /var/lib/pgsql/data
...
Подробнее: https://postgrespro.ru/docs/postgresql/16/app-initdb
Файлы |
Описание |
|---|---|
PG_VERSION |
Файл, содержащий номер основной версии PostgreSQL |
pg_hba.conf |
Файл, управляющий аутентификацией клиента |
pg_ident.conf |
Файл, управляющий сопоставлением имен пользователей PostgreSQL. |
postgresql.conf |
Файл, используемый для установки параметров конфигурации. |
postgresql.auto.conf |
Файл, используемый для хранения параметров конфигурации, которые устанавливаются при помощи ALTER SYSTEM |
postmaster.opts |
Файл, содержащий параметры командной строки, с которыми сервер был запущен в последний раз |
Подкаталоги |
Описание |
|---|---|
base/ |
Подкаталог, содержащий подкаталоги для каждой базы данных |
global/ |
Подкаталог, содержащий общие таблицы кластера, такие как pg_database |
pg_commit_ts/ |
Подкаталог, содержащий данные о времени фиксации транзакций |
pg_xact |
Подкаталог, содержащий данные о состоянии транзакции. |
pg_dynshmem/ |
Подкаталог, содержащий файлы, используемые подсистемой динамически разделяемой памяти |
pg_logical/ |
Подкаталог, содержащий данные о состоянии для логического декодирования |
pg_multixact/ |
Подкаталог, содержащий данные о состоянии мультитранзакций (используемые для разделяемой блокировки строк) |
pg_notify/ |
Подкаталог, содержащий данные состояния прослушивания и уведомлений (LISTEN/NOTIFY) |
pg_repslot/ |
Подкаталог, содержащий данные слота репликации |
pg_serial/ |
Подкаталог, содержащий информацию о выполненных сериализуемых транзакциях. |
pg_snapshots/ |
Подкаталог, содержащий экспортированные снимки (snapshots) |
pg_stat/ |
Подкаталог, содержащий постоянные файлы для подсистемы статистики. |
pg_stat_tmp/ |
Подкаталог, содержащий временные файлы для подсистемы статистики |
pg_subtrans/ |
Подкаталог, содержащий данные о состоянии подтранзакций |
pg_tblspc/ |
Подкаталог, содержащий символические ссылки на табличные пространства |
pg_twophase/ |
Подкаталог, содержащий файлы состояний для подготовленных транзакций |
pg_wal/ |
Подкаталог, содержащий файлы WAL (журнал предзаписи) |
Управление сервером#
К основным операциям управления сервером относятся:
запуск и останов сервера;
получение текущего статуса сервера;
обновление конфигурации и некоторые другие.
Для выполнения этих действий предназначена утилита pg_ctl, идущая в составе PostgreSQL.
pg_ctl должна выполняться от имени владельца кластера баз данных (postgres).
Запуск сервера#
sudo -u postgres pg_ctl -D /var/lib/pgsql/data start
-D - ключ указания каталога кластера
Для проверки работоспособности сервера можно воспользоваться терминальным клиентом для работы с PostgreSQL psql.
Подробнее: https://postgrespro.ru/docs/postgresql/16/app-psql
Подключение к кластеру:#
psql -U postgres
-U - ключ указания имени пользователя
Ввести запрос:
SELECT now();
символ “;” - обязательно.
Для выхода из psql исползуется сочетание клавиш CTRL+D
Останов сервера#
sudo -u postgres pg_ctl -D /var/lib/pgsql/data stop
Перезапуск сервера#
sudo -u postgres pg_ctl -D /var/lib/pgsql/data restart
Перечитать файлы конфигурации#
sudo -u postgres pg_ctl -D /var/lib/pgsql/data reload
В данном выводе можно видеть PID процесса сервера
Проверка журнала сообщений#
Файл журнала имеет значение по умолчанию postgresql-%Y-%m-%d_%H%M%S.log. Значение трактуется как строка формата в функции strftime, поэтому в ней можно использовать спецификаторы % для включения в имена файлов информации о дате и времени. Максимальное время жизни отдельного журнального файла по умолчанию — 24 часа.
sudo ls -al /var/lib/pgsql/data/log
Проверить последний файл журнала:
sudo tail -10 /var/lib/pgsql/data/log/
Подробнее https://postgrespro.ru/docs/postgresql/16/runtime-config-logging
Самостоятельно:
Расчет контрольных сумм
Смена формата log-файла и перечитать конфигурацию.