Как организовать себе бесплатные бекапы MongoDB

 Публичный пост

Даров клуб
Даров клуб

Написал туториал о том, как я бекаплю большинство своих сервисов с borodutch.com. Делаю это бесплатно и не плачу $39/месяц за бекапы баз данных. Крач, статья о том, как заполучить бекапы Монго (да и любой другой БД) бесплатно без смс.

На самом деле, я просто юзаю тут mongodump и cron, за что, собственно говоря, народ и опошляет по стописот баксов за одну бд в месяц.

Связанные посты
20 комментариев 👇

Как я делаю бесплатные бекапы

Берем свой storage...

Чо за кликбейт
Чо за кликбейт

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

Спойлер к сиквелу, в этот раз без флешки на 256 гиг
Спойлер к сиквелу, в этот раз без флешки на 256 гиг

  Развернуть 1 комментарий

I also had a 256 gb thumbstick drive laying around doing nothing so I thought why not — I'll use it for the backups!

А чё, так можно было что ли!?
А чё, так можно было что ли!?

К статье же претензий никаких: подход имеет право на жизнь при определённых условиях.

  Развернуть 1 комментарий

Да, заголовок был весьма заманчив)

Расскажу тогда про свой подход к бэкапам в рамках этого треда.

Kimsufi

Несколько лет я платил по 10 евро в месяц за сервер Kimsufi (Intel Core I5, 16Gb Ram, 2Tb HDD). На него обычно сливались бэкапы-бэкапов) Короче всё то что потерять было бы неприятно, но не критично.

Под каждый новый план бэкапа я заводил нового пользователя на сервере и настраивал для него крон-задачи на выкачивание резервных копий с прода.

Минусы такого подхода - сложно мониторить работу всех бэкапов, диск на сервере даже не в рейде.
Плюсы - стоимость, это полноценный сервер на котором можно еще крутить какие-то сервисы.

Перестал использовать этот вариант когда отпала необходимость хранить около терабайта старых бэкапов.

Amazon S3

Важные бэкапы сливаются раз в сутки в S3. Что-то вручную перевожу в Glacier.
Плюсы - надежность.
Минусы - цена.

Backblaze/Scaleway storage/DigitalOcean storage

Тот же S3. В первом случае бесплатно дают 10 гигабайт. Во втором 75.
Примерно в таких же пропорциях мое недоверие к этим сервисам) Если Backblaze я еще как-то доверяю, то в Scaleway я постоянно сталкивался с багами в других их продуктах.

Теперь то что желательно бы сохранить, но при этом некритично потерять я храню в Backblaze и Scaleway storage.

В DigitalOcean можно купить фиксированно за 5$ в месяц сторадж на 250 гигабайт. Компания надежная, но хотелось бы платить on-demand. Попробовал, но продлять не стал.

  Развернуть 1 комментарий

А у тебя сервисы не в докере? просто мне всегда было интересно, как в таком случае лучше ораганизовать бекап, стоит ли создавать отдельный контейнер с cron, который бы все это запускал или все равно локально?

  Развернуть 1 комментарий

@DaniilOlshevskiy, не, не в докере :) я делаю так, чтобы на любой картофелине запускались мои серверы — под каждый запускать свой докер слишком жирно-богато для меня.

  Развернуть 1 комментарий

@DaniilOlshevskiy, так крон на хосте скорее всего уже есть. Какой смысл в отдельном контейнере под него?)

  Развернуть 1 комментарий

@rhamdeew, ну типо максимальная автоматизация

  Развернуть 1 комментарий

@rhamdeew, докер — очень клевая штука, но с ним мы начали забывать про systemctl, crontab и остальные прелести никсов, к сожалению :( о чем говорит и желание засунуть cron в docker.

  Развернуть 1 комментарий

@DaniilOlshevskiy, почитай охуенную статью о том, как lyft батч-жобы из нативного сron в k8s cronjobs переносили:

  Развернуть 1 комментарий

@rhamdeew, смысл в отдельном контейнере в ограничении ресурсов,
чтоб крон не забивал всю сеть, память и cpu. Это классическая ошибка админов, когда ночью все серваки падают "по крону" ;)

  Развернуть 1 комментарий

@romangoward, конечно, в своих юзкейсах докер — топ. Просто у меня специфичные требования. Например, развернуть докер на Pi Zero W... проблематично.

  Развернуть 1 комментарий

@XcNih4ZNxLNhGduD, docker морально устарел, поскольку он stateful. Я бы сегодня делал выбор в сторону podman, он прям огонь.

  Развернуть 1 комментарий

@romangoward, так если по крону запускать что-то внутри контейнера то это никак и не влияет. Крон же только запускает другой процесс. Возможно мы про разные кейсы говорим)

  Развернуть 1 комментарий

@rhamdeew, контейнер — это обычный юникс процесс, на который выставляются системные лимиты.

  Развернуть 1 комментарий

Извиняюсь за офтоп, есть несколько вопросов по MongoDB:

  1. Какие у нее сильные и слабые стороны? Часто вижу, что люди ругаются, но я так понимаю они ее просто втыкают вместо MySQL/PostgreSQL и получают несколько другое поведение.
  2. Есть ли категории проектов, в которых MongoDB безоговорочно выигрывает перед всеми другими, или по крайней мере реляционными базами данных?
  3. Раньше (ну то есть лет 4-5 назад, когда я поверхностно интересовался 🙂) MongoDB принято было ругать за нестабильность, как с этим сейчас?
  Развернуть 1 комментарий

@HhTzCzHpCUBPXC3g,

  1. Не видел, чтобы люди ругались, на самом деле. Ну, те кто реально ее юзают в 2020.
  2. Да, практически везде до 1 000 000 пользователей примерно.
  3. Все стабильно.

Из плюсов, которые я прямо на себе прочувствовал:

  • Отсутствие необходимости миграций (я часто меняю структуры данных и ни разу не приходилось за 5 лет пользования в разных проектах писать миграции)
  • Простая структура (никаких join tables, просто object reference по id)
  • Нативный (и строго типизированный) для TypeScript и JavaScript язык запросов (в отличие от plain string у SQL, где кто только не опечатывался)
  • Агрегации и популяции могут быть чуть сложнее запросов SQL, но как только в них разберешься, становится вообще кайфово все собирать вместе
  Развернуть 1 комментарий

@XcNih4ZNxLNhGduD, спасибо!

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб