Перейти к основному содержимому

06 Установка и настройка БД

Наше ПО совместимо с любыми деривативами PostgreSQL, но все же, для его функционирования, необходим набор расширений БД. Список расширений не большой, приведен ниже:

  • PLV8 - это расширение для PostgreSQL, обеспечивающее использование Javascript-языка в процедурах и функциях БД, популярный opensource-проект;
  • KeyDB-FDW - opensource расширение для работы с On-memory БД на базе безопасной и современной альтернативы Redis - сервера KeyDB;
  • RedisPubSub - opensource расширение для БД, позволяющее публиковать сообщения в каналах сервера KeyDB;
  • PostgreSQL HTTP Client - популярное расширение БД PostgreSQL, реализующее HTTP-клиента в БД.

На текущий момент мы поставляем все эти расширения для следующих вариантов PostgreSQL DB:

  • PostgreSQL 11, 13, 15. Для PostgreSQL 11 наступил EOL;
  • PostgresPro 13, для Стандартной и Расширенной редакции;
  • Jatoba 4 (за исключением jatoba4-http, стандартного расширения входящего в поставку этой БД)

Список совместимых движков БД не велик, но обоснован следующими фактами:

  • PostgreSQL - является свободно-распространяемой opensource Базой данных;
  • PostgresPro - Российское ПО, обладающее сертификатом ФСТЭК. Входит в Единый реестр Минкомсвязи. Совместим с СКЗИ «Крипто БД 2.0»;
  • Jatoba - Российское ПО, обладающее сертификатом ФСТЭК. Входит в Единый реестр Минкомсвязи.
  • все расширения проходят функциональное и нагрузочное тестирование. Индивидуально и в составе Luxms BI.

Для установки отказоустойчивого кластера PostgreSQL, дополнительно ознакомтесь с Приложением #1

Настройки файловой системы

При использовании нестандартного расположения файлов БД, например в соответствии с внутренними нормативными документами, или при монтировании отдельной файловой системы необходимо откорректировать настройки прав доступа. Например:

sudo chown -R postgres.postgres /data/pgdata

Нестандартное расположение файлов БД также потребует дополнительной настройки профиля (переменных окружения) владельца процессов и файлов БД.

осторожно

Обращаем внимание, если каталог базы данных отличается от дефолтного, необходимо переопределить переменную окружения PGDATA

Изменения фиксируются в следующих местах:

  • профайле сервисной учетной записи postgres
  • файле переменных среды сервиса или в самого Systemd service unit,

Установка PostgreSQL

Подключение необходимых репозиториев для установки PostgreSQL зависит от ОС хоста, на котором производится установка.

осторожно

Здесь и далее указываются URL официальных репозиториев для обозначения целевого контента, при наличии других публичных или локальных зеркал репозиториев, желательно использовать локальные зеркала.

Использование зеркалированных репозиториев потребует откорректировать параметры команд, описанных ниже.

CentOS 7

Необходимо подключить дополнительные публичные репозитории или имеющиеся у клиента зеркала этих репозиториев:

  1. Установка дополнительных репозиториев:
sudo yum -y install epel-release \
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Опционально, можно отключить не планируемые к использованию версии PostgreSQL, оставив доступными пакеты только 13 версии:

sudo yum-config-manager --disable pgdg11 pgdg12 pgdg14 pgdg15
  1. Установка пакетов сервера postgresql-13:
sudo yum -y install postgresql13 \
postgresql13-server \
postgresql13-contrib
  1. Настройка профиля сервисной учетной записи

Мы рекомендуем создать файл профиля для сервисной учетной записи postgres:

echo -e '\nPATH=/usr/pgsql-13/bin:$PATH\nexport PATH\n' \
| sudo /usr/bin/tee -a /var/lib/pgsql/.bash_profile
  1. Инициализация PostgreSQL:
sudo -iu postgres initdb

Если предполагается отличный от стандартного путь до файлов БД, укажите его для параметра, например:
-D /data/pgdata.

  1. Запуск postgresql сервиса:
sudo systemctl enable --now postgresql-13

После завершения установки, не забудьте выполнить проверку в соостветствии с Проверка после установки

RedOS 7.3

Достаточно подключения стандартных репозиториев производителя ОС:

  1. Установка пакетов сервера postgresql-13:
sudo dnf -y install postgresql13 \
postgresql13-server \
postgresql13-contrib
  1. Настройка профиля сервисной учетной записи

Мы рекомендуем создать файл профиля для сервисной учетной записи postgres:

echo -e '\nPATH=/usr/pgsql-13/bin:$PATH\nexport PATH\n' \
| sudo /usr/bin/tee -a /var/lib/pgsql/.bash_profile
  1. Инициализация PostgreSQL:
sudo -iu postgres initdb

Если предполагается отличный от стандартного путь до файлов БД, укажите его для параметра, например:
-D /data/pgdata.

  1. Запуск postgresql сервиса:
sudo systemctl enable --now postgresql-13 

После завершения установки, не забудьте выполнить проверку в соостветствии с Проверка после установки

RedOS 8.0

Достаточно подключения стандартных репозиториев производителя ОС:

  1. Установка пакетов сервера postgresql-15:
sudo dnf -y install postgresql15 \
postgresql15-server \
postgresql15-contrib
  1. Настройка профиля сервисной учетной записи

Мы рекомендуем создать файл профиля для сервисной учетной записи postgres:

echo -e '\nPATH=/usr/pgsql-15/bin:$PATH\nexport PATH\n' \
| sudo /usr/bin/tee -a /var/lib/pgsql/.bash_profile
  1. Инициализация PostgreSQL:
sudo -iu postgres initdb

Если предполагается отличный от стандартного путь до файлов БД, укажите его для параметра, например:
-D /data/pgdata.

  1. Запуск postgresql сервиса:
sudo systemctl enable --now postgresql-15 

После завершения установки, не забудьте выполнить проверку в соостветствии с Проверка после установки

Astra Linux Special Edition 1.7

Этот вариант установки не полностью соответствует рекомендациям ГК Астра и тем более не будет легитимным для повышенных уровней безопасности ОС, поскольку требует включения пакетов стороннего репозитория с более высоким приоритетом, чем пакеты ОС.
Но на “базовом”(Орёл) уровне безопасности это допустимо.

Необходимо подключение публичного репозитория:

  • [PostgreSQL Apt Repository] deb http://apt.postgresql.org/pub/repos/apt buster-pgdg main
  1. Установка репозитория PostgreSQL:
echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main" \
| sudo /usr/bin/tee -a /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc \
| sudo apt-key add -
sudo apt update

После установки репозитория, необходимо создать дополнительный конфигурационный файл /etc/apt/preferences.d/postgresql13 со следующим содержимым:

Package: *
Pin: origin apt.postgresql.org
Pin-Priority: 1001
  1. Установка пакетов сервера postgresql-13:

Если нет требований по нестандартному расположению файлов БД, то достаточно одной команды:

sudo apt -y install postgresql-13

Для установки БД с измененным местоположением(и других параметров) можно после выполнения предыдущей команды выполнить следующую последовательность:

sudo pg_lsclusters # посмотреть с какими параметрами поднята текущая БД

Ver Cluster Port Status Owner Data directory Log file
13 main 5432 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log

sudo pg_ctlcluster 13 main stop # остановить существующую БД

sudo pg_dropcluster 13 main # удалить существующую БД

sudo pg_createcluster -d /data/pgdata 13 main # создать БД с новым расположением файлов

sudo pg_ctlcluster 13 main start # запустим новую БД
  1. Настройка профиля сервисной учетной записи

Мы рекомендуем создать файл профиля для сервисной учетной записи postgres:

sudo install -o postgres -g postgres -m 600 \
/etc/skel/.profile /var/lib/postgresql/
echo -e '\nPATH=/usr/lib/postgresql/13/bin/:$PATH\nexport PATH\n' \
| sudo /usr/bin/tee -a /var/lib/postgresql/.profile

После завершения установки, не забудьте выполнить проверку в соостветствии с Проверка после установки

Astra Linux Special Edition 1.8

Достаточно подключения стандартных репозиториев производителя ОС:

  1. Установка пакетов сервера postgresql-15:

Если нет требований по нестандартному расположению файлов БД, то достаточно одной команды:

sudo apt -y install postgresql postgresql-contrib

Для установки БД с измененным местоположением(и других параметров) можно после выполнения предыдущей команды выполнить команду, для определения созданного автоматически кластера:

sudo pg_lsclusters # посмотреть с какими параметрами поднята текущая БД

Ver Cluster Port Status Owner Data directory Log file
15 main 5432 online postgres /var/lib/postgresql/15/main pg_log/postgresql-%a.log

И исходя из полученных данных выполнить следующую последовательность команд:

sudo pg_ctlcluster 15 main stop # остановить существующую БД

sudo pg_dropcluster 15 main # удалить существующую БД

sudo pg_createcluster -d /data/pgdata 15 main # создать БД с новым расположением файлов

sudo pg_ctlcluster 15 main start # запустим новую БД
  1. Настройка профиля сервисной учетной записи

Мы рекомендуем создать файл профиля для сервисной учетной записи postgres:

sudo install -o postgres -g postgres -m 600 \
/etc/skel/.profile /var/lib/postgresql/
echo -e '\nPATH=/usr/lib/postgresql/15/bin/:$PATH\nexport PATH\n' \
| sudo /usr/bin/tee -a /var/lib/postgresql/.profile

После завершения установки, не забудьте выполнить проверку в соостветствии с Проверка после установки

Rocky Linux 8

Доступ к пакетам PostgreSQL настраивается подключением виртуального репозитория(модуля) из физического репозитория AppStream/

  1. Настройка модуля(виртуального репозитория) PostgreSQL и подключение EPEL:
sudo dnf module enable postgresql:13

Использование публичного репозитория EPEL
[Опционально] Если Вы используете локальное “зеркало” для EPEL-репозитория, настройте подключение хоста к этому репозиторию. Если нет:

sudo dnf -y install epel-release
  1. Установка пакетов
sudo dnf -y install postgresql \
postgresql-server \
postgresql-contrib
  1. Инициализация БД:
sudo -iu postgres initdb 

Если предполагается отличный от стандартного путь до файлов БД, укажите его для параметра, например:
-D /data/pgdata.

  1. Запуск postgresql сервиса:
осторожно

Обращаем внимание, если каталог базы данных отличается от дефолтного, необходимо переопределить переменную окружения PGDATA в systemd скрипте - /lib/systemd/system/postgresql-13.service

sudo systemctl enable --now postgresql

После завершения установки, не забудьте выполнить проверку в соостветствии с Проверка после установки

Rocky Linux 9

Доступ к пакетам PostgreSQL настраивается подключением виртуального репозитория(модуля) из физического репозитория AppStream/

  1. Настройка модуля(виртуального репозитория) PostgreSQL и подключение EPEL:
sudo dnf -y module enable postgresql:15

[Опционально] Использование публичного репозитория EPEL
Если Вы используете локальное “зеркало” для EPEL-репозитория, настройте подключение хоста к этому репозиторию. Если нет:

sudo dnf -y install epel-release
  1. Установка пакетов
sudo dnf -y install postgresql \
postgresql-server \
postgresql-contrib
  1. Инициализация БД:
sudo -iu postgres initdb

Если предполагается отличный от стандартного путь до файлов БД, укажите его для параметра, например:
-D /data/pgdata.

  1. Запуск postgresql сервиса:
осторожно

Обращаем внимание, если каталог базы данных отличается от дефолтного, необходимо переопределить переменную окружения PGDATA в systemd скрипте - /lib/systemd/system/postgresql-13.service

sudo systemctl enable --now postgresql

После завершения установки, не забудьте выполнить проверку в соостветствии с Проверка после установки

Установка PostgresPro

Использование PostgresPro для Российских компаний гарантирует возможность/непрерывность поддержки БД и защищает от санкционных рисков.

Luxms BI может быть развернут на PostgresPro двух редакций - Стандартной и Расширенной. Ниже приведенные примеры конфигураций написаны для Стандартной редакции. Для Расширенной редакции расположение файлов и имена команд отличаются.

RedOS 7.3

Необходимо подключение публичного репозитория:

  1. Подключение репозитория PostgresPro

Самый простой вариант - использовать скрипт, предлагаемый производителем:

curl https://repo.postgrespro.ru/pgpro-13/keys/pgpro-repo-add.sh | sudo sh

При использовании локальных “зеркал” получите инструкцию по подключению от администраторов Корпоративного сервера репозиториев.

  1. Установка пакетов сервера postgrespro-std-13

БД можно установить в облегченном варианте, одной командой. Установка единственного пакета совмещена с инициализацией БД и настройкой авто-запуска сервиса. Но этот вариант не подходит при использовании нестандартного места расположения файлов БД.

sudo dnf -y install postgrespro-std-13

В большинстве продуктовых решений используется, отличный от стандартного, путь до файлов БД. В этом случае необходимо установить совокупность пакетов:

sudo dnf -y install postgrespro-std-13-server \
postgrespro-std-13-contrib

После такой установки Вам необходимо произвести инициализацию БД, и создать конфигурационный файл /etc/default/postgrespro-std-13 и указать в нем значение для переменной PGDATA, например:

PGDATA=/data/pgdata
  1. Настройка профиля сервисной учетной записи

Можно воспользоваться поставляемой PostgresPro утилитой pg-wrapper:

/opt/pgpro/std-13/bin/pg-wrapper links update

Но мы рекомендуем создать файл профиля для сервисной учетной записи postgres:

sudo install -o postgres -g postgres -m 600 \
/etc/skel/.bash_profile \
/etc/skel/.bashrc \
/var/lib/pgsql/
echo -e '\nPATH=/opt/pgpro/std-13/bin:$PATH\nexport PATH\n' \
| sudo /usr/bin/tee -a /var/lib/pgsql/.bash_profile
  1. Инициализация PostgresPro:
sudo -iu postgres /opt/pgpro/std-13/bin/initdb

Если предполагается отличный от стандартного путь до файлов БД, укажите его для параметра, например:
-D /data/pgdata.

  1. Запуск и настройка автозапуска PostgresPro сервиса:

Для оригинальной версии PostgreSQL необходимо выполнить следующие действия:

sudo systemctl enable --now postgrespro-std-13.service

После завершения установки, не забудьте выполнить проверку в соответствии с Проверка после установки

Astra Linux Special Edition 1.7

Необходимо подключение публичного репозитория:

  • [PostgresPro Standard 13 for Astra Linus SE] deb http://repo.postgrespro.ru/std-13/astra-smolensk/1.7 1.7_x86-64 main
  1. Подключение репозитория PostgresPro:
echo "deb http://repo.postgrespro.ru/std-13/astra-smolensk/1.7 1.7_x86-64 main" \
| sudo /usr/bin/tee -a /etc/apt/sources.list.d/postgrespro-std-13.list
wget -qO- https://repo.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO \
| sudo apt-key add -
sudo apt update
  1. Установка пакетов сервера postgrespro-std-13:

БД можно установить в облегченном варианте, одной командой. Установка единственного пакета совмещена с инициализацией БД и настройкой авто-запуска сервиса.Но этот вариант не подходит при использовании нестандартного места расположения файлов БД.

sudo apt -y install postgrespro-std-13

В большинстве продуктовых решений используется, отличный от стандартного, путь до файлов БД. В этом случае необходимо установить совокупность пакетов:

sudo apt -y install postgrespro-std-13-client postgrespro-std-13-server postgrespro-std-13-contrib

После такой установки Вам необходимо произвести инициализацию БД, которая не означает автоматический запуск БД. Такой вариант установки особенно удобен при развертывании кластерного решения для БД, например Patroni.

осторожно

Не забудьте изменить значение переменной окружения PGDATA в файл переменных среды сервиса - /etc/default/postgrespro-std-13

  1. Настройка профиля сервисной учетной записи

Можно воспользоваться поставляевой PostgresPro утилитой pg-wrapper:

/opt/pgpro/std-13/bin/pg-wrapper links update

Но мы рекомендуем создать файл профиля для сервисной учетной записи postgres:

sudo install -o postgres -g postgres -m 600 \
/etc/skel/.profile /var/lib/postgresql/
echo -e '\nPATH=/opt/pgpro/std-13/bin:$PATH\nexport PATH\n' \
| sudo /usr/bin/tee -a /var/lib/postgresql/.profile
  1. Инициализация PostgresPro:
sudo -iu postgres initdb

Если предполагается отличный от стандартного путь до файлов БД, укажите его для параметра, например:
-D /data/pgdata.

  1. Запуск и настройка автозапуска PostgresPro сервиса:

Для оригинальной версии PostgreSQL необходимо выполнить следующие действия:

sudo systemctl enable --now postgrespro-std-13.service

После завершения установки, не забудьте выполнить проверку в соостветсвии с Проверка после установки

Astra Linux Special Edition 1.8

Необходимо подключение публичного репозитория:

  • [PostgresPro Standard 15 for Astra Linus SE] deb https://repo.postgrespro.ru/std/std-15/astra-smolensk/1.8/ 1.8_x86-64 main
  1. Подключение репозитория PostgresPro:
echo "deb http://repo.postgrespro.ru/std-15/astra-smolensk/1.7 1.7_x86-64 main" \
| sudo /usr/bin/tee -a /etc/apt/sources.list.d/postgrespro-std-15.list
wget -qO- https://repo.postgrespro.ru/std/std-15/keys/GPG-KEY-POSTGRESPRO \
| sudo tee /etc/apt/trusted.gpg.d/postgrespro-std-15.asc
sudo apt update

НЕ РАБОТАЕТ из-за отсутствия зависимостей.

Установка Jatoba

СУБД Jatoba основана на базе PostgreSQL, при установке требует получения лицензионного ключа. Запуск БД

Astra Linux Special Edition 1.7

Необходимо подключение публичного репозитория:

  • Jatoba 4 for Astra Linus SE
    Доступ к репозиторию предоставляется Производителем, поэтому в описании ниже будет использован не существующий URL для репозитория.
    Для установки пакетов Jatoba 4 необходим GPG-ключ(доступен в репозитории) - DEB-GPG-KEY-Jatoba
  1. Подключение репозитория Jatoba4:
echo "deb https://repo.jatoba.ru/.../jatoba/astra-1_7-jatoba-4/ default all" \
| sudo /usr/bin/tee -a /etc/apt/sources.list.d/jatoba-4.list
sudo apt-key add DEB-GPG-KEY-Jatoba
sudo apt update
  1. Установка пакетов сервера Jatoba4:
sudo apt -y install jatoba4-client \
jatoba4-contrib \
jatoba4-libs \
jatoba4-server
  1. Настройка профиля сервисной учетной записи

Мы рекомендуем создать файл профиля для сервисной учетной записи postgres:

echo -e '\nPATH=/usr/jatoba-4/bin:$PATH\nexport PATH\n' \
| sudo /usr/bin/tee -a /var/lib/jatoba/.bash_profile
  1. Инициализация БД:
sudo -iu postgres initdb

Если предполлагается отличный от стандартного путь до файлов БД, укажите его для параметра, например:
-D /data/pgdata.

  1. Получение лицензионного ключа

Процедура получения ключа активации предполагает online-режим:

root@astra-template:~# cd /usr/jatoba-4/bin/
root@astra-template:/usr/jatoba-4/bin# ./jactivator
Добро пожаловать в центр активации Jatoba
Введите лицензионный ключ
XXXXX-XXXXX-XXXXX-XXX
Введите email адрес администратора
vpupkin@company.tld
Выберите способ активации:
Online-активация (введите 1)
Offline-активация (введите 2)
> 1
Используется сервер лицензирования: https://license.gaz-is.ru
Выберите режим активации:
Обычная активация (введите 1)
Реактивация (введите 2)
> 1
Время для активации 20 минут
Введите ключ активации с почты администратора
XXX-111-222-XXX
Введите путь для сохранения файла лицензии
/usr/jatoba-4/bin/
-------------------------------------------------
Лицензия выпущена, файл лицензии успешно сохранен
Файл: /usr/jatoba-4/bin//jatoba.cer
-------------------------------------------------

После получения ключа необходимо поменять права доступа на сертификат:

chown postgres.postgres /usr/jatoba-4/bin/jatoba.cer

И добавить параметры для проверки лицензии в конфигурационный файл ${PGDATA}/postgresql.conf:

lic_product_name = 'Jatoba'
lic_file_path = '/usr/jatoba-4/bin/jatoba.cer'
lic_server_addr = 'https://license.gaz-is.ru'
  1. Запуск и настройка автозапуска Jatoba-4 сервиса:
sudo systemctl enable --now jatoba-4.service

Проверка после установки

Для корректной работы Luxms BI необходима не только работоспособная БД, но и доступность утилит БД для сервисной учетной записи. Поэтому после установки БД желательно провести следующие проверки.

  1. Проверка работоспособности БД
netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 951/sshd: /usr/sbin
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 2660/postgres
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1066/master
tcp6 0 0 :::22 :::* LISTEN 951/sshd: /usr/sbin
tcp6 0 0 ::1:5432 :::* LISTEN 2660/postgres
tcp6 0 0 ::1:25 :::* LISTEN 1066/master

Вы должны увидеть процесс, который слушает на порту 5432. На этом этапе не важно, на каком IP-адресе слушает сервис.

  1. Переключиться в shell сервисной учетной записи и проверить доступность необходимых комманд:
sudo -iu postgres
[sudo] password for admin:

[postgres@demo-bi ~]$ pg_dump -V
pg_dump (PostgreSQL) 13.13
[postgres@demo-bi ~]$ pg_ctl -V
pg_ctl (PostgreSQL) 13.13
[postgres@demo-bi ~]$ psql
psql (13.13)
Type "help" for help.

postgres=# exit
[postgres@demo-bi ~]$