Миграция базы данных

Создание рабочей среды

Перед началом миграции необходимо получить нужные файлы:
move.sh - отвечает за создание дампа.
convert_sql.awk - делает конвертацию полученного дампа в формат, пригодный для загрузки в базу postgresql.
116.sql - является шаблоном, на который и будет производится заливка подготовленной БД.
tables.csv - файл, с данными счетчиков, полученный экспортом с сервера через phpmyadmin.
И бинарники с конфигурационными файлами и скриптами для init.d.

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

mysqldump -uroot -p(пароль) dozor --routines --default-character-set=utf8 | gzip -c > restore_mysql`date +%y%m%d`.sql.gz

Разархивируем полученные архивы

gunzip migr.tar
gunzip bins.tar

Делаем файл move.sh исполняемым

chmod +x move.sh

Далее запускаем файл коммандой

./move.sh

После завершения работы скрипта убеждаемся, что дамп создался

ls -la

После ввода комманды должен появится новый архив.
Далее необходимо зайти в phpmyadmin и выполнить комманду:

SELECT table_name,Auto_increment FROM information_schema.tables WHERE table_schema='dozor';

После получения результата, экспортируем данные в формате CSV. Обратите внимание на название таблицы, оно должно быть tables.csv.
Далее закидываем полученный файл в директорию с дампом.

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

awk -f convert_sql.awk *Имя дампа.sql

Конвертер автоматически создаст папку postgres и сохранит полученный результат(файл dump.sql) в эту папку

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

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

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

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

-Вход в PostgeSQL:

psql -U postgres

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

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

CREATE USER dozor WITH PASSWORD 'YourPassword';

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

Выход:

\q

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

CREATE DATABASE dozor OWNER = dozor;

Миграция

Перед миграцией необходимо залить шаблонный дамп и pgagent_jobs.
Что бы pgagent не мешал во время миграции необходимо остановить службу и убрать ее из автозагрузки

rc-service pgagent stop
rc-update delete pgagent default

Импорт дампа для работы pgagent, необходимо ввести пароль бд:

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

После импорта pgagent_jobs, необходимо залить шаблонный дамп:

psql -U postgres -d dozor < 116.sql

После ввода комманды необходимо будет ввести пароль.

После того как все подготовительные работы завершены, приступаем к самой миграции.
Выключаем все сервисы

rc-update delete d3srv default
 
rc-update delete e3srv default
 
rc-update delete d-sh default
 
rc-service d3srv stop
 
rc-service d-sh stop
 
rc-service e3srv stop

Далее заливаем уже конвертированный дамп с данными

psql -U postgres -d dozor < postgres/dump.sql

Далее меняем бинарники и конфигурационные файлы в папке dozor

cp d3srv d3srv.cfg e3srv e3srv.cfg d-sh d-sh.cfg /var/lib/dozor/

Так же необходимо проверить наличие папки updates и наличие прав, если папка отсутствует, переметить ее из старой директории с бинарниками mysql.

Меняем владельца папки и ее содержимого с рута на пользователя дозор:

chown dozor:dozor /var/lib/dozor

Так же копируем файлы для init.d

cp d3srv e3srv d-sh /etc/init.d/

Останавливаем mysql сервер

rc-update delete mysql default
 
rc-service mysql stop

И восстанавливаем автозагрузку и запускаем сервисы

rc-update add d3srv default
 
rc-update add e3srv default
 
rc-update add d-sh default
 
rc-update add pgagent default
 
rc-service pgagent start
 
rc-service d3srv start
 
rc-service d-sh start
 
rc-service e3srv start

На старых серверах возможна проблема при запуске d3srv:

./d3srv: error while loading shared libraries: libnettle.so.8: cannot open shared object file: No such file or                                                                                                                        directory

В этом случае необходимо прописать

emerge dev-libs/nettle