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