Обновление до v26.04
Обновление на v26.04 должно обязательно выполняться с версии v25.12.5.
В версии v26.04 обновлена версия PostgreSQL, поэтому при обновлении MITIGATOR требуется удалить базу данных и восстановить ее из полной резервной копии. Скрипт для создания полной резервной копии базы данных включен в поставку версии v25.12.5.
Подготовка к обновлению
-
Обновите все экземпляры MITIGATOR до версии v25.12.5 согласно стандартной процедуре.
-
После запуска MITIGATOR на версии v25.12.5 дождитесь сообщения
database system is ready to accept connections, нажмите Ctrl+C. -
Создайте резервную копию базы данных на экземпляре MITIGATOR, на котором база данных в статусе Primary:
ВниманиеДля создания резервной копии используйте приведенную ниже команду, в которой указан
backup_all.
Применение стандартной команды из статьи Резервное копирование НЕ перенесет все необходимые данные.docker-compose exec postgres sh -c 'backup_all > /tmp/backup_all.sql' docker cp $(docker-compose ps -q postgres):/tmp/backup_all.sql . -
Убедитесь, что резервная копия создалась без ошибок:
tail backup_all.sqlВ выводе не должно быть сообщений
error. -
Остановите все экземпляры MITIGATOR (сначала со Standby базой, потом с Primary):
docker-compose down
Обновление до v26.04
-
На всех экземплярах запишите в файл
.envстроку с версией:VERSION=v26.04.XЗдесь
X– целевая минорная версия. -
На всех экземплярах загрузите актуальный Compose-файл:
wget https://docs.mitigator.ru/master/dist/docker-compose.yml -O docker-compose.yml -
На всех экземплярах обновите содержимое файлов
docker-compose.failover.ymlиdocker-compose.worker.failover.yml, если они используются.Если в переменной
COMPOSE_FILEфайла.envуказаныdocker-compose.failover.ymlилиdocker-compose.worker.failover.yml, то обновите их:wget https://docs.mitigator.ru/master/dist/multi/docker-compose.failover.yml -O docker-compose.failover.yml && \ wget https://docs.mitigator.ru/master/dist/multi/docker-compose.worker.failover.yml -O docker-compose.worker.failover.ymlЕсли ранее в раздел
command:сервисаpgfailoverвносились изменения, например для использования более двух баз данных, то вручную перенесите эти изменения в обновленные файлыdocker-compose.failover.ymlиdocker-compose.worker.failover.yml:- список серверов (ранее
-server) перенесите вdocker-compose.override.yml, переопределивPGFAILOVER_SERVERS; - число попыток подключения (ранее
-attempts) задайте в.envкакMITIGATOR_PGFAILOVER_ATTEMPTS; - интервал проверки роли сервера (ранее
-interval) задайте в.envкакMITIGATOR_PGFAILOVER_INTERVAL.
Пример
docker-compose.override.ymlдля трёх серверов:services: pgfailover: environment: PGFAILOVER_SERVERS: | postgres://repuser@${SERVER1}:5432/mitigator?sslmode=disable&connect_timeout=5 postgres://repuser@${SERVER2}:5432/mitigator?sslmode=disable&connect_timeout=5 postgres://repuser@${SERVER3}:5432/mitigator?sslmode=disable&connect_timeout=5ИнформацияВ
.envфайлеdocker-compose.override.ymlпоместите в конецCOMPOSE_FILE: его настройки должны иметь приоритет над настройками из предыдущих файлов.Подробнее — в инструкции по настройке отказоустойчивого хранилища.
- список серверов (ранее
-
На всех экземплярах в файле
.envудалите переменнуюMITIGATOR_OWN_INDEX. -
На всех экземплярах скачайте новые образы:
docker-compose pull -
На экземпляре MITIGATOR, на котором база данных в статусе Primary, удалите базу данных:
docker volume rm mitigator_postgres -
На экземпляре MITIGATOR, на котором база данных в статусе Primary, запустите временный контейнер Postgres:
docker-compose run -d --rm --name postgres_idle postgres idle -
На экземпляре MITIGATOR, на котором база данных в статусе Primary, откройте логи Postgres:
docker logs -f postgres_idle -
На экземпляре MITIGATOR, на котором база данных в статусе Primary, дождитесь сообщения
database system is ready to accept connections, нажмите Ctrl+C. Сообщенияrole "repuser" does not existигнорируйте. -
На экземпляре MITIGATOR, на котором база данных в статусе Primary, перенесите бэкап в контейнер и восстановите данные:
docker cp backup_all.sql postgres_idle:/tmp/ && \ docker exec postgres_idle sh -c 'psql mitigator </tmp/backup_all.sql >/tmp/restore.log' -
Остановите временный контейнер Postgres и запустите основной сервис:
docker stop postgres_idle && \ docker-compose up -d postgres && \ docker-compose logs -f postgres -
Дождитесь сообщения
database system is ready to accept connections, нажмите Ctrl+C. -
На экземплярах MITIGATOR, на которых база данных в статусе Standby, удалите базу данных:
docker volume rm mitigator_postgres -
На экземплярах MITIGATOR, на которых база данных в статусе Standby, выполните инициализацию базы данных:
docker-compose run --rm -e PGPORT=15432 postgres standby -
Запустите экземпляр MITIGATOR, на котором база данных в статусе Primary:
docker-compose up -d -
После запуска дождитесь выполнения всех миграций и пролития настроек.
-
Запустите остальные экземпляры MITIGATOR:
docker-compose up -d