Перейти к основному содержанию
`Ctrl`+`K`

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

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

ПО под ОС 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

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

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

    su postgres

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

    psql

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

    alter user postgres password '<Новый пароль>';

6. Создайте пользователя:

    CREATE ROLE <userName> WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT NOREPLICATION CONNECTION LIMIT -1 PASSWORD '<UserPassword>';
    GRANT pg_signal_backend TO <userName>;

7. Создайте новую БД, в качестве владельца укажите созданного пользователя:

    CREATE DATABASE "<имяБД>" WITH OWNER = <userName> ENCODING = 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' CONNECTION LIMIT = -1 TEMPLATE template0;

8. Завершите сессию psql:

    \q

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

    psql <имяБД>

10. Подключите необходимые для работы 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;

11. Завершите сессию psql:

    \q

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

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

Важно

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

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

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

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

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

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

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

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

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