Краткое описание
В этой статье будет описано, как обновить старые версии EMS (до версии 3.35), до актуальных с конвертацией баз данных.
Первый шаг создание backup баз данных:
Этот шаг выполняется на сервере с устаревшей версией EMS
Для создания backup баз данных перейдите в папку /var/ems-backup и выполните скрипт main-dump-rotate.sh:
cd /var/ems-backup sudo ./main-dump-rotate.sh 127.0.0.1 3306 javauser javapassword 10
127.0.0.1 - ip адрес сервера где хранятся базы данных(по умолчанию 127.0.0.1)
3306 - порт взаимодействия с mysql
javauser/javapassword - login и пароль для доступа к mysql
10 - количество дней больше которых предыдущие файлы будут удалены
Скрипт нужно выполнять указав пользователя javauser. Иначе может возникнуть ошибке при выгрузке таблиц из баз данных
файл будет создан в папке /var/ems-backup/main с именем:
eltex-ems-backup.[дата и время создания].gz
В дамп будет записаны все базы данных EMS и ACS
Шаг второй загрузка и конвертация баз данных:
Этот шаг выполняется на сервере с новой версией EMS
до версии 3.35 в EMS использовались базы данных mysql, далее используется mariadb. Команды для этих баз данных идентичны, но есть проблемы при конвертации для определенных версий.
Конвертация происходит путем загрузки backup в актуальную версию баз данных.
Делается это при помощи скрипта ems-restore.sh. в папке /var/ems-backup/main.
Для начала, нужно переместить файл backup в папку со скриптом:
mv [имя backup] /var/ems-backup/main cd /var/ems-backup/main sudo ./ems-restore.sh [имя backup]
Шаг третьий устранение ошибок
После загрузки backup может возникнуть ошибка расхождения схем заполнения таблиц баз данных. об этом может соответствовать то, что при попытке запустить апплет сервис eltex-ems будет переходить в статус inactive, и в файле /var/log/eltex-ems/black_box.txt будет сообщение подобного содержания:
[main] ERROR Kernel Server$1.print(line:371). [ EltexException (EltexException.SERVER) : codeError = 1; msg = 'Invalid version '46' of 'eltex_ems' schema. Should be '55'. Please, update eltex-ems-db packet.'; infoObject = 'null' ]
Ошибка исправляется переустановкой пакета eltex-ems-db:
Для того чтобы понять какой версии были установлены пакеты eltex-ems используйте команду:
sudo apt list eltex-ems
Будет выведена следующая информация:
Listing... Done eltex-ems/now 3.35-13244 all [installed,local]
В приведенном примере используется версия 3.35-13244
После определения версии установленного пакета, переходим на сайт eltex-ems-db и находим необходимую версию.
После загрузки пакета на сервер или виртуальную машину установить пакет:
sudo dpkg -i eltex-ems-db_3.35-13244_all.deb sudo dpkg -i eltex-ems_3.35-13244_all.deb
При обновлении со старых версий EMS может возникнуть проблема не корректного отображения или полного отсутствия дерева у пользователей с ролью отличающейся от Superuser.
Для устранения проблемы на сервере нужно выполнить команды:
sudo mysql -uroot -proot -e "INSERT INTO eltex_ems.DOMAINS VALUES (1,0,'root',NULL,'63a9f0ea7bb98050796b649e85481845','root');" sudo service eltex_ems restart
после чего в настройках роли в графическом интерфейсе назначить домен для роли у которой наблюдается проблема.
Может появится ошибка связанная с отсутствием параметра 4 из-за чего не отображаются alarm:
2025-11-19T04:10:48,656 [AlertStoreHandler] ERROR DB EventDB.storeNewAlerts(line:246). SQL error. alerts = [[ AlertEltex : ID=-1; alertType=Trap; code=alert; subcode=SNMP_TRAP; message='Slot 1 PLC8: optical channel 0 has active ONTs'; createDate='19.11.2025 04:10:48'; status=FINISHED; priority=INFO ] [ SimpleSystemAlert : storeToDB=true; alarmFlag=0 ] [ OidAlert : sourceIp=192.168.128.75; sourceName='satt-srb-subotica-olt-3'; sourceId=51; sourceType=MA4000; additionalTrapRuleProcess=false; messageOID=1.3.6.1.4.1.35265.1.22.100.4.14; meanParamText=false; paramText='null'; finishedMode='AUTO'; finishedSource='AUTO'; finishedDate=19.11.2025 04:10:48'; normOids=[1.3.6.1.4.1.35265.1.22.100.3.14]; messageDescription=PLC, slot 1: Channel0 has ONTs now; birthdayDate=Wed Nov 19 04:10:48 CET 2025 ][ SnmpAlert : requestId=932715204; trapUpTime=2533418783'; messageId='0'; MessageParam1=0*; MessageParam2=0; MessageParam3=1; isMeanParam3=true; MessageParam4=0; isMeanParam4=false; MessageExState='0'; ProcessDate=''; ProcessUser='null'; ProcessMaxDelay='0'; FinishedNote='null'; AlwaysClosedFlag=false; TransmitToGUI=N'; DeliverToTl1=N ]]
java.sql.BatchUpdateException: Unknown column 'MESSAGE_PARAM4' in 'field list'
at jdk.internal.reflect.GeneratedConstructorAccessor59.newInstance(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?]
at java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[?:?]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:403) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.Util.getInstance(Util.java:386) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1154) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1835) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1319) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:954) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128) ~[HikariCP-3.4.5.jar!/:?]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java) ~[HikariCP-3.4.5.jar!/:?]
at org.eltex.ems.web.server.db.EventDB.storeNewAlerts(EventDB.java:228) ~[classes!/:3.41-16939 (18.11.25 13:32:29)]
at org.eltex.ems.web.server.alert.AlertStoreHandler.handle(AlertStoreHandler.java:142) ~[classes!/:3.41-16939 (18.11.25 13:32:29)]
at org.eltex.ems.web.common.pool.ObjectHandler.run(ObjectHandler.java:371) ~[ems_common.jar!/:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'MESSAGE_PARAM4' in 'field list'
at jdk.internal.reflect.GeneratedConstructorAccessor58.newInstance(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?]
at java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[?:?]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:403) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.Util.getInstance(Util.java:386) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1915) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2136) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1813) ~[mysql-connector-java-5.1.49.jar!/:5.1.49]
... 8 more
устранить такую проблему можно применением команды в mysql:
sudo mysql -e "alter table eltex_alert.ALERT_TABLE add column MESSAGE_PARAM4 int(10);"
После необходимо перезагрузить сервис eltex-ems
Backup с помощью mysqldump
В качестве альтренативного метода бекапа баз EMS можно воспользоваться утилитой mysqldump.
Ниже приведена команда для формирования бекапа EMS-таблиц.
sudo mysqldump -uroot -proot --databases Syslog eltex_alert eltex_ems eltex_ont wireless --lock-tables=false > dump1.sql
Если требуется сделать бекап ACS-, то просьба добавить к перечисленным в команде таблцам ещё acscmds, acsinf, acscache, acsmain
В результате его выполнения будет сформирован файл, хранящий бекап баз данных EMS dump1.sql. Его необходимо переместить в любую директорию на новом сервере. К примеру в домашнюю папку.
Затем на новом сервере нужно будет загрузить таблицы из файла dump1.sql и перезапустить службы eltex-ems и mysql :
sudo mysql -uroot -proot < dump1.sql sudo service mysql restart sudo service eltex-ems restart
В случае, если после этих действией служба eltex-ems будет запускаться с ошибкой и будет иметь статус, отличный от running, просьба выполнить действия из третьего шага:
sudo dpkg -i eltex-ems-db_3.35-13244_all.deb sudo dpkg -i eltex-ems_3.35-13244_all.deb sudo service eltex-ems restart
В качестве резльтата ожидается корректный старт службы eltex-ems с последущющей проверкой с помощью аплета.

