Файлы сайта можно восстановить из архива, а вот данные — только из базы. При этом «дамп раз в сутки» не всегда спасает: между последней копией и сбоем могут оказаться заказы, заявки и сообщения. Разбираем, как снимать базу правильно и как добавить восстановление на точку во времени.
Дамп: что это и почему файлы не считаются
Дамп — это текстовый файл с командами, которые восстанавливают таблицы, данные и связи. Архив файлов сайта базу не содержит: в файлах лежат только код и загрузки. Поэтому копия «просто папки» при потере базы бесполезна.
Как снимать дамп
Для MySQL основной инструмент — mysqldump. Три опции, которые важно не забыть: —single-transaction (согласованный снимок без блокировки таблиц), —routines —triggers (хранимые процедуры и триггеры) и явная кодировка utf8mb4. Без первой опции дамп может «поймать» полусостояние, без второй — потерять логику, которая живёт в базе.
| Опция / приём | Зачем | Что будет без неё |
|---|---|---|
| —single-transaction | согласованный снимок без простоя | риск неконсистентных таблиц |
| —routines —triggers | процедуры и триггеры | часть логики потеряется |
| —default-character-set=utf8mb4 | кириллица и эмодзи | кракозябры после импорта |
| Сжатие (gzip) | экономия места и трафика | архив в разы больше |
| Отдельный пользователь с правами на чтение | безопасность | риск прав и ошибок доступа |
Бинарные логи и восстановление на момент
Дамп фиксирует состояние на вчера, а бинарный лог хранит все изменения после него. Связка «дамп + логи» позволяет восстановить базу на конкретную минуту: сначала разворачивается дамп, затем проигрываются изменения до нужного времени. Это единственный способ вернуть данные без потери последних часов.
| Способ | Что даёт | Когда использовать |
|---|---|---|
| Логический дамп | переносимый архив всей базы | регулярные бэкапы, переезд |
| Дамп + бинарные логи | восстановление на точку | после ошибочного удаления или сбоя |
| Копия файлов базы | быстро и точно | крупные базы, но нужен доступ к серверу |
На практике: раз в сутки полный дамп, плюс бинарные логи с ротацией на 7–14 дней. Тогда любая авария откатывается на нужную минуту, а не «на вчера».
Как проверить, что дамп рабочий
- Посмотрите размер: подозрительно маленький файл — признак, что дамп прервался.
- Проверьте начало и конец файла: он должен заканчиваться строкой завершения, а не обрываться на середине.
- Импортируйте дамп в тестовую базу и сравните число записей в основных таблицах с боевыми.
- Откройте пару страниц сайта на тестовой копии — данные должны отображаться.
- Проверьте, что перенеслись процедуры, триггеры и кодировка.
Хранение и ротация
Дампы сжимайте и шифруйте: внутри могут быть персональные данные и хеши паролей. Храните не менее 7 дневных копий плюс месячные, а самые свежие — вне сервера сайта. Проверяйте место: когда диск заполняется, новые дампы молча перестают создаваться, и вы узнаёте об этом при восстановлении.
Частые ошибки
| Ошибка | Чем опасна |
|---|---|
| Дамп без —single-transaction | битые и несогласованные данные |
| Копия только структуры без данных | сайт пустой |
| Забыли процедуры и триггеры | часть логики не работает |
| Неверная кодировка при импорте | текст превращается в кракозябры |
| Хранение только на сервере сайта | копия исчезает вместе с сервером |
| Ни разу не проверяли импорт | в момент аварии архив оказывается битым |
Частые вопросы
Можно ли восстановить базу без дампа? Иногда — из бинарных логов или файлов базы, но это сложнее и требует доступа к серверу. Дамп надёжнее.
Как часто делать дамп магазина? Каждые 6–12 часов, а перед акциями и обновлениями — вручную.
Хватит ли дампа раз в сутки? Для блога да. Для заказов и заявок — нет, потеря дня может стоить дороже, чем место на диске.
