CottonБэкапы и авто-восстановление
Бэкапы и авто-восстановление

Бэкапы, которые живут в той же защищённой модели хранилища.

Cotton считает артефакты бэкапа БД частью операционной модели продукта. Дамп PostgreSQL можно разбить на чанки, сохранить через хранилище Cotton, найти по метаданным последнего бэкапа, проверить и использовать для восстановления на старте, когда база пустая.

Дамп PostgreSQLЧанковые бэкапыАвто-восстановлениеПроверка по хешуУведомления админу

Артефакты дампа PostgreSQL

Cotton может периодически создавать дампы PostgreSQL и складывать получившиеся артефакты бэкапа через свой конвейер хранения. Байты бэкапа не превращаются в загадочную папку сбоку от модели продукта.

  • Артефакты бэкапа хранятся через чанковый конвейер Cotton.
  • Та же модель хранилища защищает и байты бэкапа, и байты обычных файлов.
  • База остаётся источником истины для живых метаданных продукта.

Манифест и указатель на последний бэкап

Поиск бэкапа опирается на метаданные, а не на угадывание по имени файла. Cotton может держать манифест и записи-указатели на последний бэкап, чтобы восстановление на старте нашло нужный артефакт.

  • Указатель на последний бэкап показывает текущего кандидата.
  • Манифест бэкапа описывает чанки, из которых собран дамп.
  • Указатель и данные манифеста — часть защищённой поверхности бэкапа.

Ручная контрольная точка

Админы могут запустить задачу бэкапа по требованию через серверный API, когда нужна немедленная контрольная точка перед рискованным шагом обслуживания или обновлением.

Авто-восстановление пустой базы

Когда явно включён режим восстановления пустой базы, Cotton на старте проверяет, пуста ли база, находит манифест последнего бэкапа, собирает дамп из сохранённых чанков, проверяет целостность по хешу и размеру и восстанавливается автоматически.

Проверка прежде доверия

Путь восстановления не должен вслепую залить любые байты, какие есть. Cotton проверяет размер и хеш бэкапа перед восстановлением, чтобы повреждение стало сигналом к восстановлению, а не тихим частичным импортом.

Уведомление админу

После авто-восстановления Cotton проверяет наличие нужных расширений PostgreSQL и шлёт админу уведомление с высоким приоритетом и метаданными бэкапа. Оператор должен знать, что восстановление произошло и какой артефакт использован.

Доказательство пути восстановления

Путь бэкапа конкретный: дамп PostgreSQL, чанковый артефакт хранилища, указатель на последний бэкап, манифест бэкапа, проверка по хешу и размеру, восстановление пустой базы на старте, проверка расширений и уведомление админу с высоким приоритетом.

Восстановление — часть продукта

Cotton проще эксплуатировать, когда восстановление — не сноска в README. Бэкапы БД видны как часть операционной модели и привязаны к той же дисциплине хранения, которая защищает обычный контент.

Это всё ещё не вся стратегия бэкапа

Восстановление БД из своего хранилища полезно, но не заменяет проверенные бэкапы вне сервера. Полная потеря хоста, сломанное хранилище, неправильное хранение ключей, ошибки оператора, ransomware и аварийное восстановление всё равно требуют внешнего плана бэкапа. Бэкап, который ни разу не восстанавливали, — это не бэкап, а гороскоп.

Доказательство восстановления

Бэкап базы данных должен находиться, проверяться и быть видимым.

Рассказ Cotton про бэкапы операционный, а не театральный. Он даёт приложению слой восстановления на уровне продукта, но не притворяется, что заменяет скучную дисциплину внешних бэкапов, которая всё равно нужна серьёзным операторам.

Событие бэкапа/восстановленияМетаданные бэкапа и завершение авто-восстановления должны быть на поверхности оператора, чтобы восстановление было видно, когда оно случилось.

Дамп

Cotton создаёт дамп PostgreSQL через серверную задачу бэкапа.

Сохранить

Дамп становится чанковыми артефактами бэкапа внутри хранилища Cotton.

Указать

Указатель на последний бэкап и метаданные манифеста определяют кандидата на восстановление.

Проверить

Восстановление сверяет хеш и размер, прежде чем доверять собранному дампу.

Восстановить

Пустую базу можно восстановить на старте, когда это явно настроено.

Уведомить

Админы получают высокоприоритетные метаданные восстановления после авто-восстановления.

Настроенное восстановление

Авто-восстановление явное, потому что неявное восстановление опасно.

Путь восстановления при старте должен жить за COTTON_RESTORE_DATABASE_IF_EMPTY=true и проверкой пустой базы. Обычный рестарт не должен перезаписывать существующую базу только потому, что бэкап есть.

  • Держите том хранилища чанков долговечным.
  • Держите мастер-ключ восстановимым вне хоста.
  • Тестируйте восстановление, прежде чем считать бэкапы настоящими.
  • Держите бэкапы вне сервера на случай полной потери хоста или хранилища.
  • Следите за уведомлениями админа после автоматического восстановления.
  • Документируйте, кто может запускать ручные контрольные точки бэкапа.
Вопросы

Прямые ответы

Авто-восстановление запускается на каждом старте?

Нет. Задуманный путь — явно настроенное восстановление пустой базы. Существующие базы нельзя перезаписать просто потому, что приложение перезапустилось и бэкап существует.

Это заменяет бэкапы на другой площадке?

Нет. Это полезный слой восстановления на уровне продукта, но серьёзным развёртываниям всё равно нужны проверенные бэкапы вне сервера на случай полной потери машины, потери хранилища, потери ключей или ошибок оператора.

Зачем хранить бэкапы БД через хранилище Cotton?

Так артефакты бэкапа остаются в той же защищённой модели хранилища: чанки, метаданные манифеста, поиск последнего указателя и проверка целостности — вместо отдельного, ни с чем не связанного файла дампа.

Что админы должны увидеть после восстановления?

Уведомление с высоким приоритетом и метаданными, которых достаточно, чтобы понять: авто-восстановление произошло и какой артефакт бэкапа использован.