Обновление системы ARTA SYNERGY

Для обновления системы необходимо выполнить команду:

aptitude update
aptitude install arta-synergy-synergy

Также необходимо просмотреть изменения в конфигурационных файлах, заменить на новые, оставить старые. Этот шаг обычно вызывает большую часть ошибок, т.к. конфигурации зачастую сильно отличаются. При обновлении пакета администратору будут поочередно показаны конфигурационные файлы, которые отличаются от тех, что в пакете. Для каждого файла будет предложен новый вариант конфигурационного файла, с возможностью заменить, отказаться от замены и просмотреть разницу между файлами.

Для манипуляции файлами конфигурации пакеты arta-synergy-* используют механизм Debian conffiles. Более подробно о нем можно прочитать здесь: https://raphaelhertzog.com/2010/09/21/debian-conffile-configuration-file-managed-by-dpkg/

Замечание:

Перед обновлением конфигурационного файла рекомендуется создать его резервную копию.

В процессе обновления вам будет задана часть вопросов из секции установки (такие, как пароль к БД), а также будет предложено очистить временные файлы сервера приложений (это настоятельно рекомендуется сделать).

Иногда после обновления нужно выполнить актуализацию версии базы данных (БД), процессов и индексов системы.

Об особенностях процедуры обновления до версии 3.15

В версии Synergy 3.15 используемая СУБД была заменена с MySQL Server 5.5 на Percona Server 5.7, а также были произведены значительные изменения в структуре баз данных. В связи с этим вам необходимо запланировать время для обновления, так как оно может занять несколько часов (время зависит от размера вашей базы данных).

Перед обновлением

Обновление должно производиться в два этапа:

  1. Замена и обновление версии СУБД

  2. Обновление пакетов Synergy и запуск штатного обновления БД

Внимание!

Перед заменой СУБД и её обновлением необходимо обязательно сделать резервную копию данных.

Перед заменой СУБД мы рекомендуем вынести из /etc/mysql/my.cnf настройки, которые были добавлены вами вручную, в отдельный файл /etc/mysql/conf.d/custom.cnf, оставив в оригинальном файле только настройки по умолчанию. При этом вам нужно свериться с файлом /etc/mysql/conf.d/arta_synergy_performance.cnf, так как файлы в каталоге /etc/mysql/conf.d считываются в лексикографическом (алфавитном) порядке, и вы можете переопределить настройки производительности базы данных для Synergy. В случае сомнений мы рекомендуем убрать собственное переопределение и использовать параметры из /etc/mysql/conf.d/arta_synergy_performance.cnf.

Кроме того, обратите внимание на настройки, которые были изменены, переименованы либо удалены из MySQL 5.6 и MySQL 5.7. Необходимо откорректировать, заменить или исключить такие настройки, если они у вас имеются.

Перед установкой необходимо убедиться, что установлена последняя версия Synergy (3.14 perlis или 3.12 tengri). Если это не так, то необходимо установить последнюю доступную в репозитории версию всех установленных пакетов Synergy:

# aptitude update
# aptitude install ~iarta-synergy

Перед заменой и обновлением СУБД сервер приложений Synergy необходимо остановить:

# /etc/init.d/arta-synergy-jboss stop

Замена и обновление СУБД

Обновление СУБД и данных в ней можно произвести двумя способами:

  1. Логическое обновление: сначала выгрузить данные при помощи mysqldump, удалить БД, обновить программное обеспечение и загрузить данные обратно.

  2. In-place-обновление: обновлять СУБД последовательно с версии на версию и пользоваться при этом инструментом mysql_upgrade для обновления данных.

Мы рекомендуем проводить логическое обновление по следующим причинам:

  • В Percona Server 5.7 (и MySQL 5.7) по умолчанию включена настройка innodb_file_per_table. В процессе обновления при помощи mysql_upgrade многие таблицы будут пересозданы заново и уже в виде .ibd-файлов, однако место в общем tablespace (файл innodb1) освобождено не будет. Таким образом, можно получить двукратное (и бесполезное) увеличение занятого базой дискового пространства

  • Данные в таблицах будут иметь минимальную фрагментацию

  • Вы получаете резервную копию данных, которую можно будет использовать, если что-то пойдет не так

Если по каким-то причинам логическое обновление невозможно (например, большой объём базы данных и длительное время работы mysqldump), можно проводить in-place-обновление.

Подключение репозитория Percona

Для обновления Synergy в первую очередь нужно подключить репозиторий Percona. Сделать это можно двумя способами:

  1. Установить официальный репозиторий Percona:

    Примечание:

    Перед установкой необходимо проверить, что установлен пакет lsb:

    # aptitude install lsb
    

    В терминале выполнить:

    # wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
    # dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
    

    Проверить, что репозиторий был подключен, можно в файле /etc/apt/sources.list.d/percona-release.list.

  2. Альтернативный вариант: подключить зеркало репозитория Percona. Для этого в файл /etc/apt/sources.list нужно добавить строку:

    deb http://deb.arta.kz/percona $debian_release main
    

    Вместо $debian_release необходимо добавить используемую версию Debian. Узнать название используемой версии можно с помощью команды:

    # lsb_release -sc
    

    Далее необходимо добавить ключ, который использует Percona для подписи репозиториев:

    # apt-key adv --keyserver keys.gnupg.net --recv-keys 8507EFA5

    После подключения репозиториев необходимо обновить список пакетов, выполнив команду:

    # aptitude update
    
Логическое обновление

Вначале необходимо снять резервную копию баз данных synergy, jbpmdb и storage:

# cd /var/backups/synergy
# mkdir upgrade_3.15
# cd upgrade_3.15
# for db in synergy jbpmdb storage; do mysqldump --routines -u root -p $db | gzip > $db.sql.gz; done

Далее удалим базы:

# for db in synergy jbpmdb storage; do mysql -u root -p -e "drop schema $db"; done

Установим сервер Percona 5.7, удалим данные из каталога данных MySQL, инициализируем новые данные и установим пароль root.

Ввиду существующей проблемы при обновлении Percona Server до 5.7 с предыдущих версий, нам необходимо будет предварительно удалить пакеты mysql-server-core-5.5 и mysql-server-5.5 без учёта зависимостей:

# dpkg -r --force-all mysql-server-core-5.5 mysql-server-5.5
# aptitude install percona-server-server-5.7
Следующие НОВЫЕ пакеты будут установлены:        
  libmecab2{a} libnuma1{a} percona-server-client-5.7{ab} percona-server-common-5.7{a} percona-server-server-5.7 

[ ... ]

Следующие пакеты имеют неудовлетворённые зависимости:
 mysql-server : Зависит: mysql-server-5.5 но его установка не запланирована.
 percona-server-client-5.7 : Ломает: mysql-client-5.5 но установлен 5.5.55-0+deb7u1 
                             Ломает: virtual-mysql-client который является виртуальным пакетом.
Следующие действия разрешат зависимости:

     Удалить следующие пакеты:
1)     mysql-client-5.5       
2)     mysql-server           



Принять данное решение? [Y/n/q/?] Y

[ ... ]

# /etc/init.d/mysql stop 
# rm /var/lib/mysql/* -rf
# mysqld_safe --user=mysql --datadir=/var/lib/mysql --initialize-insecure
# mysqld_safe --user=mysql --datadir=/var/lib/mysql --skip-grant-tables &
# mysql -u root
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('root') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# killall mysqld
# /etc/init.d/mysql start

Загрузим данные обратно:

# for db in synergy jbpmdb storage; do mysql -u root -proot -e "CREATE SCHEMA $db"; zcat $db.sql.gz | mysql -u root -proot $db; done

Выполним mysql_upgrade

# mysql_upgrade -u root -proot

Обновление завершено.

In-place обновление

Вначале необходимо установить Percona Server 5.6:

# aptitude install percona-server-server-5.6
Следующие НОВЫЕ пакеты будут установлены:        
  libnuma1{a} libperconaserverclient18.1{a} percona-server-client-5.6{ab} percona-server-common-5.6{a} percona-server-server-5.6{b} 

[ ... ]

Следующие пакеты имеют неудовлетворённые зависимости:
 percona-server-server-5.6 : Ломает: mysql-server-5.5 но устанавливается 5.5.55-0+deb7u1.
                             Ломает: mysql-server-core-5.5 но устанавливается 5.5.55-0+deb7u1.
                             Ломает: virtual-mysql-server который является виртуальным пакетом.
 percona-server-client-5.6 : Ломает: mysql-client-5.5 но устанавливается 5.5.55-0+deb7u1.
                             Ломает: virtual-mysql-client который является виртуальным пакетом.
Следующие действия разрешат зависимости:

     Удалить следующие пакеты:
1)     mysql-client-5.5       
2)     mysql-server           
3)     mysql-server-5.5       
4)     mysql-server-core-5.5  



Принять данное решение? [Y/n/q/?] Y

[ ... ]

Выполним mysql_upgrade:

# mysql_upgrade -u root -proot --force

Установим сервер Percona 5.7.

Ввиду существующей проблемы при обновлении Percona Server до 5.7 с предыдущих версий, нам необходимо будет предваритель удалить пакет percona-server-server-5.6 без учёта зависимостей:

# dpkg -r --force-all percona-server-server-5.6
# aptitude install percona-server-server-5.7
Следующие НОВЫЕ пакеты будут установлены:        
  percona-server-client-5.7{ab} percona-server-common-5.7{a} percona-server-server-5.7 
Следующие пакеты будут УДАЛЕНЫ:
  libdbd-mysql-perl{u} libmysqlclient18{u} 

[ ... ]

Следующие пакеты имеют неудовлетворённые зависимости:
 percona-server-client-5.6 : Ломает: virtual-mysql-client который является виртуальным пакетом.
                             Ломает: virtual-mysql-client-core который является виртуальным пакетом.
 percona-server-client-5.7 : Ломает: percona-server-client-5.6 но установлен 5.6.36-82.0-1.wheezy 
                             Ломает: virtual-mysql-client который является виртуальным пакетом.
                             Ломает: virtual-mysql-client-core который является виртуальным пакетом.
Следующие действия разрешат зависимости:

     Удалить следующие пакеты:  
1)     percona-server-client-5.6



Принять данное решение? [Y/n/q/?] Y

[ ... ]

Вновь выполним mysql_upgrade:

mysql_upgrade -u root -proot --force
/etc/init.d/mysql restart

Обновление завершено.

Примечание

В некоторых системах, несмотря на настройку max_connections, количество соединений после запуска MySQL остается 214. Решение этой проблемы подробно описано в разделе Настройка MySQL

Необходимые действия после обновления

После обновления необходимо проверить, что файл /etc/mysql/my.cnf имеет только следующее содержимое:

#
# The Percona Server 5.7 configuration file.
#
#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#   Please make any edits and changes to the appropriate sectional files
#   included below.
#
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/percona-server.conf.d/

Если это не так (например, там содержимое вашего старого my.cnf от MySQL 5.5 с внесенными вами изменениями), то необходимо проделать следующее:

# mv /etc/mysql/my.cnf /etc/mysql/my.cnf.orig
# update-alternatives --install /etc/mysql/my.cnf my.cnf "/etc/mysql/percona-server.cnf" 200
# /etc/init.d/mysql restart

Кроме этого, необходимо установить вспомогательные функции Percona:

# mysql -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'" -u root -proot
# mysql -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'" -u root -proot
# mysql -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'" -u root -proot

Обновление Synergy

После обновления СУБД до 5.7 можно запускать обновление Synergy.

Для этого в /etc/apt/sources.list должен присутствовать репозиторий wilkes:

# grep wilkes /etc/apt/sources.list
deb http://deb.arta.kz/tengri unstable main contrib non-free

Устанавливаем обновление Synergy:

# aptitude install ~iarta-synergy

В случае, если во время обновления возникли ошибки, выполните команду aptitude install -f, которая предложит разрешить проблемы с зависимостями пакетов.

Далее необходимо произвести обновление БД Synergy штатным способом.

Об особенностях процедуры обновления 3.5 и выше

В версии 3.5 была выпущена задача 0300 Мультиязычность системы, в рамках реализации которой было сделано очень много изменений в ядре системы, в частности, в структуре базы данных. В связи с этим обновиться до версии 3.5 можно только с предыдущей версии системы, 3.4.

Замечание:

Для этого обновления нужно обязательно использовать последние ревизии пакетов системы версии 3.4 - они доступны на deb.arta.kz в репозитории «3.4»

Для случая, когда требуется обновление системы с версий старше 3.4 (например, 3.2), мы подготовили специальный репозиторий, которой всегда будет содержать версию системы ARTA Synergy 3.4, актуальную на момент её выпуска и периода поддержки.

Обновления до более высокой версии проводятся аналогично.

Обновление с версии < 3.4 → 3.4 → 3.5

Пример действий, необходимых для обновления ARTA Synergy c версии 3.3 или старше до версии 3.5 с промежуточным обновлением до 3.4:

  • В файле /etc/apt/sources.list временно закомментировать или удалить строки с указанием стабильных репозиториев ARTA Synergy, и добавить туда репозиторий, содержащий версию системы 3.4:

#deb http://deb.arta.kz/tengri stable main contrib non-free
#deb http://deb.arta.kz/tengri stable-updates main contrib non-free

deb http://deb.arta.kz/tengri 3.4 main contrib non-free
  • Обновить список пакетов и обновить систему стандартным способом:

aptitude update
aptitude install arta-synergy-synergy
  • Обновить базу данных, процесссы и индексы

Внимание!

Обновление базы данных может занять длительное время.

  • Убрать репозиторий 3.4 из файла /etc/apt/sources.list и вернуть туда стабильные репозитории ARTA Synergy:

deb http://deb.arta.kz/tengri stable main contrib non-free
deb http://deb.arta.kz/tengri stable-updates main contrib non-free

#deb http://deb.arta.kz/tengri 3.4 main contrib non-free
  • Обновить список пакетов и обновить систему стандартным способом:

aptitude update
aptitude install arta-synergy-synergy
  • Обновить базу данных, процесссы и индексы

Обновление с версии < 3.4 до 3.5, минуя 3.4

Если вы по каким-то причинам обновили систему с версий < 3.4 сразу на 3.5, минуя 3.4, то при попытке обновления базы данных вы увидите следующее сообщение:

Figure 3.7. Ошибка обновления базы данных

Ошибка обновления базы данных

Чтобы исправить данную ситуацию, необходимо произвести понижение версии (downgrade) пакета arta-synergy-synergy. Необходимо проделать следующее:

  • В файле /etc/apt/sources.list временно закомментировать или удалить строки с указанием стабильных репозиториев ARTA Synergy, и добавить туда репозиторий, содержащий версию системы 3.4:

#deb http://deb.arta.kz/tengri stable main contrib non-free
#deb http://deb.arta.kz/tengri stable-updates main contrib non-free

deb http://deb.arta.kz/tengri 3.4 main contrib non-free
  • Обновить список пакетов:

aptitude update
  • Проверить имеющиеся версии пакета arta-synergy-synergy:

apt-cache policy arta-synergy-synergy

Мы получим вывод примерно следующего вида:

arta-synergy-synergy:
  Установлен: 3.5-r1~160401.131002
  Кандидат:   3.5-r1~160401.131002
  Таблица версий:
 *** 3.5-r1~160401.131002 0
        100 /var/lib/dpkg/status
     3.4-r10 0
        500 http://deb.arta.kz/tengri/ 3.4/non-free amd64 Packages

Мы видим, что в системе на данный момент установлена версия 3.5-r1~160401.131002 пакета arta-synergy-synergy, а установить из репозитория можно версию 3.4-r10

  • Устанавливаем пакет arta-synergy-synergy с явным указанием версии:

aptitude install arta-synergy-synergy=3.4-r10

В результате возможно получить вывод следующего вида:

Следующие пакеты будут обновлены:                
  arta-synergy-synergy{b} 
1 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 7 пакетов не обновлено.
Необходимо получить 590 MB архивов. После распаковки 0 B будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
 arta-synergy-synergy : Зависит: arta-synergy-deps (< 3.5) но установлен 3.5-r1~160210.110622 
                        Зависит: arta-synergy-esb (< 3.5) но установлен 3.5-b674 
                        Зависит: arta-synergy-indexator (< 3.5) но установлен 3.5-b658 
Следующие действия разрешат зависимости:

     Удалить следующие пакеты:
1)     arta-synergy-synergy   

Принять данное решение? [Y/n/q/?]

Необходимо отказываться от решений (нажимать n) до тех пор, пока aptitude не предложит снизить версию у зависимостей:

Следующие действия разрешат зависимости:

     Установить более старую версию для следующих пакетов:                         
1)     arta-synergy-deps [3.5-r1~160210.110622 (now) -> 3.4-r5~160210.110622 (3.4)]
2)     arta-synergy-esb [3.5-b674 (now) -> 3.4-b619 (3.4)]                         
3)     arta-synergy-indexator [3.5-b658 (now) -> 3.4-b603 (3.4)]                   



Принять данное решение? [Y/n/q/?]

Это решение нужно принять (нажать Y).

  • Обновить базу данных, процесссы и индексы

Внимание!

Обновление базы данных может занять длительное время.

  • Убрать репозиторий 3.4 из файла /etc/apt/sources.list и вернуть туда стабильные репозитории ARTA Synergy:

deb http://deb.arta.kz/tengri stable main contrib non-free
deb http://deb.arta.kz/tengri stable-updates main contrib non-free

#deb http://deb.arta.kz/tengri 3.4 main contrib non-free
  • Обновить список пакетов и обновить систему стандартным способом:

aptitude update
aptitude install arta-synergy-synergy
  • Обновить базу данных, процесссы и индексы