Несколько вещей:
- В общем случае cloneCollection используется для разных экземпляров mon go, но не для копирования в одни и те же экземпляры.
- Также, если вы используете
v4.2
, вам следует прекратить использовать copyDB
& cloneCollection
, поскольку они устарели совместимость с v4.2 и начать использовать mongodump и mongorestore или mongoexport & mongoimport . Я бы предложил использовать mongodump & mongorestore :
- Причина mongodump сохранит типы данных MongoDB, т.е.
bson
типов. - mongodump создает двоичный файл, где mongoexport будет преобразовывать
bson
в json
и снова mongoimport будет преобразовывать json
до bson
во время записи, поэтому они медленные. Вы можете использовать mongoexport & mongoimport, когда хотите визуально проанализировать данные своих коллекций или использовать данные json
для любых других целей.
Вы можете запустить скрипт ниже в оболочке
declare - a collections = ("collectionName1" "collectionName2")
for i in "${collections[@]}"
do
echo "$i"
mongodump --host "All-shards" --username=uname --password password --ssl --authenticationDatabase admin --db dbname --collection "$i"
mongorestore --host=host-shard-name --port=27017 --username=uname --password=psswrd --ssl --authenticationDatabase=admin --db=dbname --collection= "$i" ./dump/dbName/"$i".bson;
done
Чтобы использовать mongodump , вы должны запустить mongodump для работающего экземпляра mongod или mongos. Таким образом, эти команды выполняются, ожидая, что mon go правильно установлен и настройка пути хороша, если нет, вы можете перейти к папке mon go и работать как ./mongodump
& ./mongorestore
. Вышеуказанный скрипт будет полезен, если вы хотите сделать резервную копию нескольких коллекций. Вам нужно указать в скрипте несколько вещей, таких как:
mongodump--host "All-shards"
-> Здесь вам нужно указать все шарды, если ваш MongoDB набор реплик, если вы не можете указать localhost:27017
.
mongorestore --host=host-shard-name
-> Вы должны указать один осколок набора реплик, иначе ваш localhost
, Мало что здесь может быть необязательным --ssl
, --username
, --password
.
- Таким образом, mongodump впервые создаст папку с именем dump , которая будет иметь подпапки с dbNames, а каждая подпапка будет иметь
bson
файлы, соответствующие именам их коллекций, сброшены, поэтому вам нужно указать dbName
в команде восстановления, а имя коллекции будет взято из переменной i
-> ./dump/dbName/"$i".bson
Примечание: MongoDB v3.2
настолько старый и в облачной службе MongoDB Пн go -atlas он уже достиг конца своего жизненного цикла, поэтому обновите его как можно скорее. Если вы ищете бесплатный экземпляр mon go или начинаете с MongoDB - вы можете попробовать атлас.