Перейти к содержимому

Environment Merge

Функция Environment Merge позволяет применять изменения схемы из одного окружения (источник) в другое (цель). Это основная операция, распространяющая структурные изменения — новые таблицы, столбцы, представления и перечисления — по всему жизненному циклу разработки.


Процесс merge спроектирован как безопасный, предсказуемый и прозрачный:

  1. Выбор: Выберите исходное окружение (откуда пришли изменения) и целевое (куда их применить).
  2. Анализ: Система выполняет diff для выявления всех отсутствующих изменений в целевом окружении.
  3. Проверка и Cherry-pick: Просмотрите обнаруженные изменения и выборочно выберите, какие применить.
  4. Автоматическое резервное копирование: Перед применением любых изменений Archie Core создаёт полную резервную копию данных и структуры целевого окружения.
  5. Атомарное применение: Выбранные изменения применяются одной операцией. При сбое любой части merge вся операция автоматически откатывается.

Archie Core гарантирует целостность производственных и staging-окружений при merge:

  • Транзакционные обновления: Все изменения схемы применяются в одной транзакции. То есть либо все выбранные изменения применяются успешно, либо ни одно — предотвращая частично мигрированное состояние базы данных.
  • Блокировка окружения: Во время merge целевое окружение блокируется для предотвращения параллельных изменений конфигурации.
  • Автоматические предварительные копии перед merge: Перед выполнением всегда создаётся «страховочная» резервная копия. Если merge прошёл успешно, но позже обнаружена проблема, можно восстановить точное состояние до merge на странице Backups.

Интерфейс merge обеспечивает детальный контроль над тем, что переносится:

  • Индивидуальный выбор: Включайте или отключайте конкретные изменения (например, добавление одного столбца или нового индекса) без слияния всей ветви.
  • Групповые действия: Быстро выбирайте или снимайте выбор со всех изменений, связанных с конкретной таблицей или представлением.
  • Защита от Breaking-изменений: Деструктивные операции (например, удаление столбца) по умолчанию не предвыбраны. Необходимо явно согласиться на такие изменения, чтобы избежать случайной потери данных.

Каждая операция merge записывается в централизованный аудит. Страница История для окружения показывает:

  • Аудит-лог: Кто инициировал merge, какие окружения были задействованы и когда это произошло.
  • Сводка изменений: Чёткая разбивка того, что было создано, изменено или удалено.
  • Прослеживаемость: Документация конкретных SQL-команд, выполненных во время миграции.
  • Ссылка на резервную копию: Прямой доступ к автоматической резервной копии, созданной специально для этой миграции.

Для отмены merge используйте страницу Backups, чтобы восстановить окружение в состояние «до merge».

Примечание: В отличие от простой отмены, операция восстановления возвращает всю базу данных к предыдущей точке во времени. Рекомендуется проверять изменения в staging-окружении перед merge в производственное.


mutation MergeEnvironments($input: MergeEnvironmentInput!) {
mergeEnvironments(input: $input) {
success
message
migrationId
changesApplied
backupId
}
}
query MigrationHistory($projectId: ID!, $environment: String) {
migrationHistory(projectId: $projectId, environment: $environment) {
id
sourceEnvironment
targetEnvironment
status
appliedBy
appliedAt
changes {
changeType
objectName
sql
isBreaking
}
backupId
}
}