Обновление до v26.04
Обновление на v26.04 должно обязательно выполняться с версии v25.12.5.
В версии v26.04 обновлена версия PostgreSQL, поэтому при обновлении MITIGATOR требуется удалить базу данных и восстановить ее из полной резервной копии. Скрипт для создания полной резервной копии базы данных включен в поставку версии v25.12.5.
Подготовка к обновлению
-
Обновите все экземпляры MITIGATOR до версии v25.12.5 согласно стандартной процедуре.
-
После запуска MITIGATOR на версии v25.12.5 дождитесь выполнения всех миграций и пролития настроек.
-
Создайте резервную копию базы данных на экземпляре 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, то обновите их:Из секции pgfailover удалите:
volumes: - failover:/trigger:rwИз секции postgres удалите:
volumes: - failover:/failover:rwВ конце файла удалите секцию volumes:
volumes: failover:Если файлы
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 -
На всех экземплярах скачайте новые образы:
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