mongodb mongodump mongorestore

Я выполнил «mongodump» на кластере из 3 сегментов для базы данных размером 600 ГБ и порциями, равномерно распределенными по всем 3 сегментам.

Моя команда mongodump была такой:

mongodump --db mydb123 --authenticationDatabase admin --journal -u root -p password123 -o mydb123

Чанки были распределены по всем трем шардам примерно одинаково. ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++

Затем я переместил файл дампа в новый кластер и выполнил «mongorestore» этого файла дампа на новом кластере с двумя сегментами. Размер этой базы данных сейчас составляет всего 80 ГБ. Думаю, это ожидаемо (компактное действие). Но вот моя проблема: в новом кластере с двумя сегментами выполнение команды «sh.status ()» не показывает ЧАНКИ для этой базы данных. Моя команда mongorestore была такой:

mongorestore -u root -p newpass123 --authenticationDatabase admin --verbose / data / db / backups / new_dir / mydumpfile

+++++++++++++++++++++++++++++++++++ При выполнении этой команды mongorestore не было ошибок. Фактический результат SH.STATUS () показан ниже:

mongos> sh.status () --- Статус сегментирования --- версия сегментирования: {"_id": 1, "version": 3, "minCompatibleVersion": 3, "currentVersion": 4, "clusterId": ObjectId (" 52efaaa0a83668acafc3bcb0 ")} шарды: {" _id ":" sh1 "," host ":" sh1 / hfdvmprmongodb1: 27000, hfdvmprmongodb2: 27000 "} {" _id ":" sh2 "," host ":" sh2 / hfdv00 " , hfdvmprmongodb2: 27001 "} базы данных: {" _id ":" admin "," partitioned ": false," primary ":" config "} {" _id ":" test "," partitioned ": false," primary ": "sh1"} {"_id": "цена", "partitioned": true, "primary": "sh2"} {"_id": "mokshapoc", "partitioned": true, "primary": "sh1"}

mongos> isBalancerRunning () Вт, 4 февраля 11: 09: 39.242 ReferenceError: isBalancerRunning не определен mongos> sh.isBalancerRunning () true

++++++++++++++++++++++++++++++++++++++++++++++++++ ++ Итак, я полностью завершил mongorestore и не показывал ЧАНКИ для базы данных 80 ГБ (которая раньше была базой данных 600 ГБ во время выполнения mongodump)

Меня очень смущает тот факт, что я не вижу никаких кусков. (размер ожидался меньше, да и намного меньше)

версия на обоих кластерах одинакова: версия оболочки MongoDB: 2.4.6

Спасибо, vr


person vrdba    schedule 04.02.2014    source источник
comment
Я не собираюсь быть экспертом по mongodb. Просто мне кажется, я где-то слышал, что сплиты срабатывают вставками. Попробуйте вставить новый документ в свою сегментированную коллекцию. Может быть, это поможет.   -  person facha    schedule 04.02.2014
comment
Я подозреваю, что вы восстановили в другой базе данных, статус которой не проверяете. Отредактируйте вопрос, включив в него вызов mongo или mongos и последующую команду, чтобы мы видели, к какой базе данных вы подключаетесь.   -  person Kevin J. Rice    schedule 04.02.2014
comment
Чтобы ответить на комментарий Кевина Дж. Райса (см. Чуть выше), я хотел бы уточнить, что имя базы данных в mongodump и в mongorestore было одинаковым. Однако я должен соответствовать корпоративной политике, и я удалил фактическое имя базы данных и информацию об имени пользователя / пароле из исходного сообщения. Извините, если это вызвало путаницу. Спасибо за ваш вклад и помощь. VR   -  person vrdba    schedule 05.02.2014
comment
Вы уже создали и сегментировали свою целевую базу данных и коллекции перед запуском mongorestore? mongorestore не изменяет никаких параметров сегментирования для целевой базы данных, поэтому отсутствие фрагментов может быть связано с тем, что ваша цель не сегментирована.   -  person Stennie    schedule 05.02.2014
comment
Нет, я не создавал эту базу данных в новом кластере перед запуском mongorestore и нет, я также не создавал никакой коллекции. Я понимал, что mongorestore создаст эту базу данных, и поскольку она была сегментирована в исходном кластере, она будет принудительно сегментирована в моем новом кластере. (и я был того же мнения о коллекциях внутри этой базы данных - mongorestore тоже позаботится об этом). Я ошибаюсь в этих предположениях? И не могли бы вы указать мне ссылку на документацию, которая охватывает эту конкретную область. Спасибо, VR   -  person vrdba    schedule 05.02.2014
comment
@vrdba, дамп, созданный mongodump, не отражает фрагменты или распределение данных. Если вы хотите распределить данные по шардам при восстановлении дампа в сегментированный кластер, вы должны сегментировать коллекцию перед запуском mongorestore. Дополнительную информацию можно найти здесь: docs.mongodb.org/manual/tutorial/   -  person Linda Qin    schedule 05.03.2014


Ответы (1)


mongodump выгружает данные и индексы для всех коллекций в базе данных (или баз данных, если вы сбрасываете много). Он не создает дамп каких-либо метаданных, кроме индексов, что означает, что если вы восстановите дамп в сегментированной коллекции, он будет сегментирован (разбит на части, сбалансирован). Если вы восстановите данные в незащищенную коллекцию, они останутся незащищенными.

Пришел ли дамп из сегментированной коллекции, не имеет значения, поскольку эта информация остается в кластере и не идет вместе с данными.

person Asya Kamsky    schedule 27.04.2014