Установка и настройка БД PostgreSQL
Для использования сценария кластеризованной БД необходимо выполнить шаги по ручной установке и настройке СУБД.
Установка
Внимание
Установка узла с ролью DB осуществляется на отдельный хост с ОС Astra Linux SE 1.7.
Обновление СУБД
В случае обновления СУБД PostgreSQL требуется перенос данных на новую версию/конфигурацию. Перед обновлением необходимо выполнить экспорт БД.
- 
Отредактировать файл /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
- 
Обновить списки пакетов: sudo apt update
- 
Установить СУБД и необходимые компоненты: sudo apt install -y postgresql-11
- 
Выполнить установку и компиляцию дополнительных файлов локализации в системе: sudo gunzip /usr/share/i18n/charmaps/UTF-8.gzsudo 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).
- 
Команды по настройке требуют запуска терминального клиента БД (psql) под учетной записью postgres. Для его активации необходимо последовательно выполнить команды: sudo -ssu postgrespsqlОшибкаcould not change directory to "/home/": Отказано в доступе
 Если после выполнения команды отображается ошибкаcould not change directory to "/home/": Отказано в доступеи не появляется приглашение командной строкиpostgres=#, необходимо вместоsu postgresиспользовать командуsu - postgres. Если приглашениеpostgres=#появилось, то сообщение об ошибке можно игнорировать.
 
- 
Используя интерактивный интерфейс, создать пользователя для дальнейшего подключения к БД: CREATE USER spacevdi WITH LOGIN SUPERUSER PASSWORD 'examplepassword';Примечание В приведенной команде имя пользователя spacevdi и пароль examplepassword используются в качестве примера. Рекомендуется задавать учетные данные в соответствии с внутренними стандартами организации по применению парольной защиты. 
- 
Используя интерактивный интерфейс, создать БД vdi: CREATE DATABASE vdi encoding 'UTF-8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8' template 'template0' owner 'spacevdi';
- 
Используя интерактивный интерфейс, убедиться, что БД vdi создана: \l
- 
Используя интерактивный интерфейс, активировать расширение СУБД для работы с UUID: CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
- 
Выйти из интерактивного интерфейса терминального клиента СУБД: \q
- 
Выйти из сеанса пользователя postgres: exit
- 
Отредактировать файл /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
- 
Ограничить доступные для подключения БД в файле /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. 
- 
Внести изменения в конфигурацию СУБД в файле /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
- 
Выполнить перезапуск кластера и проверить статус его работы: - 
Убедиться, что процесс postgresql работал до применения изменений: 
 systemctl status postgresql
- 
Выполнить перезапуск и применение всех настроек: 
 systemctl restart postgresql
- 
Убедиться, что запуск выполнен: 
 systemctl status postgresql
- 
Проверить состояние кластера: 
 pg_ctlcluster 11 main status
 
- 
- 
Выйти из сеанса суперпользователя: exitПримечание Если параметры репликации требуют других настроек pg_hba или postgresql, необходимо следовать инструкциям репликации настраиваемой конфигурации (за исключением тех, которые выделены как критические).