2015-03-04 5 views
1

У меня есть существующий mongodump одной коллекции, которую я пытаюсь восстановить. После запуска восстановления mongo ошибок не обнаружено, а данных нет в коллекции. Существуют ли какие-либо известные причины, как это может произойти? Я ожидал бы, если данные по какой-то причине не были вставлены, в журнале будет указана ошибка.Mongorestore не восстанавливает данные

Чтобы создать и попытаться восстановить дамп, я последовал ответ, предусмотренный этот вопрос: How to use mongodump for 1 collection

Я создал новую базу данных на другой сервер и имеет пустую коллекцию. Я проверил файл журнала mongo и ошибок нет, он показывает, что соединение открыто и аутентифицировано, а затем отключается на следующей строке.

mongorestore -vvvvv -u user -p 'password' --db=MyDatabase --collection=MyCollection dump1/MyCollection.bson 
2015-03-04T18:20:31.331+0000 creating new connection to:127.0.0.1:27017 
2015-03-04T18:20:31.332+0000 [ConnectBG] BackgroundJob starting: ConnectBG 
2015-03-04T18:20:31.332+0000 connected to server 127.0.0.1:27017 (127.0.0.1) 
2015-03-04T18:20:31.332+0000 connected connection! 
connected to: 127.0.0.1 
2015-03-04T18:20:31.333+0000 drillDown: dump1/MyCollection.bson 
2015-03-04T18:20:31.333+0000 dump1/MyCollection.bson 
2015-03-04T18:20:31.333+0000 going into namespace [MyDatabase.MyCollection] 
Restoring to MyDatabase.MyCollection without dropping. Restored data will be inserted without raising errors; check your server log 
     file size: 94876 
130 objects found 
2015-03-04T18:20:31.336+0000 Creating index: { key: { _id: 1 }, name: "_id_", ns: "MyDatabase.MyCollection" } 
2015-03-04T18:20:31.340+0000 Creating index: { key: { geometry: "2dsphere" }, name: "geometry_2dsphere", ns: "MyDatabase.MyCollection", 2dsphereIndexVersion: 2 } 

Файл журнала:

2015-03-04T18:20:31.333+0000 [conn874] authenticate db: MyDatabase { authenticate: 1, nonce: "xxx", user: "user", key: "xxx" } 
2015-03-04T18:20:31.342+0000 [conn874] end connection 127.0.0.1:59420 (25 connections now open) 

Запрос Я использую по происхождению и назначению является:

db.MyCollection.find() 

На сервере происхождения, коллекция насчитывает 130 элементов, что и также показан в проходе монгорестора «130 найденных объектов».

Edit:

Я добавил --drop опцию в команде mongorestore. Выход файла журнала ясно показывает, что он создает индекс в пустой коллекции.

2015-03-20T15:03:57.565+0000 [conn61965] authenticate db: MyDatabase { authenticate: 1, nonce: "xxx", user: "user", key: "xxx" } 
2015-03-20T15:03:57.566+0000 [conn61965] CMD: drop MyDatabase.MyCollection 
2015-03-20T15:03:57.631+0000 [conn61965] build index on: MyDatabase.MyCollection properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "MyDatabase.MyCollection" } 
2015-03-20T15:03:57.631+0000 [conn61965]   added index to empty collection 
2015-03-20T15:03:57.652+0000 [conn61965] build index on: MyDatabase.MyCollection properties: { v: 1, key: { geometry: "2dsphere" }, name: "geometry_2dsphere", ns: "MyDatabase.MyCollection", 2dsphereIndexVersion: 2 } 
2015-03-20T15:03:57.652+0000 [conn61965]   added index to empty collection 
2015-03-20T15:03:57.654+0000 [conn61965] end connection 127.0.0.1:59456 (21 connections now open) 
+0

Можете ли вы продемонстрировать/убедиться, что находитесь в правильной базе данных ('' MyDatabase'') в пункте назначения при проверке результатов? – helmy

+0

Я повторил весь процесс и могу проверить, что я в правильной базе данных. – thaspius

ответ

1

Таким образом, проблема закончилась тем, что пользователь, которого я пытался выполнить восстановление, имел только роли чтения и dbAdmin. Я сделал отдельного пользователя, чтобы обычный пользователь, использующий приложение, не имел административных прав. После изменения роли моего пользователя из read в readWrite он работал, как ожидалось.

Если честно, если у пользователя не было правильных разрешений, я действительно ожидал, что журнал покажет какую-либо ошибку при попытке запустить восстановление без правильного разрешения.

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

  • Нет связанных вопросов^_^