Назад | Перейти на главную страницу

Набор реплик mongo не может импортировать пример ресторана json

Я новичок в mongo, и я только что настроил локальный набор реплик на своем ноутбуке.

Пытаюсь импортировать демо-базу ресторанов отсюда: https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/dataset.json

и выполнил команду mongoimport следующим образом:

mongoimport -v --db test --collection restaurants --drop --file dataset.json

Завершить импорт просто остановится на 45%

2015-12-29T12:42:56.847-0500    filesize: 11880944 bytes
2015-12-29T12:42:56.847-0500    using fields:
2015-12-29T12:42:56.859-0500    connected to: localhost
2015-12-29T12:42:56.859-0500    ns: test.restaurants
2015-12-29T12:42:56.860-0500    connected to node type: replset
2015-12-29T12:42:56.860-0500    using write concern: w='majority', j=false, fsync=false, wtimeout=0
2015-12-29T12:42:56.861-0500    dropping: test.restaurants
2015-12-29T12:42:56.864-0500    using write concern: w='majority', j=false, fsync=false, wtimeout=0
2015-12-29T12:42:59.859-0500    [#########...............] test.restaurants     4.5 MB/11.3 MB (39.9%)
2015-12-29T12:43:02.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:05.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:08.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:11.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:14.849-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:17.849-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:20.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:23.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:26.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:29.849-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:32.849-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:35.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:38.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:41.849-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:44.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:47.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:50.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:53.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:56.850-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:43:59.849-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:44:02.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:44:05.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:44:08.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:44:11.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)
2015-12-29T12:44:14.848-0500    [##########..............] test.restaurants     5.2 MB/11.3 MB (45.5%)

На ведомом устройстве создается тест базы данных, но если я попытаюсь найти: db.restaurants.find ();

Я вернусь :

Error: error: { "$err" : "not master and slaveOk=false", "code" : 13435 }

Это моя конфигурация реплики от мастера:

    repl1:PRIMARY> rs.config()
{
        "_id" : "repl1",
        "version" : 7,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "mongo1:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : 0,
                        "votes" : 1
                },
                {
                        "_id" : 1,
                        "host" : "mongo2:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : 0,
                        "votes" : 1
                },
                {
                        "_id" : 2,
                        "host" : "mongo3:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : 0,
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatTimeoutSecs" : 10,
                "getLastErrorModes" : {

                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                }
        }
}

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

Где я могу найти дополнительную информацию о том, что происходит?

Завершить импорт просто остановится на 45%

Наверное, это нормально и просто построение индексов. Или у вас могут закончиться некоторые системные ресурсы, или это может быть просто медленно. Следите за журналами для этого mongod процесс для получения дополнительной информации. Проверьте свой диск на наличие свободного места и проверьте top или любые инструменты системного мониторинга, которые вам нужны, чтобы увидеть, какие ресурсы используются, в то время как импорт, кажется, остановлен на 45%.

На ведомом устройстве создается тест базы данных, но если я попытаюсь найти: db.restaurants.find ();

Я вернусь :

Error: error: { "$err" : "not master and slaveOk=false", "code" : 13435 }

Вы не можете запрашивать данные на вторичном сервере, не сообщив сначала своему драйверу или оболочке mongo, что это нормально. Бегать rs.slaveOk() сначала, а затем вы можете запустить свой find() запрос.

Это был брандмауэр, который блокировал обратную связь ведомых устройств с мастером. Мастер смог связаться с подчиненными, но подчиненные не смогли ответить.

Если у вас есть подобная проблема, проверьте свой firewalld, если вы используете Centos7

Для импорта вы можете попробовать этот код:

mongoimport --db <database-name> --collection <collection-name> --file ~/path/file-name.json