2016-11-10 3 views
5

Я пытаюсь настроить докер-компоновку с помощью узла и MongoDB. В сочетании с официальным контейнером Mongo я использую выделенный контейнер (mongodb-backup) для непрерывного резервного копирования базы данных и первоначального восстановления при запуске.MongoDB в Docker - резервная база данных при закрытии контейнера

Моя проблема заключается в том, как вызвать резервную копию в случае изящного выключения на docker-compose stop.
Следовательно, сначала необходимо закрыть контейнер узла, чтобы гарантировать, что процесс не будет записываться в базу данных. Затем создайте резервную копию базы данных и, наконец, отключите резервные копии mongodb и mongodb.

Этот repository содержит мою конфигурацию для монстров mongodb и mongodb.

У кого-нибудь есть идея, как реализовать это?

+0

Ваш вопрос не на 100% ясен для меня. Вы имеете в виду, как вы можете восстановить данные из резервной копии после того, как контейнер mongo напортачил? – RichArt

+0

Нет, восстановление обрабатывается контейнером-хранилищем mongodb. Я хочу создать резервную копию базы данных до закрытия контейнера mongodb. –

+1

Я полагаю, что вы делаете резервные копии, чтобы не потерять данные для случая, когда контейнер mongodb завинчивается. Таким образом, единственный способ сделать это - запланировать ежедневную или ежечасную резервную копию. Как вы узнаете, когда ваш контейнер mongodb отключится в следующий раз? Только для планового обслуживания. Это ваш случай? – RichArt

ответ

0

Вы можете написать небольшой сценарий обслуживания для этого случая. Вместо того, чтобы делать raw docker-compose stop, вы можете просто запустить этот скрипт. Назовем это maintenance.sh:

#!/bin/sh 
docker-compose stop app 
docker-compose stop mongo-backup # ensure only one is active 
docker-compose run --rm -e INIT_BACKUP=1 # do the backup manually 
docker-compose stop mongo # stop the database 
+0

Возможно, у downvoters есть любезность, чтобы оставить комментарий? Я рад подстроить свой ответ, если есть проблема. – ShrimpPhaser

Смежные вопросы