Как избежать потери данных при сбое сервера с MongoDB на одной машине? - PullRequest
6 голосов
/ 26 сентября 2011

Я читал, что mongoDB не записывает данные на диск сразу, он делает это периодически.

Есть мысли о том, как с этим бороться?

Ответы [ 2 ]

5 голосов
/ 26 сентября 2011

Вы можете включить ведение журнала с помощью --journal.

Выезд http://www.adathedev.co.uk/2011/03/mongodb-journaling-performance-single.html и http://www.mongodb.org/display/DOCS/Durability+and+Repair

3 голосов
/ 27 сентября 2011

Кроме --journal, который включен по умолчанию начиная с MongoDB 2.0 ( только на 64-битных машинах), есть флаг, который вы можете установить при сохранении данных:

  • safe => false: не ждать ответа БД
  • safe => true: ожидание ответа дБ
  • safe => num: дождитесь записи на этом количестве серверов, прежде чем возвращать
  • fsync => true: синхронизировать запись на диск перед возвратом. fsync => true подразумевает safe=>true, но не наоборот.

Если fsync=>false и safe=>true и запись может быть успешно применена к отображенному файлу, но еще не записана на диск

...