GCP Cron Job Бэкап MongoDB из mlab

Я хотел настроить способ (с помощью GCP) автоматически и часто загружать копию / резервную копию одного экземпляра MongoDB, размещенного на mlab, и использовать его для восстановления / заполнения другого экземпляра MongoDB также на mlab. Мой мыслительный процесс был следующим:

  1. Создайте задание cron в GCP с помощью Cloud Scheduler. Это задание cron будет запускать сообщение по теме публикации / подписки каждую неделю.
  2. Затем я бы настроил облачную функцию, которая будет прослушивать эту тему pub / sub, чтобы облачная функция вызывалась каждую неделю.
  3. Наконец, в облачной функции (написанной на Python) я бы каким-то образом вызвал mongodump в моем экземпляре mlab mongodb. Затем я бы позвонил mongorestore и загрузил резервную копию

Моя проблема в том, что mongodump и mongorestore являются общими утилитами командной строки и на самом деле не связаны с Python. Локально я мог бы просто установить их, однако я не думаю, что смогу сделать это с помощью облачной функции. Мои вопросы таковы,

  1. Есть ли способ использовать mongodump или загрузить резервную копию из облачной функции в Python?
  2. Есть ли более простой способ выполнить весь этот процесс? (т.е. загружать резервную копию с GCP один раз в неделю)

person B. Jenkins    schedule 19.05.2020    source источник


Ответы (1)


Среда выполнения облачных функций доступна только для чтения, за исключением каталога tmp, который можно писать. Это означает, что нельзя запускать или устанавливать исполняемые файлы, такие как mongodump или mongorestore.

Возможности, которые я вижу для вашего варианта использования, будут следующими:

  1. Используйте клиентскую библиотеку Python MongoDB для выполнения задач с помощью облачных функций. Может быть, pymongo?
  2. Используйте Cloud Run с образом Docker, который содержит mongodump и mongorestore, и вызовите эту службу Cloud Run из Облачная функция с HTTP-запросом.
person llompalles    schedule 20.05.2020