Подготовка PostgreSQL

Предварительные условия

  • Используется сервер PostgreSQL версии 10.x и новее. Инсталлятор системы содержит версию 12, под которую адаптированы процессы автоматического создания recovery-серверов и контроллера репликаций.

  • Для подключения к БД требуется роль в БД с именем erapgadmin и правом SUPERUSER.

  • Должен быть доступ к серверу БД со всех серверов платформы.

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

Важно!

Описан пример установки сервера PostgreSQL. Сервер БД установленный по данной инструкции не может использоваться в высоконагруженных системах.

Подготовка к установке

1. Установить docker

Запуск контейнера PostgreSQL

1. Создать volume для контейнера

$ sudo docker volume create <volume_name> (1)
1 <volume_name> – имя тома.

2. Запустить контейнер PostgreSQL. Образ для запуска контейнера будет скачан с hub.docker.com

$ docker run \
             --name <container_name> \ (1)
             -v <volume_name>:/var/lib/postgresql/data \ (2)
             -e POSTGRES_PASSWORD=<pgrole_pwd> \ (3)
             -dit \
             --restart <restart_policy> \ (4)
             --network=<network_type> \ (5)
             postgres:<image_tag> (6) (7)
1 <container_name> – имя контейнера.
2 <volume_name> – имя тома для контейнера.
3 <pgrole_pwd> – пароль роли postgres, который будет установлен при инициализации.
4 <restart_policy> – политика перезапуска контейнера.
5 <network_type> – тип подключения контейнера к сети.
6 postgres – имя образа на основе которого будет запущен контейнер (константа).
7 <image_tag> – тэг образа.

Например:

$ docker run \
            --name pgdb_name \
            -v pg_data_vol:/var/lib/postgresql/data \
            -e POSTGRES_PASSWORD=123 \
            -dit \
            --restart unless-stopped \
            --network=host \
            postgres:12
Настройка PostgreSQL

1. Подключиться к контейнеру

$ sudo docker exec -it <container_name> \ (1)
                       bash
1 – имя созданного контейнера.

2. Подключиться к БД postgres

# psql -U postgres

3. Создать роль erapgadmin с паролем <role_pwd>

# CREATE ROLE erapgadmin LOGIN ENCRYPTED PASSWORD '<role_pwd>' SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION;

4. Отключиться от БД postgres

# \q

5. (Опционально)Изменить файл конфигурации аутентификации клиентов (pg_hba.conf).
По умолчанию файл располагается в: /var/lib/postgresql/data/pg_hba.conf

Для примера добавим возможность подключения к серверу PostgreSQL с адреса 192.168.0.35, для этого необходимо добавить строку:

host	all		all		192.168.0.35/32		md5

6. (Опционально)Изменить конфигурацию PostgreSQL (postgresql.conf).
По умолчанию файл располагается в: /var/lib/postgresql/data/postgresql.conf

Для примера изменим ip адреса и порт на которых будет поднят слушатель PostgreSQL:

listen_addresses = '*'
port = 5433

7. (Опционально)Перезагрузить службу PostgreSQL в случае если были изменения в рамках п.5 или п.6

$ sudo service postgresql restart

Проверка результата

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