Эффективное архивирование ежемесячно старше 1 года для распределенной базы данных Mongo DB

У нас есть распределенная/общая база данных mongo (от 5 до 6 реплик). Я хочу создать резервную копию данных огромных таблиц, если они старше 1 года (т.е.). И удалить после резервного копирования. (Я не хочу потери данных, поэтому я не хочу полностью удалять коллекцию) Исходной коллекцией является customer (т.е. целевой коллекцией является customer_archive).

Примечание. Архивные данные не должны теряться и не должны дублироваться в архивных данных. Я предположил, что нам нужен механизм слияния/улучшения. Но не знаю, как лучше сделать.

  1. каков наиболее эффективный способ архивирования более 200-300 ГБ данных (т.е.) (миллионы данных каждый день, я имею в виду быстрый рост, поэтому запросы становятся сложными и производительными)
  2. Коллекция архивов может находиться в другой базе данных, как написать скрипт?
  3. Как я могу запланировать этот скрипт ежемесячно/ежедневно?
  4. Как бы вы это сделали, если резервная копия будет другой базой данных (я думал, сначала экспортировать и переместить в другую базу данных)

Моя точка зрения заключалась в том, чтобы сначала взять коллекцию дампов под другим именем. И копируйте и удаляйте ежегодные данные массово Вставляйте/массовое удаление (прочитайте каждые 10 000 foreach commit). Некоторые не рекомендуют foreach для повышения эффективности, но я предполагаю, что это единственный способ частичного удаления. Я не знаю, смогу ли я создать пакетный файл, поэтому я могу поделиться им с нашей командой BT для планирования задач.


person Tolga Celik    schedule 17.06.2021    source источник
comment
Немного общей информации о методах резервного копирования MongoDB.   -  person prasad_    schedule 17.06.2021
comment
См. stackoverflow.com/a/67077465/3027266. Планирование можно выполнить с помощью простого задания cron или планировщика Windows. Удаление старых данных может быть узким местом, можно ли удалить всю коллекцию?   -  person Wernfried Domscheit    schedule 17.06.2021
comment
См. Stackoverflow.com/a/67077465/3027266. Планирование можно выполнить с помощью простого задания cron или планировщика Windows. Удаление старых данных может быть узким местом, однако 20-30 ГБ в настоящее время невелики. Можно ли скинуть всю коллекцию?   -  person Wernfried Domscheit    schedule 17.06.2021
comment
я не хочу удалять текущую коллекцию, она используется. И мы также хотим отделить старые данные в виде архива. Предположим, у вас есть данные за 10 лет и огромные данные, выберите запрос, который стоит столько. Поэтому я хочу заархивировать старые данные, сохранить только последний год. Но я не хочу терять данные. Цифры я привел кстати для примера, предположим, что у нас 300 Гб на ТБ данных. Что бы ты сделал :)   -  person Tolga Celik    schedule 17.06.2021
comment
понемногу, данные за несколько месяцев, вероятно, намного проще обрабатывать, и их удаление будет меньше влиять на базу данных. То есть, чтобы сократить эти 10 лет до 1 года, используйте 108 операций размером в месяц вместо одной операции размером в 9 лет.   -  person Joe    schedule 17.06.2021