Перейти к содержанию

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

Для использования сценария кластеризованной БД необходимо выполнить шаги по ручной установке и настройке СУБД.


Установка

Важно

Установка узла с ролью DB осуществляется на отдельный хост с ОС Astra Linux SE 1.7.

Обновление СУБД

В случае обновления СУБД PostgreSQL требуется перенос данных на новую версию/конфигурацию. Перед обновлением необходимо выполнить экспорт БД.

  1. Отредактировать файл /etc/apt/sources.list, указав источники получения пакетов (официальные установочные диски либо сетевые репозитории).

    Важно

    В списке репозиториев не должны присутствовать активные компоненты astra-ce.

    Список сетевых репозиториев на ОС Astra Linux 1.7.5:

    # Astra Linux repository description https://wiki.astralinux.ru/x/0oLiC
    
    #deb cdrom:[OS Astra Linux 1.7.5 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free
    deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free
    deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free
    
    deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
    deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
    deb https://download.astralinux.ru/astra/stable/1.7_x86-64/uu/last/repository-update/ 1.7_x86-64 main contrib non-free
    
  2. Обновить списки пакетов:

    sudo apt update
    
  3. Установить СУБД и необходимые компоненты:

    sudo apt install -y postgresql-11
    
  4. Выполнить установку и компиляцию дополнительных файлов локализации в системе:

    sudo gunzip /usr/share/i18n/charmaps/UTF-8.gz
    
    sudo localedef -i /usr/share/i18n/locales/en_US -f /usr/share/i18n/charmaps/UTF-8 /usr/lib/locale/en_US.UTF-8
    

Создание БД и пользователя для работы компонентов Space Disp

Примечание

Следующие шаги необходимо выполнять на узле кластера с ролью master (в данном примере - Узел БД 1).

  1. Команды по настройке требуют запуска терминального клиента БД (psql) под учетной записью postgres. Для его активации необходимо последовательно выполнить команды:

    sudo -s
    
    su postgres
    
    psql
    

    Ошибка could not change directory to "/home/": Отказано в доступе
    Если после выполнения команды отображается ошибка could not change directory to "/home/": Отказано в доступе и не появляется приглашение командной строки postgres=#, необходимо вместо su postgres использовать команду su - postgres. Если приглашение postgres=# появилось, то сообщение об ошибке можно игнорировать.

  2. Используя интерактивный интерфейс, создать пользователя для дальнейшего подключения к БД:

    CREATE USER spacevdi WITH LOGIN SUPERUSER PASSWORD 'examplepassword';
    

    Примечание

    В приведенной команде имя пользователя spacevdi и пароль examplepassword используются в качестве примера. Рекомендуется задавать учетные данные в соответствии с внутренними стандартами организации по применению парольной защиты.

  3. Используя интерактивный интерфейс, создать БД vdi:

    CREATE DATABASE vdi encoding 'UTF-8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8' template 'template0' owner 'spacevdi';
    
  4. Используя интерактивный интерфейс, убедиться, что БД vdi создана:

    \l
    
  5. Используя интерактивный интерфейс, активировать расширение СУБД для работы с UUID:

    CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
    
  6. Выйти из интерактивного интерфейса терминального клиента СУБД:

    \q
    
  7. Выйти из сеанса пользователя postgres:

    exit
    
  8. Отредактировать файл /etc/parsec/mswitch.conf, установив параметру zero_if_notfound значение yes:

    Важно

    Значение параметра zero_if_notfound необходимо установить на всех узлах кластера.

    # The mandate integrity level allow to user. The default source
    # is entries in /etc/parsec/micdb directory.
    mic: files
    mic_charset: utf-8
    
    # Return zero data instead of ENOENT/ENODATA in the absence of record
    zero_if_notfound: yes
    
  9. Ограничить доступные для подключения БД в файле /etc/postgresql/11/main/pg_hba.conf, заменив строки в разделе IPv4 и IPv6:

    Важно

    Ограничить доступные для подключения БД необходимо на всех узлах кластера.

    # IPv4 local connections:
    #host    all             all             127.0.0.1/32            md5
    host    all             spacevdi             0.0.0.0/0            md5
    
    # IPv6 local connections:
    #host    all             all             ::1/128                 md5
    

    Примечание

    В примере выше ограничивается возможность подключения только для пользователя spacevdi (созданного ранее) и блокируются подключения по IPv6, т.к. такой тип адресации не поддерживается в Space Disp.

  10. Для корректной работы приложения в режиме замкнутой программной среды (ЗПС), необходимо внести изменения в конфигурацию СУБД в файле /etc/postgresql/11/main/postgresql.conf в соответствие с настраиваемой инфраструктурой:

    Важно

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

    # настройки для проверок совместимости ЗПС
    ac_ignore_socket_maclabel false
    enable_bitmapscan = off
    
    # изменение поведения по умолчанию комментированием строки
    #max_wal_size = 1GB
    #min_wal_size = 80MB
    
    # изменение стандартных локалей
    lc_messages = 'en_US.UTF-8'         # locale for system error message strings
    lc_monetary = 'en_US.UTF-8'         # locale for monetary formatting
    lc_numeric = 'en_US.UTF-8'          # locale for number formatting
    lc_time = 'en_US.UTF-8'             # locale for time formatting
    
    # критически важные настройки для приложения
    
    # увеличение размера буфера (по умолчанию - 128MB)
    shared_buffers = 1024MB 
    
    # для работы секционирования событий параметр должен оставаться включенным
    #enable_partition_pruning = on
    
    # изменение поведения по умолчанию комментированием строки
    #standard_conforming_strings = off
    
  11. Выполнить перезапуск кластера и проверить статус его работы:

    • Убедиться, что процесс postgresql работал до применения изменений:

      systemctl status postgresql
      

    • Выполнить перезапуск и применение всех настроек:

      systemctl restart postgresql
      

    • Убедиться, что запуск выполнен:

      systemctl status postgresql
      

    • Проверить состояние кластера:

      pg_ctlcluster 11 main status
      

  12. Выйти из сеанса суперпользователя:

    exit
    

    Примечание

    Если параметры репликации требуют других настроек pg_hba или postgresql, необходимо следовать инструкциям репликации настраиваемой конфигурации (за исключением тех, которые выделены как критические).