Импорт и настройка базы данных postgreSQL

Создание пользователя

Все сервисы ПАК Астра запускаются и работают от имени выделенного пользователя «dozor», перед установкой сервисов ПАК Астра необходимо создать пользователя и группу и указать домашнюю папку и отключить вход:

useradd -d /var/lib/dozor -m -s /sbin/nologin dozor

Необходимо создать пользователя СУБД, от имени которого будут работать с базой данных все сервисы. Имя пользователя, используемое в шаблонах конфигурации и данном руководстве «dozor»:
Для создания пользователя необходимо выполнить следующие запросы:

-Вход в PostgeSQL:

psql -U postgres

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

-Создание пользователя dozor:

CREATE USER dozor WITH PASSWORD 'YourPassword';

где YourPassword - пароль пользователя dozor.

После создание пользователя, необходимо создать базу данных, которая будет использоваться сервисами ПАК Астра. Имя базы данных, используемое в шаблонах конфигурации и примерах в данном руководстве «dozor».
Для создания БД необходимо выполнить следующий запрос:

CREATE DATABASE dozor OWNER = dozor;

Так же нужно добавить пользователя support, в кавычках обязательно ввести пароль:

CREATE ROLE support WITH	LOGIN	NOSUPERUSER	NOCREATEDB	NOCREATEROLE	NOINHERIT	NOREPLICATION	CONNECTION LIMIT -1	PASSWORD 'password';
GRANT SELECT ON actions_log TO support;

Далее обязательно открыть файл наcтроек postgres:

nano /etc/postgresql-13/postgresql.conf

Найти там строку:

#shared_preload_libraries = ''

Раскомментировать и заменить ее следующей строкой:

shared_preload_libraries = 'IPCSend'

Проверка наличия библиотек

Для корректной работы базы необходимо убедиться в присутствии нужных библиотек и расширений, и добавить недостающие. Крайне важно обратить внимание на разрядность системы, 64 и 32 битные библиотеки и пути отличаются.
Путь до 32-ух битных библиотек:

cd /usr/lib/postgresql-13/lib

Для 64-х битной системы:

cd /usr/lib64/postgresql-13/lib64

Далее необходимо переместить библиотеку IPCSend и сделать ее исполняемой.
После этого необходимо проверить наличие расширений. Для этого нужно переместиться в директорию:

cd /usr/share/postgresql-13/extension

И переместить туда файлы
IPSend.control и IPCsend—1.0.sql, предварительно поменяв пути расположения библиотеки внутри файлов.

Проверить наличие библиотек для 32-ух битной системы:

ls /usr/lib/*.so

Для 64-ех битной системы:

ls /usr/lib64/*.so

Сравнить со списком необходимых библиотек и, при необходимости, импортировать в папку недостающие библиотеки для 32-ух битной системы:

/usr/lib 

Для 64-ех битной:

/usr/lib64 

Список необходимых библиотек:

libconfig.so
libcurl_helper.so
libfbtree.so
libhex.so
libipc_receiver_udp.so
liblprintf.so
libmodule_common.so
libpq_stmt.so
libmyexp.so
libprofiler.so
libxprintf_dump.so

Зайти в базу данных dozor через командную строку:

psql -U postgres -d dozor

Далее, находясь в базе ввести следующую комманду:

CREATE EXTENSION "IPCSend";

После ввода комманды выйти:

\q

Установка PGAgent

PGAgent - это агент планирования заданий для баз данных Postgres, способный выполнять многоэтапные пакетные сценарии или сценарии оболочки и задачи SQL по сложным расписаниям.

Для установки необходимо ввести комманду:

emerge --ask pgagent

Далее в файле:

/etc/conf.d/pgagent

в строке PG_HOST=«localhost» заменить localhost на 127.0.0.1

Так же в файле:

/etc/init.d/pgagent

в строке

command_user="pgagent"

заменить pgagent на root и в строке

checkpath --file --owner root:pgagent --mode 0660 "${PGA_LOG}"

удалить :pgagent, что бы получилась строка:

checkpath --file --owner root --mode 0660 "${PGA_LOG}" 

Далее добавляем pgdagent в автозагрузку

rc-update add pgagent default 

И запускаем

rc-service pgagent start 

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

Перемещаемся в папку db_update

cd /root/db_update

Следующим шагом необходимо загрузить дамп базы данных с сервера разработчика и последующий импорт:

Перед импортом базы данных необходимо добавить расширение в базу, для этого нужно зайти в БД postgres

psql -U postgres postgres

Ввести пароль при запросе и далее ввести команду для создания расширения:

Create extension pgagent;

После создания базы данных, нужно сделать импорт существующей базы данных.

Перед установкой (обновлением) базы данных в любом месте файловой системы, например в домашнем каталоге текущего пользователя:

cd ~

необходимо создать рабочую папку:

mkdir db_update

и перейти в нее:

cd db_update

Далее следует убедиться, что она пуста (например, от предыдущих обновлений) или просто очистить ее:

rm *

игнорируя предупреждения об отсутствующих файлах, если они вдруг
возникнут:

rm: cannot remove '*': No such file or directory 38

Далее импорт дампа для работы pgagent:

psql -U postgres < (путь до фала)/pgagent_jobs.sql

Следующим шагом необходимо загрузить дамп базы данных с сервера разработчика в данный момент существуют 2 дампа БД, 116.sql и 116_empty.sql. Если это новая БД, то необходимо будет залить шаблон под названием 116_empty.sql, если же база создается как замена mysql базы данных, и будет проводится миграция с mysql на postgres(подробнее можно почитать тут):

Импорт базы данных dozor:

psql -U postgres -d dozor < (путь до фала)/116_empty.sql

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

После успешного завершения дампа необходимо вызвать функцию создания партиции, необходимой для записи ивентов.
Для этого необходимо войти в БД

psql -U postgres -d dozor 

Ввести пароль, и уже в коммандной строке постгресса ввести следующее:

CALL "AddNewEventsPartition"(EXTRACT(MONTH FROM (current_date))::INTEGER, EXTRACT(YEAR FROM (current_date))::INTEGER);

После всех проделанных манипуляций необходимо дать доступ pgagent к базе данных, путем прописывания пароля

Для этого нужно перейти в директорию /root

cd

создать файл .pgpass

touch .pgpass

и записать туда следующие данные

127.0.0.1:5432:postgres:postgres:<PASSWORD_P>
127.0.0.1:5432:dozor:postgres:<PASSWORD_P>

,где <PASSWORD_P> - ваш пароль от суперпользователя postgres.

После этого сохранить файл и дать ему права

chmod 0600 .pgpass

Затем необходимо добавить pgagent в автозагрузку

rc-update add pgagent default

На этом установка, настройка и импорт базы данных в PostgreSQL завершены. Для удобство работы с базой можно использовать PGAdmin, установку которого можно увидеть в этой статье

Для корректной работы сценариев, на сервере необходимо сделать несколько действий.
В настройках d3srv.cfg, находящейся по пути

cd /var/lib/dozor

В разделе [other] вписать или раскомментировать строку script_compiler.

script_compiler = /var/lib/dotnet/2.1/clr/corerun /var/lib/dotnet/app/scamp/SCAMPCompile.dll

И по пути

cd /var/lib