======Миграция базы данных======
===Создание рабочей среды===
Перед началом миграции необходимо получить нужные файлы:
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