2012-01-10 2 views
6

Я думаю, что кто-то уже предложил:MongoDB: как сделать резервную копию MongoDB

1. stop the mongod 
2. backup the data directory 

Является надежным, я имею в виду, обеспечить 100% успех для восстановления? И я не могу найти каталог, в котором хранятся данные ... любая команда может помочь мне найти его?

ответ

6

Если mongod процесс завершается чисто (то есть без сбоев или kill -9), тогда где-то можно скопировать файлы данных.

Если ваша текущая установка прерывается (например, повреждение данных из-за нечистого выключения), вы можете удалить его файлы, скопировать эту резервную копию и снова запустить mongod.

Каталог данных по умолчанию - /data/db, но он может быть установлен в другое значение в вашем файле конфигурации. Например, я установил его в /var/lib/mongodb.

Вы также можете использовать mongodump, чтобы сделать резервную копию с живого сервера (это может повлиять на производительность). Используйте mongorestore для восстановления резервных копий, сделанных mongodump.

+0

Для: как использовать ** mongodump ** и ** ** mongorestore см подобный вопрос и ответ здесь mongodump и mongorestore ** ** Синтаксис: http://stackoverflow.com/a/ 21309914/2728686 – AmpT

5

В IGN мы делаем горячие резервные копии через mongodump, работая как почасовое задание cron, и получаем снимки с фильтрами (хранилище NetApp) на полчаса. Если ваша система не слишком тяжелая, и вы можете позволить себе писать блоки, попробуйте использовать fsync и lock, чтобы очистить записи на диске и предотвратить дальнейшую запись. За этим может следовать mongodump, и по завершении вы можете разблокировать db. Обратите внимание, что для этого вы должны быть администратором.

db.runCommand({fsync:1,lock:1}) 
+0

Какой вариант вы бы порекомендовали для написания тяжелых db? – VinnyD

+0

Снимки диска или задержанные ведомые устройства. – lobster1234

+0

и что делать с резервными копиями в закрытой среде? –

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