SCROLL
Среднее время на прочтение: 4 мин.

Установка PostgreSQL на Debian 12

PostgreSQL — это мощная объектно-реляционная система управления базами данных с открытым исходным кодом. Она использует и расширяет язык SQL, а также имеет множество функций для безопасного хранения и масштабирования самых сложных нагрузок данных.

JUQwJTkyJTIwJUQxJThEJUQxJTgyJUQwJUJFJUQwJUJDJTIwJUQxJTgwJUQxJTgzJUQwJUJBJUQwJUJFJUQwJUIyJUQwJUJFJUQwJUI0JUQxJTgxJUQxJTgyJUQwJUIyJUQwJUI1JTIwJUQxJThGJTIwJUQwJUJGJUQwJUJFJUQwJUJBJUQwJUIwJUQwJUI2JUQxJTgzJTJDJTIwJUQwJUJBJUQwJUIwJUQwJUJBJTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUI4JUQxJTgyJUQxJThDJTIwJUQwJUExJUQwJUEzJUQwJTkxJUQwJTk0JTIwUCVEMCVCRXN0Z3JlU1FMJTIwJUQwJUJEJUQwJUIwJTIwJUQwJUJFJUQwJUJGJUQwJUI1JUQxJTgwJUQwJUIwJUQxJTg2JUQwJUI4JUQwJUJFJUQwJUJEJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQxJTgxJUQwJUI4JUQxJTgxJUQxJTgyJUQwJUI1JUQwJUJDJUQwJUI1JTIwRGViaWFuJTIwMTIuJTIwJUQwJUEzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJBJUQxJTgzJTIwJUQwJUIxJUQxJTgzJUQwJUI0JUQwJUI1JUQwJUJDJTIwJUQwJUIyJUQxJThCJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQxJThGJUQxJTgyJUQxJThDJTIwJUQwJUI4JUQwJUI3JTIwJUQwJUI4JUQxJTgxJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUJEJUQwJUI4JUQwJUJBJUQwJUJFJUQwJUIyJTIwJUQwJUI4JTIwJUQwJUIyJTIwJUQwJUJBJUQwJUIwJUQxJTg3JUQwJUI1JUQxJTgxJUQxJTgyJUQwJUIyJUQwJUI1JTIwJUQwJUJGJUQxJTgwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJTgwJUQwJUIwJTJDJTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTgxJUQwJUJDJUQwJUJFJUQxJTgyJUQxJTgwJUQwJUI4JUQwJUJDJTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJBJUQxJTgzJTIwMTYlMjAlRDAlQjIlRDAlQjUlRDElODAlRDElODElRDAlQjglRDAlQjglMjBQJUQwJUJFc3RncmVTUUwu

Официальная ветка Postgres в Github — https://github.com/postgres/postgres
Официальный FTP — https://ftp.postgresql.org/pub/source

Установка зависимостей

Устанавливаем необходимые пакеты зависимостей:

apt-get install gcc make libreadline-dev zlib1g-dev libicu-dev libbison-dev flex git -y

Загрузка исходного кода

JUQwJTlBJUQwJUJCJUQwJUJFJUQwJUJEJUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQwJUJDJTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQwJUI5JTIwUG9zdGdyZVNRTCUyMCVEMSU4MSUyMEdpdEh1YiUzQQ==

cd /opt
git clone https://github.com/postgres/postgres.git postgres

Переходим в клонированный репозиторий.

cd postgres

Выбор версии

По умолчанию мы находимся в ветке — master, но для того чтобы установить желаемую версию, сперва нужно посмотреть какие доступны ветки версий, а затем уже переключится на нужную.

JUQwJTlGJUQwJUJFJUQxJTgxJUQwJUJDJUQwJUJFJUQxJTgyJUQxJTgwJUQwJUI1JUQxJTgyJUQxJThDJTIwJUQwJUIyJUQxJTgxJUQwJUI1JTIwJUQwJUIyJUQwJUI1JUQxJTgyJUQwJUJBJUQwJUI4JTIwJUQwJUIyJTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQwJUI4JTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUJBJUQwJUJFJUQwJUJDJUQwJUIwJUQwJUJEJUQwJUI0JUQwJUJFJUQwJUI5JTNB

git branch -a | grep -E '^[* ]*(remotes/origin/)?REL' | awk -F/ '{print $NF}'

В случае если необходимо выполнить сборку какой то определенной версии, то сперва можно вывести список доступных релизов:

git tag | grep -E '^REL'

JUQwJTlGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUJBJUQwJUJCJUQxJThFJUQxJTg3JUQwJUIwJUQwJUI1JUQwJUJDJUQxJTgxJUQxJThGJTIwJUQwJUJEJUQwJUIwJTIwJUQwJUJEJUQxJTgzJUQwJUI2JUQwJUJEJUQxJTgzJUQxJThFJTIwJUQwJUIyJUQwJUI1JUQxJTgyJUQwJUJBJUQxJTgzJTIwJUQwJUI4JUQwJUJCJUQwJUI4JTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQwJUJBJUQxJTgwJUQwJUI1JUQxJTgyJUQwJUJEJUQxJThCJUQwJUI5JTIwJUQxJTgwJUQwJUI1JUQwJUJCJUQwJUI4JUQwJUI3JTIwKCVEMCVCMiUyMCVEMCVCQyVEMCVCRSVEMCVCNSVEMCVCQyUyMCVEMSU4MSVEMCVCQiVEMSU4MyVEMSU4NyVEMCVCMCVEMCVCNSUyMCVEMSU4RiUyMCVEMCVCMSVEMSU4MyVEMCVCNCVEMSU4MyUyMCVEMSU4MyVEMSU4MSVEMSU4MiVEMCVCMCVEMCVCRCVEMCVCMCVEMCVCMiVEMCVCQiVEMCVCOCVEMCVCMiVEMCVCMCVEMSU4MiVEMSU4QyUyMDE2LSVEMSU4MiVEMSU4QiVEMCVCOSUyMCVEMSU4MSVEMSU4MiVEMCVCMCVEMCVCMSVEMCVCOCVEMCVCQiVEMSU4QyVEMCVCRCVEMSU4QiVEMCVCOSUyMCVEMSU4MCVEMCVCNSVEMCVCQiVEMCVCOCVEMCVCNyklM0E=

git checkout REL_16_STABLE

Переменные окружения

JUQwJTk0JUQwJUJFJUQwJUIxJUQwJUIwJUQwJUIyJUQwJUI4JUQwJUJDJTIwJUQwJUJGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUJDJUQwJUI1JUQwJUJEJUQwJUJEJUQxJTgzJUQxJThFJTIwJUQwJUJFJUQwJUJBJUQxJTgwJUQxJTgzJUQwJUI2JUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTJDJTIwJUQxJTgxJTIwJUQxJTgzJUQwJUJBJUQwJUIwJUQwJUI3JUQwJUIwJUQwJUJEJUQwJUI4JUQwJUI1JUQwJUJDJTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUIwJUQwJUIyJUQwJUJCJUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJUQwJUJFJUQwJUI5JTIwJUQwJUIyJUQwJUI1JUQxJTgwJUQxJTgxJUQwJUI4JUQwJUI4JTIwUG9zdGdyZVNRTCUyQyUyMCVEMCVCNCVEMCVCQiVEMSU4RiUyMCVEMSU4MiVEMCVCRSVEMCVCMyVEMCVCRSUyMCVEMSU4NyVEMSU4MiVEMCVCRSVEMCVCMSVEMSU4QiUyMCVEMCVCMSVEMSU4QiVEMCVCQiVEMCVCRSUyMCVEMSU4MyVEMCVCNCVEMCVCRSVEMCVCMSVEMCVCRCVEMCVCNSVEMCVCNSUyMCVEMCVCMiVEMSU4QiVEMCVCRiVEMCVCRSVEMCVCQiVEMCVCRCVEMSU4RiVEMSU4MiVEMSU4QyUyMCVEMCVCRCVEMCVCMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCOSVEMCVCQSVEMSU4MyUyMCVEMCVCRiVEMCVCRSVEMSU4MSVEMCVCQiVEMCVCNSUyMCVEMSU4MyVEMSU4MSVEMSU4MiVEMCVCMCVEMCVCRCVEMCVCRSVEMCVCMiVEMCVCQSVEMCVCOCUyMCglRDAlQjIlMjAlRDAlQkMlRDAlQkUlRDAlQjUlRDAlQkMlMjAlRDElODElRDAlQkIlRDElODMlRDElODclRDAlQjAlRDAlQjUlMjAlRDElOEYlMjAlRDElODMlRDAlQkElRDAlQjAlRDAlQjclRDElOEIlRDAlQjIlRDAlQjAlRDElOEUlMjAxNiklM0E=

ZXhwb3J0JTIwUFNRTF9WRVJTSU9OJTNEMTY=

Сборка

JUQwJTkyJUQxJThCJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQxJThGJUQwJUI1JUQwJUJDJTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI5JUQwJUJBJUQxJTgzJTJDJTIwJUQwJUJBJUQwJUJFJUQxJTgyJUQwJUJFJUQxJTgwJUQwJUIwJUQxJThGJTIwJUQwJUJGJUQxJTgwJUQwJUJFJUQwJUIyJUQwJUI1JUQxJTgwJUQwJUI4JUQxJTgyJTIwJUQwJUIyJUQwJUIwJUQxJTg4JUQxJTgzJTIwJUQxJTgxJUQwJUI4JUQxJTgxJUQxJTgyJUQwJUI1JUQwJUJDJUQxJTgzJTIwJUQwJUJEJUQwJUIwJTIwJUQwJUJEJUQwJUIwJUQwJUJCJUQwJUI4JUQxJTg3JUQwJUI4JUQwJUI1JTIwJUQwJUI3JUQwJUIwJUQwJUIyJUQwJUI4JUQxJTgxJUQwJUI4JUQwJUJDJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI1JUQwJUI5JTIwJUQwJUI4JTIwJUQxJTgxJUQwJUJFJUQwJUJFJUQxJTgyJUQwJUIyJUQwJUI1JUQxJTgyJUQxJTgxJUQxJTgyJUQwJUIyJUQxJTgzJUQxJThFJUQxJTg5JUQwJUI4JUQwJUJDJTIwJUQwJUJFJUQwJUIxJUQxJTgwJUQwJUIwJUQwJUI3JUQwJUJFJUQwJUJDJTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI4JUQxJTgyJTIwJUQxJTgxJUQwJUIxJUQwJUJFJUQxJTgwJUQwJUJBJUQxJTgz

./configure \
JTIwJTIwJTIwJTIwLS1wcmVmaXglM0QlMkZ1c3IlMjAlNUM=
JTIwJTIwJTIwJTIwLS1kYXRhZGlyJTNEJTJGdmFyJTJGbGliJTJGcG9zdGdyZXNxbCUyRiUyNFBTUUxfVkVSU0lPTiUyRmRhdGElMjAlNUM=
    --bindir=/usr/lib/postgresql/$PSQL_VERSION/bin \
    --libdir=/usr/lib/postgresql/$PSQL_VERSION/lib

JUQwJTlGJUQwJUJFJUQxJThGJUQxJTgxJUQwJUJEJUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTNB

  • --datadir=/var/lib/postgresql/../data → файлы базы будут храниться здесь
  • --bindir=/usr/lib/postgresql/../bin → бинарники (postgres, pg_ctl …) здесь
  • --libdir=/usr/lib/postgresql/../lib → библиотеки здесь

Компиляция и установка

Собираем с использованием всех ядер и после устанавливаем:

make -j$(nproc)
make install

Создание пользователя postgres

Добавляем системного пользователя postgres — все операции с СУБД будут выполняться под этой учетной записью. Устанавливаем для этой учетной записи пустой пароль, чтобы заблокировать вход для обычных пользователей, но с возможностью входа через root или аккаунты с sudo правами.

useradd postgres -d /var/lib/postgresql -s /bin/bash -c "PostgreSQL administrator"

Назначаем соответствующие права доступа на домашний каталог пользователя postgres, где так же будет располагаться каталог основного кластера баз данных:

Y2hvd24lMjAtUiUyMHBvc3RncmVzJTNBcG9zdGdyZXMlMjAlMkZ2YXIlMkZsaWIlMkZwb3N0Z3Jlc3FsJTJG
chmod 700 /var/lib/postgresql/$PSQL_VERSION/data

Настраиваем переменные окружения для PostgreSQL:

c3VkbyUyMHNoJTIwLWMlMjAlMjJlY2hvJTIwJ2V4cG9ydCUyMFBHREFUQSUzRCUyRnZhciUyRmxpYiUyRnBvc3RncmVzcWwlMkYlMjRQU1FMX1ZFUlNJT04lMkZtYWluJTJGJyUyMCUzRSUyMCUyRmV0YyUyRnByb2ZpbGUuZCUyRnBvc3RncmVzLnNoJTIy
c3VkbyUyMHNoJTIwLWMlMjAlMjJlY2hvJTIwJ1BBVEglM0QlMkZ1c3IlMkZsaWIlMkZwb3N0Z3Jlc3FsJTJGJTI0UFNRTF9WRVJTSU9OJTJGYmluJTJGJTNBJTI0UEFUSCclMjAlM0UlM0UlMjAlMkZldGMlMkZwcm9maWxlLmQlMkZwb3N0Z3Jlcy5zaCUyMg==
c291cmNlJTIwJTJGZXRjJTJGcHJvZmlsZS5kJTJGcG9zdGdyZXMuc2g=
Файл /etc/profile.d/postgres.sh автоматически загружается при входе пользователей, обеспечивая глобальную доступность настроек.

Создание кластера

Кластером баз данных в PostgreSQL считается совокупность баз данных, которые физически расположены в каком-нибудь каталоге.

Кодировка

При инициализации кластера нужно учитывать, что кодировка кластера задается при инициализации и не может быть изменена после создания кластера. По умолчанию при инициализации кластера используется локаль используемая в системе по умолчанию.

Так же хочу заметить что если вам нужно создать базу данных с кодировкой отличной от той что задана для кластера, то это возможно сделать при создании базы данных с указанием нужной кодировки (LC_COLLATE, LC_CTYPE).

JUQwJTlGJUQwJUJFJUQxJTgxJUQwJUJDJUQwJUJFJUQxJTgyJUQxJTgwJUQwJUI1JUQxJTgyJUQxJThDJTIwJUQxJTgyJUQwJUI1JUQwJUJBJUQxJTgzJUQxJTg5JUQxJTgzJUQxJThFJTIwJUQwJUJCJUQwJUJFJUQwJUJBJUQwJUIwJUQwJUJCJUQxJThDJTIwJUQwJUIyJTIwJUQxJTgxJUQwJUI4JUQxJTgxJUQxJTgyJUQwJUI1JUQwJUJDJUQwJUI1JTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUJBJUQwJUJFJUQwJUJDJUQwJUIwJUQwJUJEJUQwJUI0JUQwJUJFJUQwJUI5JTNB

bG9jYWxlJTIwJTdDJTIwZ3JlcCUyMC1FJTIwJ0xDX0NUWVBFJTdDTENfQ09MTEFURSc=

LC_CTYPE="en_US.UTF-8"
TENfQ09MTEFURSUzRCUyMmVuX1VTLlVURi04JTIy

JUQwJTlBJTIwJUQwJUJGJUQxJTgwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJTgwJUQxJTgzJTIwJUQwJUI1JUQxJTgxJUQwJUJCJUQwJUI4JTIwJUQxJTgzJTIwJUQwJUIyJUQwJUIwJUQxJTgxJTIwJUQwJUJCJUQwJUJFJUQwJUJBJUQwJUIwJUQwJUJCJUQxJThDJTIwJUQwJUJGJUQwJUJFJTIwJUQxJTgzJUQwJUJDJUQwJUJFJUQwJUJCJUQxJTg3JUQwJUIwJUQwJUJEJUQwJUI4JUQxJThFJTIwZW5fVVMuVVRGLTglMkMlMjAlRDAlQjAlMjAlRDAlQjIlRDAlQjAlRDAlQkMlMjAlRDAlQkQlRDElODMlRDAlQjYlRDAlQkQlRDAlQkUlMjAlRDAlQjglRDAlQkQlRDAlQjglRDElODYlRDAlQjglRDAlQjAlRDAlQkIlRDAlQjglRDAlQjclRDAlQjglRDElODAlRDAlQkUlRDAlQjIlRDAlQjAlRDElODIlRDElOEMlMjAlRDAlQkElRDAlQkIlRDAlQjAlRDElODElRDElODIlRDAlQjUlRDElODAlMjAlRDElODElMjAlRDAlQkIlRDAlQkUlRDAlQkElRDAlQjAlRDAlQkIlRDElOEMlRDElOEUlMjBydV9SVS5VVEYtOCUyQyUyMCVEMSU4MiVEMCVCRSUyMCVEMSU4MSVEMCVCRiVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCMCUyMCVEMCVCNSVEMCVCNSUyMCVEMCVCRCVEMSU4MyVEMCVCNiVEMCVCRCVEMCVCRSUyMCVEMCVCNCVEMCVCRSVEMCVCMSVEMCVCMCVEMCVCMiVEMCVCOCVEMSU4MiVEMSU4QyUyMCVEMCVCMiUyMCVEMSU4MSVEMCVCOCVEMSU4MSVEMSU4MiVEMCVCNSVEMCVCQyVEMSU4MyUyMCVEMCVCQSVEMCVCRSVEMCVCQyVEMCVCMCVEMCVCRCVEMCVCNCVEMCVCRSVEMCVCOSUyMCVFMiU4MCU5NCUyMGRwa2ctcmVjb25maWd1cmUlMjBsb2NhbGVzJTIwJUQwJUI4JTIwJUQwJUI3JUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJDJTIwJUQxJTgzJUQwJUI2JUQwJUI1JTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUI1JUQwJUI1JTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQxJThDJTIwJUQwJUJGJUQxJTgwJUQwJUI4JTIwJUQwJUI4JUQwJUJEJUQwJUI4JUQxJTg2JUQwJUI4JUQwJUIwJUQwJUJCJUQwJUI4JUQwJUI3JUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JTIwJUQwJUJBJUQwJUJCJUQwJUIwJUQxJTgxJUQxJTgyJUQwJUI1JUQxJTgwJUQwJUIwLg==

Инициализация кластера

JUQwJTk4JUQwJUJEJUQwJUI4JUQxJTg2JUQwJUI4JUQwJUIwJUQwJUJCJUQwJUI4JUQwJUI3JUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQwJUJDJTIwJUQwJUJBJUQwJUJCJUQwJUIwJUQxJTgxJUQxJTgyJUQwJUI1JUQxJTgwJTIwJUQwJUJFJUQxJTgyJTIwJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJCJUQxJThGJUMyJUEwcG9zdGdyZXMlM0E=

c3UlMjAtJTIwcG9zdGdyZXMlMjAtYyUyMCUyMmluaXRkYiUyMg==

JUQwJTk0JUQwJUJCJUQxJThGJTIwJUQwJUI4JUQwJUJEJUQwJUI4JUQxJTg2JUQwJUI4JUQwJUIwJUQwJUJCJUQwJUI4JUQwJUI3JUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JTIwJUQwJUJBJUQwJUJCJUQwJUIwJUQxJTgxJUQxJTgyJUQwJUI1JUQxJTgwJUQwJUIwJTIwJUQxJTgxJTIwJUQxJTgzJUQwJUJBJUQwJUIwJUQwJUI3JUQwJUIwJUQwJUJEJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQwJUJCJUQwJUJFJUQwJUJBJUQwJUIwJUQwJUJCJUQxJThDJUQxJThFJTJDJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQxJTgzJUQwJUI1JUQwJUJDJTIwJUQwJUJBJUQwJUJFJUQwJUJDJUQwJUIwJUQwJUJEJUQwJUI0JUQxJTgzJTNB

c3UlMjAtJTIwcG9zdGdyZXMlMjAtYyUyMCUyMmluaXRkYiUyMC0tbG9jYWxlJTNEcnVfUlUuVVRGLTglMjAtRSUyMFVURjglMjI=
Можно так же использовать ключи -U и -W чтобы задать суперпользователя и пароль сразу при инициализации базы данных. По умолчанию используется имя пользователя ОС, под которым выполняется команда.

Успешный вывод:

The files belonging to this database system will be owned by user "postgres".
VGhpcyUyMHVzZXIlMjBtdXN0JTIwYWxzbyUyMG93biUyMHRoZSUyMHNlcnZlciUyMHByb2Nlc3Mu

The database cluster will be initialized with locale "ru_RU.UTF-8".
VGhlJTIwZGVmYXVsdCUyMGRhdGFiYXNlJTIwZW5jb2RpbmclMjBoYXMlMjBhY2NvcmRpbmdseSUyMGJlZW4lMjBzZXQlMjB0byUyMCUyMlVURjglMjIu
The default text search configuration will be set to "russian".

RGF0YSUyMHBhZ2UlMjBjaGVja3N1bXMlMjBhcmUlMjBkaXNhYmxlZC4=

Y3JlYXRpbmclMjBkaXJlY3RvcnklMjAlMkZ2YXIlMkZsaWIlMkZwb3N0Z3Jlc3FsJTJGMTYlMkZtYWluJTIwLi4uJTIwb2s=
Y3JlYXRpbmclMjBzdWJkaXJlY3RvcmllcyUyMC4uLiUyMG9r
c2VsZWN0aW5nJTIwZHluYW1pYyUyMHNoYXJlZCUyMG1lbW9yeSUyMGltcGxlbWVudGF0aW9uJTIwLi4uJTIwcG9zaXg=
c2VsZWN0aW5nJTIwZGVmYXVsdCUyMG1heF9jb25uZWN0aW9ucyUyMC4uLiUyMDEwMA==
c2VsZWN0aW5nJTIwZGVmYXVsdCUyMHNoYXJlZF9idWZmZXJzJTIwLi4uJTIwMTI4TUI=
selecting default time zone ... Europe/Moscow
Y3JlYXRpbmclMjBjb25maWd1cmF0aW9uJTIwZmlsZXMlMjAuLi4lMjBvaw==
cnVubmluZyUyMGJvb3RzdHJhcCUyMHNjcmlwdCUyMC4uLiUyMG9r
cGVyZm9ybWluZyUyMHBvc3QtYm9vdHN0cmFwJTIwaW5pdGlhbGl6YXRpb24lMjAuLi4lMjBvaw==
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
aW5pdGRiJTNBJTIwaGludCUzQSUyMFlvdSUyMGNhbiUyMGNoYW5nZSUyMHRoaXMlMjBieSUyMGVkaXRpbmclMjBwZ19oYmEuY29uZiUyMG9yJTIwdXNpbmclMjB0aGUlMjBvcHRpb24lMjAtQSUyQyUyMG9yJTIwLS1hdXRoLWxvY2FsJTIwYW5kJTIwLS1hdXRoLWhvc3QlMkMlMjB0aGUlMjBuZXh0JTIwdGltZSUyMHlvdSUyMHJ1biUyMGluaXRkYi4=

U3VjY2Vzcy4lMjBZb3UlMjBjYW4lMjBub3clMjBzdGFydCUyMHRoZSUyMGRhdGFiYXNlJTIwc2VydmVyJTIwdXNpbmclM0E=

    pg_ctl -D /var/lib/postgresql/16/main/ -l logfile start

Дополнительный кластер

Сервер PostgreSQL может обслуживать несколько кластеров, для инициализации дополнительного кластера, инициализация выполняется с ключом -D и указанием каталога данных:

c3UlMjAtJTIwcG9zdGdyZXMlMjAtYyUyMCUyMmluaXRkYiUyMC1EJTIwJTJGdmFyJTJGbGliJTJGcG9zdGdyZXNxbCUyRiUyNFBTUUxfVkVSU0lPTiUyRmFub3RoZXJfY2x1c3RlciUyMg==

JUQwJTkzJUQwJUI0JUQwJUI1JTNB

  • /var/lib/postgresql/../another_cluster — каталог данных (может быть любым).

JUQwJUEyJUQwJUIwJUQwJUJBJTIwJUQwJUI2JUQwJUI1JTIwJUQwJUIyJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQwJUI1JTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg0JUQwJUI4JUQwJUIzJUQxJTgzJUQxJTgwJUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JTIwJUQwJUI0JUQwJUJFJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQwJUI4JUQxJTgyJUQwJUI1JUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUJBJUQwJUJCJUQwJUIwJUQxJTgxJUQxJTgyJUQwJUI1JUQxJTgwJUQwJUIwJTIwJTJGdmFyJTJGbGliJTJGcG9zdGdyZXNxbCUyRi4uJTJGYW5vdGhlcl9jbHVzdGVyJTJGcG9zdGdyZXNxbC5jb25mJTIwJUQwJUJEJUQwJUI1JUQwJUJFJUQwJUIxJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUI4JUQwJUJDJUQwJUJFJTIwJUQxJTgzJUQwJUJBJUQwJUIwJUQwJUI3JUQwJUIwJUQxJTgyJUQxJThDJTIwJUQwJUJEJUQwJUJFJUQwJUJDJUQwJUI1JUQxJTgwJTIwJUQwJUJGJUQwJUJFJUQxJTgwJUQxJTgyJUQwJUIwJTIwJUQwJUJFJUQxJTgyJUQwJUJCJUQwJUI4JUQxJTg3JUQwJUJEJUQxJThCJUQwJUI5JTIwJUQwJUJFJUQxJTgyJTIwJUQxJTgzJUQwJUI2JUQwJUI1JTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQxJTgzJUQwJUI1JUQwJUJDJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUJBJUQwJUJCJUQwJUIwJUQxJTgxJUQxJTgyJUQwJUI1JUQxJTgwJUQwJUIwLg==

Создание службы

JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQxJTgxJUQwJUJCJUQxJTgzJUQwJUI2JUQwJUIxJUQxJThCJUMyJUEwc3lzdGVtZCVDMiVBMCVEMCVCNCVEMCVCQiVEMSU4RiVDMiVBMFBvc3RncmVTUUwlM0E=

Y2F0JTIwJTNDJTNDJTIwRU9GJTIwJTNFJTIwJTJGZXRjJTJGc3lzdGVtZCUyRnN5c3RlbSUyRnBvc3RncmVzcWwuc2VydmljZQ==
[Unit]
Description=PostgreSQL database server
RG9jdW1lbnRhdGlvbiUzRG1hbiUzQXBvc3RncmVzKDEp
After=network-online.target
V2FudHMlM0RuZXR3b3JrLW9ubGluZS50YXJnZXQ=

JTVCU2VydmljZSU1RA==
VHlwZSUzRGZvcmtpbmc=
User=postgres
ExecStart=/usr/lib/postgresql/$PSQL_VERSION/bin/pg_ctl -D /var/lib/postgresql/$PSQL_VERSION/main/ -l /var/lib/postgresql/$PSQL_VERSION/main/postgres-main.log start
ExecReload=/bin/kill -HUP $MAINPID
S2lsbE1vZGUlM0RtaXhlZA==
KillSignal=SIGINT

[Install]
V2FudGVkQnklM0RtdWx0aS11c2VyLnRhcmdldA==
RU9G

JUQwJTlGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUI3JUQwJUIwJUQwJUIzJUQxJTgwJUQxJTgzJUQwJUI2JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg0JUQwJUI4JUQwJUIzJUQxJTgzJUQxJTgwJUQwJUIwJUQxJTg2JUQwJUI4JUQxJThFJTIwc3lzdGVtZCUyQyUyMCVEMCVCMiVEMCVCQSVEMCVCQiVEMSU4RSVEMSU4NyVEMCVCMCVEMCVCNSVEMCVCQyUyMCVEMCVCMCVEMCVCMiVEMSU4MiVEMCVCRSVEMCVCNyVEMCVCMCVEMCVCRiVEMSU4MyVEMSU4MSVEMCVCQSUyMCVEMCVCOCUyMCVEMCVCNyVEMCVCMCVEMCVCRiVEMSU4MyVEMSU4MSVEMCVCQSVEMCVCMCVEMCVCNSVEMCVCQyUyMCVEMSU4MSVEMCVCQiVEMSU4MyVEMCVCNiVEMCVCMSVEMSU4MyUzQQ==

systemctl daemon-reload

systemctl enable postgresql
c3lzdGVtY3RsJTIwc3RhcnQlMjBwb3N0Z3Jlc3Fs

Установка расширений

JUQwJUEwJUQwJUIwJUQxJTgxJUQxJTg4JUQwJUI4JUQxJTgwJUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTIwJUQwJUIyJTIwUG9zdGdyZVNRTCUyMCVFMiU4MCU5NCUyMCVEMSU4RCVEMSU4MiVEMCVCRSUyMCVEMCVCQyVEMCVCRSVEMCVCNCVEMSU4MyVEMCVCQiVEMCVCOCUyQyUyMCVEMCVCNCVEMCVCRSVEMCVCMSVEMCVCMCVEMCVCMiVEMCVCQiVEMSU4RiVEMSU4RSVEMSU4OSVEMCVCOCVEMCVCNSUyMCVEMCVCRCVEMCVCRSVEMCVCMiVEMSU4MyVEMSU4RSUyMCVEMSU4NCVEMSU4MyVEMCVCRCVEMCVCQSVEMSU4NiVEMCVCOCVEMCVCRSVEMCVCRCVEMCVCMCVEMCVCQiVEMSU4QyVEMCVCRCVEMCVCRSVEMSU4MSVEMSU4MiVEMSU4QyUyMCVEMCVCQSUyMCVEMSU4MSVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCNSVEMSU4MCVEMSU4MyUyMCVEMCVCMSVEMCVCMCVEMCVCNyUyMCVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCRCVEMSU4QiVEMSU4NSUyQyUyMCVEMSU4MiVEMCVCMCVEMCVCQSVEMCVCOCVEMCVCNSUyMCVEMCVCQSVEMCVCMCVEMCVCQSUyMCVEMCVCNCVEMCVCRSVEMCVCRiVEMCVCRSVEMCVCQiVEMCVCRCVEMCVCOCVEMSU4MiVEMCVCNSVEMCVCQiVEMSU4QyVEMCVCRCVEMSU4QiVEMCVCNSUyMCVEMSU4MiVEMCVCOCVEMCVCRiVEMSU4QiUyMCVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCRCVEMSU4QiVEMSU4NSUyQyUyMCVEMSU4NCVEMSU4MyVEMCVCRCVEMCVCQSVEMSU4NiVEMCVCOCVEMCVCOCUyMCVEMCVCOCUyMCVEMCVCRSVEMCVCRiVEMCVCNSVEMSU4MCVEMCVCMCVEMSU4MiVEMCVCRSVEMSU4MCVEMSU4Qi4lMjAlRDAlOUQlRDAlQjUlRDAlQkElRDAlQkUlRDElODIlRDAlQkUlRDElODAlRDElOEIlRDAlQjUlMjAlRDElODAlRDAlQjAlRDElODElRDElODglRDAlQjglRDElODAlRDAlQjUlRDAlQkQlRDAlQjglRDElOEYlMjAlRDAlQjIlRDElODUlRDAlQkUlRDAlQjQlRDElOEYlRDElODIlMjAlRDAlQjIlMjAlRDElODElRDElODIlRDAlQjAlRDAlQkQlRDAlQjQlRDAlQjAlRDElODAlRDElODIlRDAlQkQlRDElODMlRDElOEUlMjAlRDAlQkYlRDAlQkUlRDElODElRDElODIlRDAlQjAlRDAlQjIlRDAlQkElRDElODMlMjBQb3N0Z3JlU1FMJTIwJUQwJUI4JTIwJUQwJUJDJUQwJUJFJUQwJUIzJUQxJTgzJUQxJTgyJTIwJUQwJUIxJUQxJThCJUQxJTgyJUQxJThDJTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJCJUQwJUI1JUQwJUJEJUQxJThCJTIwJUQwJUI4JUQwJUI3JTIwJUQwJUJBJUQwJUIwJUQxJTgyJUQwJUIwJUQwJUJCJUQwJUJFJUQwJUIzJUQwJUIwJTIwY29udHJpYiUyMCVEMCVCRCVEMCVCMCVEMSU4NSVEMCVCRSVEMCVCNCVEMSU4RiVEMSU4OSVEMCVCOCVEMCVCOSVEMSU4MSVEMSU4RiUyMCVEMCVCMiUyMCVEMCVCQSVEMCVCMCVEMSU4MiVEMCVCMCVEMCVCQiVEMCVCRSVEMCVCMyVEMCVCNSUyMCVEMSU4MSUyMCVEMCVCOCVEMSU4MSVEMSU4NSVEMCVCRSVEMCVCNCVEMCVCRCVEMCVCOCVEMCVCQSVEMCVCMCVEMCVCQyVEMCVCOC4=

Например, установим расширение tablefunc, которое добавляет функции для работы с табличными данными.

Y2QlMjBjb250cmliJTJGdGFibGVmdW5jJTJG

Выполним сборку и установку:

make
bWFrZSUyMGluc3RhbGw=

Активируем расширение в базе данных:

su - postgres -c "psql -d postgres -c \"CREATE EXTENSION tablefunc;\""

Проверим, что расширение установилось:

su - postgres -c "psql -d postgres -c \"SELECT name, comment FROM pg_available_extensions;\""

JUQwJTkyJUQxJThCJUQwJUIyJUQwJUJFJUQwJUI0JTIwJUQwJUI0JUQwJUJFJUQwJUJCJUQwJUI2JUQwJUI1JUQwJUJEJTIwJUQxJTgxJUQwJUJFJUQwJUI0JUQwJUI1JUQxJTgwJUQwJUI2JUQwJUIwJUQxJTgyJUQxJThDJTIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUJBJUQxJTgzJTNB

JTIwJTIwJTIwbmFtZSUyMCUyMCUyMCUyMCU3QyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbW1lbnQ=
LS0tLS0tLS0tLS0lMkItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0=
 tablefunc | functions that manipulate whole tables, including crosstab
JTIwcGxwZ3NxbCUyMCUyMCUyMCU3QyUyMFBMJTJGcGdTUUwlMjBwcm9jZWR1cmFsJTIwbGFuZ3VhZ2U=
KDIlMjByb3dzKQ==
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.