2.8. Обновление кластера
В этом разделе описан процесс обновления базы данных Shardman до более новой версии. Перед обновлением рекомендуется посмотреть Замечания к выпуску и найти те изменения, которые могут вызвать проблемы с вашим приложением. Если нет потенциальных проблем, можно перейти к обновлению.
Процесс обновления Shardman состоит из нескольких шагов, которые необходимо выполнять последовательно:
Обновить пакеты Shardman.
Перезапустить все службы Shardman и экземпляры базы данных.
Обновить расширение базы данных 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 не будет взаимодействовать с сервером.