Managed Postgres поддерживает создание изолированных веток баз данных с использованием восстановления на определённый момент времени (PITR).
Ветка — это полностью независимое развертывание PostgreSQL, созданное из состояния существующей базы данных на определённый момент времени. Ветки можно использовать для разработки, staging, тестирования, отладки, проверки данных или сценариев восстановления — без влияния на исходную базу данных.
В отличие от реализаций copy-on-write, которые используют общее хранилище с основной базой данных, ветки Managed Postgres восстанавливаются из резервных копий и работают как независимые развертывания PostgreSQL.
Создание ветки основано на той же инфраструктуре резервного копирования и восстановления, которая используется для восстановления на определённый момент времени (PITR).
Когда вы создаёте ветку, Managed Postgres восстанавливает базовую резервную копию из объектного хранилища, применяет необходимые сегменты WAL, чтобы достичь указанной точки восстановления, и разворачивает новое развертывание PostgreSQL из восстановленного состояния. После завершения восстановления ветка работает независимо от исходной базы данных.
В результате создаётся полная копия исходной базы данных на выбранный момент времени.
Распространённые сценарии использования
Разработка и тестирование
Создайте ветку на основе базы данных в продакшне или стейджинге, чтобы проверять изменения в приложении, миграции или новые возможности на реалистичных данных.
Поддерживайте предпродакшн-среду, максимально приближенную к продакшну, не затрагивая рабочие нагрузки в продакшне.
Проверяйте изменения схемы, стратегии индексирования и оптимизацию запросов перед развертыванием в продакшне.
Восстановите базу данных до определенного момента времени для диагностики неполадок, аудита или проверки поведения приложения.
Ветки — это независимые развертывания PostgreSQL, и их сайзинг можно задавать отдельно от исходной базы данных.
Например, развертывание в продакшн может использовать более крупную конфигурацию, тогда как ветка для разработки или стейджинга может использовать меньший вычислительный профиль, чтобы сократить затраты. Это позволяет командам создавать временные среды без необходимости выделять вычислительные ресурсы на уровне продакшн.
Поскольку Managed Postgres использует NVMe-хранилище PostgreSQL, ветки восстанавливаются из резервных копий, а не создаются с помощью механизмов copy-on-write на уровне хранилища. Поэтому создание ветки происходит не мгновенно.
Обычно создание ветки занимает от нескольких минут до нескольких десятков минут в зависимости от:
- Размера базы данных
- Размера резервной копии
- Точки восстановления
- Объема WAL, который нужно воспроизвести
- Общей конфигурации кластера
В большинстве развертываний ветки становятся доступными через несколько минут. Для более крупных баз данных может потребоваться дополнительное время.
Если время создания ветки становится узким местом в вашем рабочем процессе, свяжитесь с командой ClickHouse. Во многих случаях производительность восстановления ветки можно оптимизировать с учетом характеристик рабочей нагрузки и требований к восстановлению.
Ветви и локальная разработка
Часто возникает вопрос, стоит ли каждому разработчику использовать продакшн-ветвь в качестве среды разработки.
Хотя ветви полезны для тестирования, валидации и стейджинга, для повседневной разработки приложений это, как правило, не лучший подход. Каждая ветвь — это отдельное развертывание PostgreSQL, которое нужно восстанавливать из резервных копий и поддерживать отдельно. Создание большого количества ветвей может повысить затраты на инфраструктуру и усложнить эксплуатацию.
Для большинства организаций мы рекомендуем:
- Использовать ветви PostgreSQL для стейджинга, тестирования, отладки и валидации.
- Использовать локальные среды PostgreSQL для повседневной разработки.
- Генерировать синтетические датасеты для разработки или, где уместно, использовать обезличенные датасеты.
- Избегать повседневной разработки напрямую в ветвях, созданных на основе продакшна.
Такой подход снижает нагрузку на продакшн-системы, ускоряет разработку и помогает обеспечить надлежащую защиту продакшн-данных.
Инструкции по созданию локальных сред разработки PostgreSQL с помощью Docker см. в разделе Локальные среды разработки.
Рекомендуемый порядок работы
Обычно это выглядит так:
Ветки лучше всего подходят для сред, где нужна копия базы данных, максимально похожая на продакшн. Для повседневной разработки локальные среды PostgreSQL обычно обеспечивают более быстрый, менее затратный и более масштабируемый рабочий процесс. Last modified on July 3, 2026