2.8. Обновление кластера

В этом разделе описан процесс обновления базы данных Shardman до более новой версии. Перед обновлением рекомендуется посмотреть Замечания к выпуску и найти те изменения, которые могут вызвать проблемы с вашим приложением. Если нет потенциальных проблем, можно перейти к обновлению.

Процесс обновления Shardman состоит из нескольких шагов, которые необходимо выполнять последовательно:

  1. Обновить пакеты Shardman.

  2. Перезапустить все службы Shardman и экземпляры базы данных.

  3. Обновить расширение базы данных shardman.

2.8.1. Обновление пакетов

2.8.1.1. Системы с пакетным менеджером APT

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

$ apt update && apt --only-upgrade install shardman-tools shardman-services postgrespro-sdm-14-contrib postgrespro-sdm-14-server

или обновить все пакеты в системе:

$ apt update && apt upgrade

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

$ dpkg -l | grep -E '(postgres pro|shardman)'

2.8.1.2. RPM-системы

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

$ yum update shardman-tools shardman-services postgrespro-sdm-14-contrib postgrespro-sdm-14-server

или обновить все пакеты в системе:

$ yum update

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

$ yum list --installed | grep -E  '(postgrespro|shardman)'

2.8.2. Перезапуск служб Shardman и экземпляров баз данных

После обновления пакетов необходимо перезапустить все службы кластера. Это можно сделать одной командой shardmanctl restart:

$ shardmanctl --cluster-name cluster0 --store-endpoints http://etcd1:2379,http://etcd2:2379,http://etcd3:2379 restart

Можно пропустить параметры --cluster-name и --store-endpoints, установив переменные среды SDM_CLUSTER_NAME и SDM_STORE_ENDPOINTS, как в примере ниже:

                    export SDM_STORE_ENDPOINTS=http://etcd1:2379,http://etcd2:2379,http://etcd3:2379
                    export SDM_CLUSTER_NAME=cluster0
                

2.8.3. Обновление расширения

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

$ shardmanctl --cluster-name cluster0 --store-endpoints http://etcd1 :2379,http://etcd2:2379,http://etcd3:2379 upgrade

Если версия расширения shardman и версия библиотеки на сервере различаются, распределённые запросы и Shardman DDL не будут работать.

Расширения Shardman стараются предотвратить взаимодействие с несовместимым программным обеспечением. Несовместимости могут возникать по нескольким причинам: версия общей библиотеки shardman не соответствует версии расширения или версия удалённого сервера не соответствует версии локального сервера. В случае несовпадения версий расширения и библиотеки, Shardman не сможет изменить свои метаданные и не будет выполнять операции над глобальными объектами, пока расширение не будет обновлено. Если версия удалённого сервера не совпадает с версией локального сервера или они принадлежат разным кластерам, Shardman не будет взаимодействовать с сервером.