Миграция производится при обновлении SoftWLC с 1.18 до 1.19.
Описание
В версии 1.18 основное хранилище данных изменено на mysql, в связи с чем необходимо выполнить миграцию данных.
Миграция базы данных из mongo в mysql выполняется с помощью скрипта, который доступен после обновления на новую версию eltex-ngw в каталоге /usr/lib/eltex-ngw/, полный путь до скрипта /usr/lib/eltex-ngw/migrate_mongo_to_mysql.py
Настройка
Перед тем как непосредственно приступить к миграции необходимо выполнить ряд подготовительных действий.
1) Создать изолированную среду python, т.к скрипт будет запущен один раз, то можно не засорять основную систему необходимыми пакетами для миграции.
Далее выполнить "активацию" виртуальной среды, после чего в приглашение командной строки добавится префикс виртуальной среды (database_migration).
root@ubuntu16-SWLC:~# python3 -m venv database_migration root@ubuntu16-SWLC:~# source database_migration/bin/activate (database_migration) root@ubuntu16-SWLC:~#
2) Добавить недостающие модули для выполнения миграции выполнив команду и после выполнения убедится в успешной установке:
(database_migration) root@ubuntu16-SWLC:~# pip3 install mysql-connector-python pymongo (database_migration) root@ubuntu16-SWLC:~# pip3 freeze mysql-connector==2.2.9 pymongo==3.11.1 (database_migration) root@ubuntu16-SWLC:~#
3) Выполнить обновление пакета с помощью пакетного менеджера из репозитория, либо выполнить установку вручную:
root@ubuntu16-SWLC:~# apt install eltex-ngw
4) Следующим шагом следует ,обновить привилегии для стандартного пользователя и создать базу данных , выполнив ряд команд:
root@ubuntu16-SWLC:~# systemctl stop eltex-ngw root@ubuntu16-SWLC:~# eltex-ngw create-db-user # Необходимо ввести рутовый логин и пароль Creating database user "javauser" Enter your mysql administrator login (default is 'root'): root Enter your mysql administrator password (root): Database user created root@ubuntu16-SWLC:~# systemctl start eltex-ngw # Выполнить проверку наличия бд eltex_ngw root@ubuntu16-SWLC:~# mysql -uroot -proot -e "show databases like 'eltex_ngw'" +----------------------+ | Database (eltex_ngw) | +----------------------+ | eltex_ngw | +----------------------+
Если база данных mysql находится на хосте отличном от того, где установлен eltex-ngw, то сначала необходимо указать внешний адрес бд в application.conf и только после этого выполнять создание пользователя и базы данных.
Миграция
После успешного выполнения подготовительных работ можно приступать к непосредственно самой миграции базы данных
Для получения справки можно запустить скрипт с ключом help, пример:
python3 /usr/lib/eltex-ngw/migrate_mongo_to_mysql.py --help
--mysql-url доступ до бд mysql , где указывается адрес сервера с mysql, логин и пароль для доступа к бд, пример:
--mysql-url mysql://javauser:javapassword@127.0.0.1:3306/eltex_ngw
--mongodb-url доступ до бд mongo, пример:
--mongodb-url mongodb://127.0.0.1:27017/notification-gw
Если mongo состоит из кластера и есть авторизация, то нужно указать все ноды в кластере и логин-пароль в коннекторе
--mongodb-url mongodb://eltex:eltex@10.100.7.86:27017,10.100.7.87:27017,10.100.7.88:27017
Пример выполнения миграции с локальной инсталляцией бд монго и mysql
(database_migration) root@ubuntu16-SWLC:~/deb# python3 /usr/lib/eltex-ngw/migrate_mongo_to_mysql.py --mongodb-url mongodb://127.0.0.1:27017/notification-gw --mysql-url mysql://javauser:javapassword@127.0.0.1:3306/eltex_ngw Migrating outgoingSms collection Total documents: 156 [############################################################] 100.0% ...Completed Migrating emails collection Total documents: 35 Migrating fsfiles.files collection Total documents: 14 Migrating fsfiles.chunks collection Total documents: 34 Migrating incomingEvents collection Total documents: 0 Migration completed.
После успешного выполнения миграции нужно выполнить перезапуск сервиса eltex-ngw и деактивацию виртуальной среды python venv:
(database_migration) root@ubuntu16-SWLC:~/deb# deactivate root@ubuntu16-SWLC:~/deb# root@ubuntu16-SWLC:~# systemctl restart eltex-ngw