или из dump'а поднять базу?
Задача такая: необходимо после автотестов на базе восстанавливать все в состояние до автотестов. Сейчас сделано через копию в класстере. Т. Е. Есть в кластере бд my_bd_backup и есть просто my_bd, соответственно до автотестов этот _backup удаляется и заново создаётся через create db with template my_db, а после автотестов происходит удаление my_db и create db with template my_db_backup. Отдельно все гранты подтягиваются, если что.
Быть может кто то может подсказать как лучше?
Важно чтобы максимально быстро отрабатывал скрипт. И в целом текущая реализация норм или ересь?
Можете посмотреть сюда: https://github.com/postgres-ai/database-lab-engine/blob/master/translations/README.russian.md Сам еще не пробовал, руки не дошли, но выглядит заманчиво.
Спасибо! Ознакомлюсь, выглядит интересно . Дополнил вышк вопрос: все должно быть реализовано дефолтными средствами постгриса
Почти (?) всегда быстрее должен быть вариант с template (да и восстановление дампа тоже же включает в себя создание базы из template0, кстати, хоть она и маленькая). > И в целом текущая реализация норм или ересь? По-моему, нормальная. Быстрее именно штатными средствами вряд ли что-то можно придумать.
Для автотэстов удалять что-то с именем _backup — это ужэ заявка на победу! Впрочем, автоматически удалять базу, которая сколько-то времени была рабочей (пока шли автотэсты) —ещё веселее.
У кластера раз в день снимается нормальный basebackup до автотестов и этих скриптов, этот _backup нужен только для автотестов и этот кластер только для тестеров, он не боевой. Автоматически удаляется только если все тесты прошли успешно, если нет, то не удаляется. Да и в целом какой смысл рассчитывать на _backup как на нормальный бекап, если это внутри кластера?
Непонятно, зачем база, изнасилованная автотэстами — становится новой базой для всего. Основой для запуска автотэстов, по идее, должна быть достаточно точная копия прода, в который будет выкачен потом этот код — а не что-то, в чём ужэ прошли миграцыи и куча отломанного автотэстером.
В котором проходили автотэсты. В общем, вы или неправильно описываете, или неправильно придумали эту логику. В обоих случаях, кажэтся, имеет прямой смысл подумать над более говорящими названиями.
В бекапе не проходили тесты. 1 итерация создаем бекап до тестов 2 итерация удаляем то что наломали и создаем заново из бекапа 3 итерация обновляем бекап (ручные тестировщики ввели данные для тестов, но без самиз тестов. Просто данные) 4 итерация удаляем наломанное создаем заново из бекапа Если автотесты не прошли - даем комент к базе и ничего не удаляем
Это описание ещё менее понятно, чем первое.
Обсуждают сегодня