2017-01-13 2 views
1

У меня есть коллекция, которая автоматически используется для имитации ввода пользователя. Раньше у меня было 32000+ документов, теперь только 2000. Моя коллекция вчера была снижена, и я не знаю, что произошло.Моя коллекция mongodb упала. Как я могу узнать, что произошло?

К счастью, на каждом документе есть метка времени, поэтому я вижу точно , когда это произошло. (Самый старый документ только в один день, есть новые каждые 2 минуты.) Как я могу видеть , что случилось?

Скорее всего, это был сценарий, поэтому он не отображается в .dbshell, который в любом случае ограничен до 99 строк. Есть ли история что-нибудь сделано к базе, а не только вручную?

Есть ли способ узнать, что вызвало это?

Дополнительная информация: Я единственный, у кого есть доступ к базе на данный момент, и у меня есть только один скрипт, который может удалить мои таблицы, я не трогал его в возрасте.

+0

Если кто-то любопытно, я нашел корень проблемы. Это похоже на [это] (http://dba.stackexchange.com/questions/160690/mongodb-ransom-attack-and-its-solution) –

ответ

1

Проверить этот ответ https://stackoverflow.com/a/15204638/4996928 на StackOverflow

Я в конечном итоге решить это, начав mongod как это (забиваются и некрасиво, да ... но работает для среды разработки):

mongod --profile=1 --slowms=1 & 

Это позволяет профилирование и устанавливает порог для «медленных запросов» как 1мс, в результате чего все запросы регистрируются как «медленные запросы» в файл:

/var/log/mongodb/mongodb.log 

сейчас Я получаю непрерывные выходы лог с помощью команды:

tail -f /var/log/mongodb/mongodb.log 

Пример журнала:

Mon Mar 4 15:02:55 [conn1] query dendro.quads query: { graph: "u:http://example.org/people" } ntoreturn:0 ntoskip:0 nscanned:6 keyUpdates:0 locks(micros) r:73163 nreturned:6 reslen:9884 88ms 
+0

Я предполагаю, что раньше не было профилирования, поэтому я могу отслеживать будущие ошибки но не этот? –

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