====Импорт и настройка базы данных 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(подробнее можно почитать [[https://cloud.security-hub.ru/wiki/doku.php?id=%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80:%D0%BC%D0%B8%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B1%D0%B4_mysql_%D0%B2_%D0%B1%D0%B4_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:
127.0.0.1:5432:dozor:postgres:
,где - ваш пароль от суперпользователя postgres.
После этого сохранить файл и дать ему права
chmod 0600 .pgpass
Затем необходимо добавить pgagent в автозагрузку
rc-update add pgagent default
На этом установка, настройка и импорт базы данных в PostgreSQL завершены. Для удобство работы с базой можно использовать PGAdmin, установку которого можно увидеть в [[https://cloud.security-hub.ru/wiki/doku.php?id=%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80:%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_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