Задать вопрос
alexdjachenko
@alexdjachenko

Есть ли готовое решения для инкрементного резервное копирования бакетов s3 и если нет, то почему это никому не нужно?

Довольно много статей о том, как настроить инкрементное резервное копирование данных из приложения в S3. Например, с помощью Restic.

Но как сделать резервное копирование самого S3 бакета?

Да, бакеты поддерживают версионирование, но чтобы откатиться на заданную дату придется колхозить свои скрипты.
Чтобы сделать бекап из s3 в тот же Restic надо либо сперва выкачать бакет полностью (включая те данные, которые не изменились), а потом уже делать резервное копирование - это долго и дорого (трафик + место на промежуточном сервере),
либо сперва подмонтировать бакет с помощью rclone, а потом уже делать его резервную копию с помощью restic.

Как правило, обилие требуемых костылей говорит о том, что сама постановка задачи не корректная. Иначе бы была куча готовых инструментов и инструкций.
Такое впечатление, что никому и никогда не требуется делать резервные копию своих бакетов или откатывать содержимое бакетов на заданную дату. Что странно, т.к. есть приложения, которые используют s3 для хранения статических файлов, а значит есть и потребность консистентно откатить состояние приложения (sql-база плюс бакет в s3) к какой-то предыдущей контрольной точке. Или нет?
  • Вопрос задан
  • 186 просмотров
Подписаться 2 Средний 3 комментария
Решения вопроса 1
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
Как вам уже ответили - S3 это object сторадж и, в общем и целом, бэкап набора объектов внутри бакета для него - нетипичная ситуация.
Поэтому придется поскриптовать
Из ваших комментариев к соседним ответам я понял ваш пайплайн следующим образом:
есть система которая работает с БД и S3 - через интерфейс приложения создается набор данных в БД и соответствующие объекты в S3. Вы хотите сохранять это состояние и восстанавливать его после определенных событий, причем с бэкапом БД у вас вопросов нет, а с S3 непонятно. Версионирование S3 включено.
Вообще, из БД у вас же есть список объектов которые созданы в S3
На этапе бэкапа вы можете создать таблицу соответствия "ключ(имя) объекта в S3" -> "ID версии объекта в S3" и при восстановлении каждый объект восстанавливать на правильную версию, соответствующую БД.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0 Куратор тега Системное администрирование
Миллиардер, филантроп, патологический лгун
S3 - это объектное хранилище, поэтому "откат на заданную дату" одного объекта никаких костылей не требует - это стандартная функциональность. А нескольких объектов - это действительно весьма странная задача, исходящая скорее всего из кривой архитектуры где-то выше.

"Бэкапы самого бакета" никто не делает, потому что намного проще, если вы используете S3 в качестве хранилища бэкапов, положить эти данные в другое место прямо с источника. Вдобавок, тот же AWS S3 и так реплицирован, кажется, почти на всех тирах.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Хм. Да похоже AWS.S3 действительно не поддерживает откат бакета в прошлое.
Но если рассматривать S3 как протокол поверх обычной файловой истемы
(Minio+BTRFS/ZFS) то вы можете задачу отката переформулировать в терминах
конкретной файловой системы
. Там - это коробоная фича.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы