Короткий ответ
Снапшот — точечный, обычно инкрементальный образ состояния блочного диска на момент времени; из снапшота можно создать новый диск и восстановить данные, но это резервная копия на уровне инфраструктуры, а не замена логического бэкапа приложения.
Как это работает подробнее
первый снапшот копирует все занятые блоки диска, последующие — только изменившиеся блоки, что экономит место и время; снапшот можно сделать по расписанию через политику автоматизации.
Пример кода
example.txt
aws ec2 create-snapshot --volume-id vol-0abc1234 --description "nightly backup"
aws ec2 describe-snapshots --filters Name=volume-id,Values=vol-0abc1234 \
--query "Snapshots[].[SnapshotId,State,Progress]"Что использовать на практике
- Рекомендация. снапшоты дисков БД делают консистентными, либо приостанавливая запись на короткое время, либо используя поддержку СУБД для flush перед снимком, иначе можно получить неконсистентные данные.
- Проверка. статус снапшота переходит из
pendingвcompleted, после чего из него можно создать новый том в той же или другой зоне доступности.
Подводные камни
- Риск. считать снапшот полноценной заменой логическому бэкапу базы данных
- Риск. не проверять снапшоты восстановлением (непроверенный бэкап равносилен его отсутствию)
- Риск. не настраивать ротацию снапшотов, из-за чего растут расходы на их хранение.