Что входит в настройку бэкапов
Можно начать с самого ценного, обычно это база данных, и добавить остальное позже.
Базы данных
База меняется каждую секунду, и копировать её нужно её же средствами, а не копированием файлов.
- ✓PostgreSQL: дампы и непрерывный архив журналов
- ✓MySQL и MariaDB
- ✓восстановление на нужную минуту
- ✓Redis и ClickHouse, если в них важные данные
Файлы и серверы
Загрузки пользователей, конфигурация, сертификаты.
- ✓restic: дедупликация и шифрование
- ✓после первой копии передаются только изменения
- ✓без кеша и временных файлов
- ✓конфигурация серверов в Git как ещё одна страховка
Хранение
Бэкап на том же сервере, что и данные, пропадёт вместе с ним.
- ✓S3 у другого провайдера или в другом регионе
- ✓шифрование до отправки
- ✓версионирование и отдельные ключи доступа
- ✓сроки хранения: дни, недели, месяцы
Расписание
Частота зависит от того, сколько данных можно потерять.
- ✓база: от непрерывного архива до раза в сутки
- ✓файлы: раз в сутки или чаще
- ✓удаление старых копий по правилам
- ✓запуск в часы низкой нагрузки
Проверка восстановления
Копия, из которой ни разу не пробовали восстановиться, - это надежда, а не бэкап.
- ✓автоматическое восстановление на тестовом сервере
- ✓проверка, что данные читаются и полны
- ✓замер времени восстановления
- ✓отчёт о каждой проверке
Алерты
Бэкапы часто ломаются молча: кончилось место, сменился пароль, отвалился ключ.
- ✓алерт, если бэкап не выполнился
- ✓контроль размера: резкое изменение - повод посмотреть
- ✓свободное место в хранилище
- ✓уведомления в Telegram
Защита от шифровальщиков
Тот, кто получил доступ к серверу, не должен получить доступ к бэкапам.
- ✓хранилище с запретом удаления на срок
- ✓ключи только на запись, без права удалять
- ✓копия у другого провайдера
- ✓алерт на массовое удаление
План восстановления
Когда сервер упал, разбираться в командах некогда.
- ✓пошаговая инструкция под ваш проект
- ✓кто и в каком порядке восстанавливает
- ✓целевое время восстановления
- ✓учебное восстановление по инструкции
Стоимость настройки резервного копирования
Стоимость зависит от числа серверов и баз. Оценку в часах даю до начала работ. Место в хранилище оплачивается провайдеру отдельно.
| Формат | Цена | Что входит |
|---|---|---|
| Аудит бэкапов | от 10 000 ₽ | что копируется, где хранится, можно ли восстановиться; пробное восстановление и отчёт |
| Настройка | 3 000 ₽/час | бэкапы баз и файлов, хранилище, шифрование, проверка восстановления, алерты |
| Обслуживание | 20 000 ₽/мес | контроль бэкапов и проверок восстановления, реакция на сбои |
Примеры расчёта
| Задача | Оценка |
|---|---|
| Бэкапы одной базы PostgreSQL в S3 с алертами | 2-4 часа |
| Бэкап файлов сервера через restic с шифрованием | 2-3 часа |
| Автоматическая проверка восстановления на тестовом сервере | 3-6 часов |
| План восстановления и учебное восстановление | 3-5 часов |
Как проходит настройка
- 1
Что нельзя потерять
Определяем данные и допустимые потери: сколько часов работы не жалко и как быстро нужно восстановиться.
- 2
Проверка текущих бэкапов
Если бэкапы есть, пробую из них восстановиться. Часто это первое восстановление за всё время.
- 3
Настройка
Расписание, хранилище, шифрование и сроки хранения под ваши требования.
- 4
Пробное восстановление
Восстанавливаю данные на тестовом сервере и замеряю время.
- 5
Контроль
Подключаю алерты и автоматическую проверку восстановления, передаю инструкцию.
С чем приходят
Бэкап есть, а восстановиться не вышло
Копия оказалась пустой, неполной или без ключа шифрования. Узнают об этом в день аварии.
Бэкапы лежат на том же сервере
Сервер удалили или зашифровали, и копии пропали вместе с ним.
Бэкап делает хостер
Снапшот раз в сутки без проверки, а база в снимке работающего сервера может не подняться.
Данные удалили по ошибке
Нужна копия на вчерашний вечер, а хранится только последняя, уже без этих данных.
Правило 3-2-1
Классическое правило надёжного резервного копирования:
- 3 копии данных: рабочая и две резервные;
- 2 разных носителя или хранилища;
- 1 копия в другом месте: у другого провайдера или в другом регионе.
Для небольшого проекта это выглядит так: рабочая база на сервере, ежедневный бэкап в S3 того же облака и еженедельная копия у другого провайдера. Сейчас к правилу часто добавляют копию, которую нельзя изменить или удалить, на случай шифровальщика.
Как проверить, что бэкап рабочий
Минимальная проверка, которую стоит делать хотя бы раз в месяц:
- Найдите последний бэкап и проверьте его дату:
restic snapshotsили список файлов в хранилище. - Восстановите его на отдельный сервер, а не поверх рабочих данных.
- Для PostgreSQL восстановите дамп в пустую базу через
pg_restoreи сравните число строк в ключевых таблицах. - Запустите приложение на восстановленных данных и проверьте вход и главные страницы.
- Запишите, сколько времени это заняло: это и есть ваше реальное время восстановления.
Если на каком-то шаге что-то пошло не так, хорошо, что это выяснилось сейчас, а не во время аварии.
Технологии
- Инструменты
- resticpg_dumpmysqldump
- Базы
- PostgreSQLMySQLRedisClickHouse
- Хранилища
- S3Yandex Object StorageSelectel S3
- Контроль
- PrometheusGrafanaTelegram
Примеры работ
IPTV-сервис: сервер можно поднять заново
Конфигурация и данные жили только на самих серверах, копий не было.
Настроил ежедневные бэкапы на внешнее хранилище и описал конфигурацию в Ansible: сервер поднимается из кода и последней копии данных.
Мобильное приложение: бэкапы, которые проверены
Данные приложения нужно было защитить так, чтобы восстановление не оказалось сюрпризом.
Настроил бэкапы в S3 с регулярной проверкой восстановления и алертами в Telegram.
Почему со мной удобно
Проверяю восстановление
Считаю бэкап рабочим только после того, как из него удалось восстановиться.
Данные остаются вашими
Хранилище и ключи шифрования оформлены на вас. Я не храню ваши данные у себя.
Без дорогих лицензий
restic и встроенные средства баз данных бесплатны. Вы платите только за место в хранилище.
Знаю, что важно приложению
Как бывший разработчик понимаю, какие данные нельзя потерять, а какие пересоздаются сами.
Частые вопросы
Сколько стоит настройка резервного копирования? +
Бэкапы одной базы PostgreSQL в S3 с алертами занимают 2-4 часа, по 3 000 ₽/час. Аудит существующих бэкапов с пробным восстановлением стоит от 10 000 ₽. Место в хранилище оплачивается провайдеру отдельно.
Как часто делать бэкапы? +
Так часто, сколько данных не жалко потерять. Если потеря дня работы недопустима, база копируется непрерывно или каждый час, файлы обычно раз в сутки.
Сколько хранить резервные копии? +
Частая схема: ежедневные за неделю, еженедельные за месяц, ежемесячные за год. Сроки зависят от бизнеса и требований к хранению данных.
Хватит ли бэкапов от хостинга? +
Как дополнение - да, как единственная копия - нет: они хранятся у того же провайдера, редко проверяются, а база в снимке работающего сервера может не подняться.
Где хранить бэкапы? +
В S3-совместимом хранилище у другого провайдера или хотя бы в другом регионе. 100 ГБ в таком хранилище стоят несколько сотен рублей в месяц.
Можно ли восстановить базу на определённый момент? +
Да, для PostgreSQL и MySQL это делается через непрерывный архив журналов: базу можно вернуть на минуту до ошибочного удаления.
Оставить заявку
Напишите, какие у вас данные, где они лежат и как сейчас делаются бэкапы. Скажу, можно ли из них восстановиться и что стоит добавить.