Резервную копию проверяют одним способом: восстанавливают её в чистую базу и сверяют данные. Если восстановления не было, копия остаётся предположением. Мы сами нашли у себя такой пробел при аудите CRM для клубов и закрыли его: ниже что именно проверяли и как это сделать в вашем проекте.
Что мы нашли при аудите
Перед выходом CRM к реальным клиентам мы составили список остатка работ. По резервным копиям там стояло три замечания:
- автоматическую копию хостинга никто ещё не подтверждал;
- собственную копию на кластере ни разу не снимали;
- восстановление не проверяли ни разу.
Данные в системе: клиенты клуба, телефоны, расписание, платежи. Потеря такой базы это остановка работы клуба и обязанность объяснять клиентам, куда делись их данные.
Почему наличие файла ничего не доказывает
Копия может не сработать четырьмя способами:
- Пустая или неполная. Файл создан, но часть таблиц не попала в копию.
- Битая. Копия повреждена при записи или передаче и не открывается.
- Несовместимая. Для восстановления нужна другая версия базы, роль или расширение, которых нет на новом сервере.
- Лежит там же, где и данные. Диск вышел из строя, и копия пропала вместе с рабочей базой.
Все четыре варианта выясняются только попыткой восстановления.
Как проверяли мы
Мы написали скрипт с тремя режимами: снять копию, проверить её и восстановить. Затем сделали три вещи.
- Прогнали полный круг на настоящем движке Postgres в тесте. База вся снимается, разворачивается заново, и каждая строка сравнивается с исходной. Строки совпали.
- Проверили защиту. Повреждённый файл система отказывается разворачивать. Непустую базу она тоже не перезаписывает: восстановление идёт только в чистое место, чтобы случайно не затереть рабочие данные.
- Сняли реальную копию с боевого кластера и проверили её отдельной командой. Копия отправляется в папку вне рабочего диска, и папка шифруется. Копия хостинга остаётся быстрым путём, а наша собственная это копия, которая лежит у нас.
Чек-лист для вашей системы
- Где лежит копия, и это не тот же сервер или диск, что и рабочая база?
- Когда в последний раз копию восстанавливали в тестовую среду? Если ответ «никогда», это первый пункт работ.
- Сколько времени занимает восстановление? Узнайте это до аварии, а не во время неё.
- Проверяется ли целостность: совпадает ли число строк по таблицам?
- Зашифрована ли копия, если в ней персональные данные?
- Кто и как узнаёт, что очередная копия не создалась?
Частые вопросы
Достаточно ли копий, которые делает хостинг? Это быстрый путь, но он зависит от условий хостинга и вашей подписки. Копия, которая лежит только у провайдера, тоже требует проверки восстановления.
Как часто проверять восстановление? Хотя бы после каждого изменения структуры базы и раз в месяц на регулярной основе. Автоматизируйте проверку, чтобы она не зависела от памяти.
Можно ли проверить на боевой базе? Нет. Восстановление проверяют в отдельной среде, чтобы ошибка не задела работающую систему.
Если хотите проверить, как организованы копии в вашей системе, опишите её в форме. О том, как мы проверяем защиту данных клиентов друг от друга, читайте в статье про изоляцию данных в мультитенантной CRM.