Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Миграция производится при обновлении 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







  • Нет меток