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

Необходимое программное обеспечение#

ПО под ОС Astra Linux / Debian / Alt Linux:

  • сервер PostgreSQL 14 или выше (Рекомендовано использовать PostgreSQL 17); PostgreSQL или Postgres Pro

  • postgresql-contrib (обычно устанавливаются вместе с сервером Postgres);

  • htop;

  • Iotop;

  • sysstat;

  • pgbadger;

  • ssh (клиент и сервер SSH);

  • mc (Midnight Commander);

  • tar;

  • zip.

Важно

Не рекомендуется выполнять сборку сервера самостоятельно из исходного кода т.к. нельзя гарантировать стабильность работы таких сборок в продуктивном контуре.

Установка#

Скачайте требуемый пакет с сайта https://postgrespro.ru/products/download или https://www.postgresql.org/download. Для установки следуйте инструкциям на сайте.

Изменение локализации#

Если при установке операционной системы выбрана англоязычная локаль, СУБД будет установлена с той же локалью. В этом случае локаль СУБД необходимо изменить на русскую (ru_RU.UTF-8) до выполнения любых конфигураций, поскольку смена локали приводит к сбросу всех настроек. Подробную инструкцию см. в документе: Смена локалей для postgresql.

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

  • В конфигурационном файле /etc/postgresql/*/main/postgresql.conf переопределите параметры по умолчанию согласно конфигурации железа.
    Пример для сервера с конфигурацией ЦП:

  • 4 ядра;

  • 8 Гб ОЗУ;

  • Диск: SSD:
    Добавить в конец конфигурационного файла

#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------

# Memory Configuration
shared_buffers = 2GB
effective_cache_size = 6GB
work_mem = 41MB
maintenance_work_mem = 410MB

# Checkpoint Related Configuration
min_wal_size = 2GB
max_wal_size = 3GB
checkpoint_completion_target = 0.9
wal_buffers = -1

# Network Related Configuration
listen_addresses = '*'
max_connections = 100

# Storage Configuration
random_page_cost = 1.1
effective_io_concurrency = 200

# Worker Processes Configuration
max_worker_processes = 8
max_parallel_workers_per_gather = 2
max_parallel_workers = 2

max_locks_per_transaction = 500

Примечание

Для подбора параметров можно воспользоваться онлайн-мастером https://www.pgconfig.org.

В мастере указать версию постгреса, выбрать профиль DataWare house and BI Applications и указать параметры железа сервера: количество ядер ЦП, размер ОЗУ, тип диска.

  • Настройте аутентификацию по имени узла в файле pg_hba.conf.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
host    all             all             all                     scram-sha-256

Примечание

Для получения подробной информации по конфигурации Postgres воспользуйтесь документацией на сайте: https://postgrespro.ru/docs.

Развертывание новой базы#

  1. Поменяйте пароль пользователю ОС c именем postgres:

sudo passwd postgres
  1. Подключитесь терминалом к серверу СУБД под административным пользователем.

  2. Переключитесь на пользователя «postgres»:

su postgres
  1. Подключитесь локально утилитой psql к СУБД Postgres:

psql
  1. Поменяйте пароль суперпользователя:

alter user postgres password '<Новый пароль>';
  1. Создайте пользователя:

CREATE ROLE <userName> WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT NOREPLICATION CONNECTION LIMIT -1 PASSWORD '<UserPassword>'; 
GRANT pg_signal_backend TO <userName>;
  1. Создайте новую БД, в качестве владельца укажите созданного пользователя:

CREATE DATABASE "<имяБД>" WITH OWNER = <userName> ENCODING = 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' CONNECTION LIMIT = -1 TEMPLATE template0;
  1. Завершите сессию psql:

\q
  1. Подключитесь к созданной БД:

psql <имяБД>
  1. Подключите необходимые для работы Global расширения:

CREATE EXTENSION if not exists plpgsql; 
CREATE EXTENSION if not exists fuzzystrmatch; 
CREATE EXTENSION if not exists pg_trgm; 
CREATE EXTENSION if not exists pg_stat_statements; 
CREATE EXTENSION if not exists "uuid-ossp"; 
CREATE EXTENSION if not exists dict_xsyn; 
CREATE EXTENSION if not exists ltree;
  1. Завершите сессию psql:

\q

Теперь БД готова к работе.

Развертывание поставочного дампа#

Важно

Перед развертыванием поставочного дампа разверните и зарегистрируйте сервер приложений:

  • Создайте чистую базу, создайте extentions.

  • Проведите полную настройку контура.

  • Выполните подготовку релиза. Система определит, что производится чистая инициализация и сгенерирует все необходимые схемы и таблицы.

  • Зарегистрируйте контур лицензией.

  • Остановите Global (global3.service).

  • Очистите схему public и загрузите её дамп (предварительно нужно очистить схему public).

  • Запустите Global.

Подробнее о восстановлении БД в руководстве.