Перейти к содержимому


Фото
- - - - -

Ошибка при обновлении сервера DRWEB ES10 до версии ESS11


  • Please log in to reply
11 ответов в этой теме

#1 d.ch

d.ch

    Newbie

  • Posters
  • 5 Сообщений:

Отправлено 10 Январь 2019 - 18:29

Добрый день,

 

Upgrade существующей базы при обновлении сервера завершается с ошибкой:

 

Database already exists.
Upgrading existing database (if required) ...
ERROR: Database xmlupimportdb failed.
Installation failed.
 

в /var/drwcs/log/drwcsd.log ошибка:

 

20190110.225300.87 ERR [18863] main   [PgSQL/1] ERROR: length for type varchar must be at least 1, position 116, 00.021, CREATE TABLE alert_settings( settings_set CHARACTER VARYING(36) NOT NULL,name CHARACTER VARYING(45) NOT NULL,value CHARACTER VARYING(0) DEFAULT '', PRIMARY KEY(settings_set, name) )
 

дистрибутив сервера drweb-11.00.1-201811120-esuite-server-unix-freebsd-i686.tar.gz.run



#2 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 3 164 Сообщений:

Отправлено 10 Январь 2019 - 18:36

Тут нужен database.gz откуда-то из /var/tmp/drwcs. В нём могут содержаться сведения, которые Вы не хотите распространять, так что можно либо пойти с этим в техподдержку, либо поделиться файлом в личку сотрудника.

Либо, как вариант, поправить этот бэкап вручную.

Либо вообще установиться без бэкапа, если БД в постгресе жива, заново настроить соединение с постгресом, остановить сервер и выполнить /usr/local/drwcs/drwcs.sh upgradedb.


Сообщение было изменено Afalin: 10 Январь 2019 - 18:37

Семь раз отрежь – один раз проверь

#3 d.ch

d.ch

    Newbie

  • Posters
  • 5 Сообщений:

Отправлено 11 Январь 2019 - 16:47

Либо вообще установиться без бэкапа, если БД в постгресе жива, заново настроить соединение с постгресом, остановить сервер и выполнить /usr/local/drwcs/drwcs.sh upgradedb.

Пошел по этому пути, запустил сервер, в drwcsd.log получил сообщения:
20190111.151759.49 ERR [16772] wrk:5  [Proto/Common] tcp://xx.xx.xx.xx client detected protocol violation "invalid server signature"
в консоли все станции "отключены".
Если правильно понимаю, дело в новых открытых ключах шифрования сервера, которых нет у клиентов.
В Руководстве по установке написано - "Начиная с 11 версии Сервера открытый ключ используется для связи с клиентами предыдущих версий.
Остальной функционал перенесен на сертификат, который, в том числе, содержит в себе открытый ключ шифрования."
Т.е. старые клиенты используют drwcsd.pub, а новые drwcsd-certificate.pem,
и надо бы эти файлы подложить Агентам, но не смог понять где они должны быть, на рабочем компьютере с Агентом версии 11 не нашел ни того не другого.
 

Либо, как вариант, поправить этот бэкап вручную.

Если поправить вручную процесс завершается с той же ошибкой
ERROR: Database xmlupimportdb failed.
но по другой причине -- database.gz содержит хэш и xmlupimportdb не принимает измененный файл.



#4 Dmitry_rus

Dmitry_rus

    Massive Poster

  • Helpers
  • 2 769 Сообщений:

Отправлено 11 Январь 2019 - 17:01

Т.е. старые клиенты используют drwcsd.pub, а новые drwcsd-certificate.pem, и надо бы эти файлы подложить Агентам, но не смог понять где они должны быть, на рабочем компьютере с Агентом версии 11 не нашел ни того не другого.
Потому что они на сервере хранятся. Можно, конечно, положить в расшаренную директорию. А потом прицепить Агентов. Например, как здесь:

https://forum.drweb.com/index.php?showtopic=331058



#5 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 3 164 Сообщений:

Отправлено 11 Январь 2019 - 21:13

20190111.151759.49 ERR [16772] wrk:5  [Proto/Common] tcp://xx.xx.xx.xx client detected protocol violation "invalid server signature"
в консоли все станции "отключены".
Если правильно понимаю, дело в новых открытых ключах шифрования сервера, которых нет у клиентов.

Нет, нужно притащить из старого бэкапа drwcsd.pri в /var/drwcs/etc/ и сгенерировать с него сертификат – /usr/local/drwcs/drwsign gencert -private-key /var/drwcs/etc/drwcsd.pri /var/drwcs/etc/drwcsd-certificate.pem, cp /var/drwcs/etc/drwcsd-certificate.pem /usr/local/drwcs/webmin/install, если не наврал с путями. Хотя да, лучше это до upgradedb сделать, я этот момент не указал сразу. Но не принципиально.


Семь раз отрежь – один раз проверь

#6 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 3 164 Сообщений:

Отправлено 11 Январь 2019 - 21:14

Если поправить вручную процесс завершается с той же ошибкой
ERROR: Database xmlupimportdb failed.
но по другой причине -- database.gz содержит хэш и xmlupimportdb не принимает измененный файл.

Хэш можно тоже поправить.

Только тут вопрос, что именно и как Вы изменили.


Семь раз отрежь – один раз проверь

#7 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 3 164 Сообщений:

Отправлено 11 Январь 2019 - 21:15

Т.е. старые клиенты используют drwcsd.pub, а новые drwcsd-certificate.pem, и надо бы эти файлы подложить Агентам, но не смог понять где они должны быть, на рабочем компьютере с Агентом версии 11 не нашел ни того не другого.
Потому что они на сервере хранятся. Можно, конечно, положить в расшаренную директорию. А потом прицепить Агентов. Например, как здесь:

https://forum.drweb.com/index.php?showtopic=331058

Не потому, и вариант по ссылке – крайний, когда закрытый ключ утерян.


Семь раз отрежь – один раз проверь

#8 d.ch

d.ch

    Newbie

  • Posters
  • 5 Сообщений:

Отправлено 13 Январь 2019 - 06:54

 

20190111.151759.49 ERR [16772] wrk:5  [Proto/Common] tcp://xx.xx.xx.xx client detected protocol violation "invalid server signature"
в консоли все станции "отключены".
Если правильно понимаю, дело в новых открытых ключах шифрования сервера, которых нет у клиентов.

Нет, нужно притащить из старого бэкапа drwcsd.pri в /var/drwcs/etc/ и сгенерировать с него сертификат – /usr/local/drwcs/drwsign gencert -private-key /var/drwcs/etc/drwcsd.pri /var/drwcs/etc/drwcsd-certificate.pem, cp /var/drwcs/etc/drwcsd-certificate.pem /usr/local/drwcs/webmin/install, если не наврал с путями. Хотя да, лучше это до upgradedb сделать, я этот момент не указал сразу. Но не принципиально.

 

 

Вернул систему в состояние до установки ESS11, поставил ESS с чистой конфигурацией,
настроил подключение к базе postgres, остановил сервер, сделал upgradedb,
скопировал drwcsd.pri от старого сервера в /var/drwcs/etc, сгенерировал сертификат
/usr/local/drwcs/bin/drwsign gencert -private-key=drwcsd.pri drwcsd-certificate.pem
скопировал новый сертификт в репозиторий /var/drwcs/repository/20-drwcs/11020181112000000/common/webmin/install/drwcsd-certificate.pem
заменил в конфигурации drwcsd.conf новый ID сервера на старый, запустил сервер.

Станции получили обновления, ждут перезагрузки, свою перезагрузил, пока все хорошо.

Большое спасибо всем!



#9 d.ch

d.ch

    Newbie

  • Posters
  • 5 Сообщений:

Отправлено 13 Январь 2019 - 07:00

 

Т.е. старые клиенты используют drwcsd.pub, а новые drwcsd-certificate.pem, и надо бы эти файлы подложить Агентам, но не смог понять где они должны быть, на рабочем компьютере с Агентом версии 11 не нашел ни того не другого.
Потому что они на сервере хранятся. Можно, конечно, положить в расшаренную директорию. А потом прицепить Агентов. Например, как здесь:

https://forum.drweb.com/index.php?showtopic=331058

 

Никогда не знал как подключить Агентов после замены адреса сервера.

dwservice -e es.server.address

es-service -e es.server.address     # ESS11

Спасибо!



#10 d.ch

d.ch

    Newbie

  • Posters
  • 5 Сообщений:

Отправлено 14 Январь 2019 - 13:12

 

Если поправить вручную процесс завершается с той же ошибкой
ERROR: Database xmlupimportdb failed.
но по другой причине -- database.gz содержит хэш и xmlupimportdb не принимает измененный файл.

Хэш можно тоже поправить.

Только тут вопрос, что именно и как Вы изменили.

 

 

Судя по ошибке в логе:

20190110.225300.87 ERR [18863] main   [PgSQL/1] ERROR: length for type varchar must be at least 1, position 116, 00.021, CREATE TABLE alert_settings( settings_set CHARACTER VARYING(36) NOT NULL,name CHARACTER VARYING(45) NOT NULL,value CHARACTER VARYING(0) DEFAULT '', PRIMARY KEY(settings_set, name) )

процедуру импорта не устраивает вот эта часть -- value CHARACTER VARYING(0)

 

Экспорт базы database.gz содержит xml, в котором таблица alert_settings выглядит так:
<record>
 <field>1</field>
 <field>0</field>
 <field>36</field>
 <field>alert_settings</field>
 <field>settings_set</field>
 <field>2</field>
 <field></field>
 <field>settings%Sset</field>
</record>
<record>
 <field>2</field>
 <field>0</field>
 <field>45</field>
 <field>alert_settings</field>
 <field>name</field>
 <field>2</field>
 <field></field>
 <field>setting%Sname</field>
</record>
<record>
 <field>3</field>
 <field>0</field>
 <field>0</field>
 <field>alert_settings</field>
 <field>value</field>
 <field>1</field>
 <field></field>
 <field>setting%Svalue</field>
</record>

В SQL-представлении исходная таблица выглядит так:
CREATE TABLE alert_settings (
   settings_set character varying(36) NOT NULL,
   name character varying(45) NOT NULL,
   value text DEFAULT ''::text
);

Т.е. при экспорте/импорте поле value text превращается в value CHARACTER VARYING(0)
Посмотрел как выглядят другие поля text (не более 10 полей) в файле экспорта --
вторая секция <field></field> для таких полей содержит 4 (возможно, есть варианты!)

Заменил этот кусок
<record>
 <field>3</field>
 <field>0</field>
 <field>0</field>
 <field>alert_settings</field>
 <field>value</field>
 <field>1</field>
 <field></field>
 <field>setting%Svalue</field>
</record>

 

на

 

<record>
 <field>3</field>
 <field>4</field>
 <field>0</field>
 <field>alert_settings</field>
 <field>value</field>
 <field>1</field>
 <field></field>
 <field>setting%Svalue</field>
</record>

 

и попытался загрузить, проверка хэша не позволила.



#11 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 3 164 Сообщений:

Отправлено 14 Январь 2019 - 14:46

Да, верно, 4 там должно быть.

Верный хэш в логе засвечивается, потому за два прохода его можно поправить.


Семь раз отрежь – один раз проверь

#12 Kirill Polubelov

Kirill Polubelov

    Forth Thinker

  • Dr.Web Staff
  • 2 813 Сообщений:

Отправлено 14 Январь 2019 - 15:31

d.ch, только весь сервер сразу не переписывайте, постепенно )


(exit 0)



Читают тему: 2

1 пользователей, 1 гостей, 0 скрытых