#mongodb #dropbox
#mongodb #dropbox
Вопрос:
Я использую базу данных mongodb под названием «mydb» в локальном wep-приложении, которое я разрабатываю, и хочу синхронизировать файлы базы данных через Dropbox, чтобы она была доступна на всех моих компьютерах для разработки.
Всякий раз, когда я вставляю какие-либо новые данные в базу данных, файлы ‘mydb.0’ и ‘mydb.ns’, похоже, не меняются. Итак, Dropbox ничего не синхронизирует. Есть идеи?
Я знаю, это может показаться ужасной идеей, но я единственный пользователь базы данных и я никогда не запускаю базу данных более чем на одной машине одновременно. Также я не делюсь файлами ни с кем другим. Это просто для того, чтобы убедиться, что я могу продолжить работу на другом компьютере именно с того места, где я остановился.
Ответ №1:
К сожалению, это звучит как ужасная идея. Что, если Mongo запущен на двух компьютерах одновременно? Скорее всего, обе базы данных будут повреждены. Лучшим способом было бы написать скрипт, который использовал бы mongodump и mongorestore для сброса базы данных в Dropbox и восстановления ее из дампа. Однако вам придется запускать их вручную.
Причина, по которой вы не видите никаких изменений в файлах базы данных, вероятно, заключается в том, что Mongo предварительно выделяет свои файлы базы данных, поэтому их размер никогда не меняется, только содержимое внутри. Возможно, Dropbox этого не обнаруживает. Mongo также не выполняет запись на диск сразу. Скорее, он использует файлы, отображенные в памяти, которые могут быть сброшены позже (это должно занять считанные секунды, хотя это не должно быть причиной).
Комментарии:
1. Я единственный, кто использует базу данных, и не запускаю ее более чем на одной машине одновременно. Проблема не в этом.
2. Добавил кое-что к моему вопросу. Tnx для идеи сценария я мог бы использовать это.
3. Если вы синхронизируете файлы базы данных (и при условии, что вы решаете проблемы с синхронизацией), вы должны быть абсолютно уверены, что Mongo не запускается, когда Dropbox синхронизирует файлы. В конечном итоге вы чаще всего будете иметь поврежденные базы данных. Это неразумный подход.
4. Вы правы. Теперь реализовал ваше предложение по скрипту, и оно работает как по маслу. Спасибо.