18.6. Обновление кластера Postgres Pro #
В этом разделе описан процесс обновления базы данных Postgres Pro Shardman до более новой версии. Перед обновлением рекомендуется посмотреть Замечания к выпуску и найти те изменения, которые могут вызвать проблемы с вашим приложением. Если нет потенциальных проблем, можно перейти к обновлению.
Процесс обновления Postgres Pro Shardman состоит из нескольких шагов, которые необходимо выполнять последовательно:
Обновить пакеты Postgres Pro Shardman.
Перезапустить все службы Postgres Pro Shardman и экземпляры базы данных.
Обновить расширение базы данных shardman.
18.6.1. Обновление пакетов #
18.6.1.1. Системы с пакетным менеджером APT #
Для обновления пакетов обычно достаточно выполнить следующую команду:
$
apt update && apt --only-upgrade install shardman-tools shardman-services postgrespro-sdm-17-contrib postgrespro-sdm-17-server
или обновить все пакеты в системе:
$
apt update && apt upgrade
Проверьте, что на каждом узле обновлены все пакеты:
$
dpkg -l | grep -E '(postgres pro|shardman)'
18.6.1.2. RPM-системы #
Для обновления пакетов обычно достаточно выполнить следующую команду:
$
yum update shardman-tools shardman-services postgrespro-sdm-17-contrib postgrespro-sdm-17-server
или обновить все пакеты в системе:
$
yum update
Проверьте, что на каждом узле обновлены все пакеты:
$
yum list --installed | grep -E '(postgrespro|shardman)'
18.6.2. Перезапуск служб Postgres Pro 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
18.6.3. Обновление расширения #
После перезапуска служб кластера следует обновить расширения сервера, выполнив следующую команду:
$
shardmanctl --cluster-name cluster0 --store-endpoints http://etcd1 :2379,http://etcd2:2379,http://etcd3:2379 upgrade
Если версия расширения shardman и версия библиотеки на сервере различаются, распределённые запросы и Postgres Pro Shardman DDL не будут работать.
Расширения Postgres Pro Shardman стараются предотвратить взаимодействие с несовместимым программным обеспечением. Несовместимости могут возникать по нескольким причинам: версия общей библиотеки shardman не соответствует версии расширения или версия удалённого сервера не соответствует версии локального сервера. В случае несовпадения версий расширения и библиотеки, Postgres Pro Shardman не сможет изменить свои метаданные и не будет выполнять операции над глобальными объектами, пока расширение не будет обновлено. Если версия удалённого сервера не совпадает с версией локального сервера или они принадлежат разным кластерам, Postgres Pro Shardman не будет взаимодействовать с сервером.
18.6.4. Обновление данных с применением репликации #
Методы логической репликации также могут применяться для создания резервного сервера с обновлённой версией Postgres Pro. Это возможно благодаря тому, что логическая репликация поддерживается между разными основными версиями Postgres Pro. Резервный сервер может располагаться как на том же компьютере, так и на другом. Как только синхронизация с главным сервером (где работает старая версия Postgres Pro) будет завершена, можно сделать главным новый сервер, а старый экземпляр базы данных просто отключить. При таком переключении обновление возможно осуществить, прервав работу сервера всего на несколько секунд.
Этот вариант обновления можно осуществить, используя как встроенные средства логической репликации, так и внешние системы логической репликации, такие как pglogical, Slony, Londiste и Bucardo.