Mongoexport remote database not connecting - mongodb

I need to export some info from my MongoDB (hosted on MongoHQ // Compose.io) instance. I'm following these instructions, which give all the examples I need and seem to correspond with the official mongo docs. Here's the command i'm running:
mongoexport -h kahana.mongohq.com:12345/my_db_name -u username -p password -d my_db -c usercollection -f "firstName,lastName,macIdNum,iclass" --csv
and the output:
2014-09-17T21:58:12.806-0500 starting new replica set monitor for replica set kahana.mongohq.com:10043 with seeds my_db_name:27017
2014-09-17T21:58:12.806-0500 [ReplicaSetMonitorWatcher] starting
2014-09-17T21:58:12.919-0500 getaddrinfo("my_db_name") failed: nodename nor servname provided, or not known
2014-09-17T21:58:12.952-0500 warning: No primary detected for set kahana.mongohq.com:12345
2014-09-17T21:58:12.952-0500 All nodes for set kahana.mongohq.com:12345 are down. This has happened for 1 checks in a row. Polling will stop after 29 more failed checks
couldn't connect to [kahana.mongohq.com:12345/my_db_name] connect failed to replica set kahana.mongohq.com:12345/my_db_name:27017
Not really sure what the problem is here. Any help would be greatly appreciated!

This should work:
mongoexport -h kahana.mongohq.com:12345 -u username -p password -d my_db -c usercollection -f "firstName,lastName,macIdNum,iclass" --csv
The '-h' hostname option is meant to specify only 'hostname/IP:port'.

Related

How to restore a mongodb backup on a replicaSet?

I made a local backup of my mongodb (version 4) by doing
mongodump -u adminUser --authenticationDatabase admin --gzip --archive=/tmp/file.gz --db <dbname>
Now I would like to restore this data to my remote mongodb, which is a replicaset with two replicas running on a kubernetes cluster.
Normaly I would use
mongorestore -u adminUser --authenticationDatabase admin --gzip --archive=/tmp/file.gz
But how do I do this restore on a replicaset architecture?
Do I have to run a shell on any pod instance?
kubectl exec -it <pod-name> -n mongodb -- bash
You need to connect to a replica set. It needs to be set in connection string uri:
mongorestore --uri="mongodb://adminUser:password#hostname1,hostname2,hostname3/?authSource=admin&replicaSet=<replSetName>"
according documentation you can specify the replica set also with --host parameter
mongorestore -u adminUser --authenticationDatabase admin --host=<replSetName>/hostname1,hostname2,hostname3
mongorestore will connect to the PRIMARY member, data is restored into there and then replicated to SECONDARY members.
If you have to restore a lot of data, then consider Sync by Copying Data Files from Another Member

mongodump "No worthy mechs found" SCRAM-SHA-256

I have a MongoDB replica set with SCRAM-SHA-256 authentication only, and cannot cannot get the mongodump command to work on Ubuntu.
mongodump -h xxx.xxx.xxx.xxx:xxxx -u xxxx -p xxxx --authenticationDatabase xxxx --authenticationMechanism SCRAM-SHA-256 --db xxxx -c xxxx -q "{xxxx}" -o "xxxx/xxxx"
Failed: error connecting to db server: cannot establish SASL session: SASL(-4): no mechanism available: No worthy mechs found
I have installed every sasl2 library I could find and set every environment variable I could think of.
Anyone out there able to tell me what I'm missing?

mongodump from remote node - unable to authenticate using mechanism "SCRAM-SHA-256"

Tried taking dump from a remote node and got the following error:
Failed: can't create session: could not connect to server:
connection(): auth error: sasl conversation error: unable to
authenticate using mechanism "SCRAM-SHA-256": (AuthenticationFailed)
Authentication failed.
Tried two methods to take dump from the remote node. But got the same error in both the methods.
# Method 1
mongodump -h remoteip#port -u xxx -p xxx --db xxx --authenticationDatabase xxx
# Method 2
mongodump --uri "mongodb://username:password#remoteip:port/db?authSource=xxx"
How to resolve this?
For me (trying to use mongodump on a single node DB on the same host), using --authenticationDatabase admin did the trick:
mongodump -u root --password 'secret' --authenticationDatabase admin -d mongo-dev -o /tmp/dump-2020-11-27.bson
(courtesy of mongodump from remote node - unable to authenticate using mechanism "SCRAM-SHA-256")
1.If you are using an URI for mongodump command,--authenticationDatabase admin option is equivalent to ?authSource=admin
mongodump --uri "mongodb://[username:password#]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"
sample url:
mongodump --uri "mongodb+srv://username1:password1#host1/db1?authSource=admin"
I had the same issue. In my case, the password has special characters. It works with single quote for password:
-p 'my_password'
I had the same problem and solved it using single quotes in the password like this:
--password 'secret'
Was in the same spot that you are, solved it this way:
mongodump --uri "mongodb+srv://username:password#yourmongodbclustersourceurl" --archive \
mongorestore --uri "mongodb+srv://username:password#yourmongodbclusterdestinationurl" --archive \
--nsExclude "admin.system.*"
Needless to mention, you just need to change your username, password and the url in this formula and voila. Good luck.

Mongorestore command doesn't work as expected

i am trying to import my database to my mongoLab database, but it keep showing the following error:
2016-10-19T21:05:49.183+0800 Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.
-bash: vd: command not found
This is how I ran my command:
mongorestore -h 243253423.mlab.com:2131242 -d meteor -u <Username> -p <Password> /Users/directory/desktop/mongo/dump
I ran across this error message and I am not sure this was your specific problem but this ended up working for me
mongorestore -d production-db \
-u myusername -p MyPassword \
--authenticationDatabase admin --host mydomain.com \
~/tmp/mongodump/local-production-db/
(be sure to check firewall sudo ufw status and net.bindIp sudo nano /etc/mongod.conf to confirm that you have access and your mongo process is listening on an external port)

Mongodump from remote server

We recently ported some data over to MongoDB and are now looking into running daily backups, preferably from a cron job, and restore one of the backups to a secondary mongo database.
Our system is set up as follows:
server 1: the development mongo database
server 2: two mongo databases, one for staging data and one for production
server 3: is where we run all of our cron jobs/batch scripts from.
I checked the mongo docs, and logged into our cron job server and tried to run the following command: (username, host, and password changed for security, I'm not actually connecting to localhost)
mongodump --host 127.0.0.1/development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1
I get the following messages:
Mon Oct 7 10:03:42 starting new replica set monitor for replica set 127.0.0.1 with seed of development:27017
Mon Oct 7 10:03:42 successfully connected to seed development:27017 for replica set 127.0.0.1
Mon Oct 7 10:03:42 warning: node: development:27017 isn't a part of set: 127.0.0.1 ismaster: { ismaster: true, maxBsonObjectSize: 16777216, ok: 1.0 }
Mon Oct 7 10:03:44 replica set monitor for replica set 127.0.0.1 started, address is 127.0.0.1/
Mon Oct 7 10:03:44 [ReplicaSetMonitorWatcher] starting couldn't connect to [127.0.0.1/development:27017] connect failed to set 127.0.0.1/development:27017
I confirmed that I can connect to the mongo database using mongo -u -p ip/development
Our ultimate goal will be to dump the data from the production database and store it in the staging database. These two databases are both located on the same box, if that makes a difference, but for testing purposes I am just trying to get a backup of development test data.
mongo client can parse MongoDB connection string URI, so instead of specifying all connection parameters separately you may pass single connection string URI.
In your case you're trying to pass connection URI as a host, but 127.0.0.1/development is not a valid host name. It means you should specify database parameter separately from the host:
mongodump --host 127.0.0.1 -d development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1
You can use with mongodump with --uri
mongodump --uri "mongodb://usersname:password#127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" --out "C:\Umesh"
All your collections will store inside the out folder it will create directory name as your Database name and all the collections are bson and metadata will store as json format.
For restore
mongorestore --uri "mongodb://usersname:password#127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" -d dbname mongodbumppath
Try this it will work.
This worked for me.
Reference: https://docs.mongodb.com/manual/reference/program/mongodump
Syntax 1:
mongodump --host <hostname:port> --db <database> --username <username> --password <password> --out <path>
Syntax 2:
mongodump -h <hostname:port> -d <database> -u <username> -p <password> -o <path>
Example 1:
mongodump --host 127.0.0.1:27017 --db db_app --username root --password secret --out /backup/db/app-17-03-07
Example 2:
mongodump -h 127.0.0.1:27017 -d db_app -u root -p secret -o /backup/db/app-17-03-07
mongodump --host remotehostip:port --db dbname -u username -p password
Here is an example of exporting collection from node server to local machine:
Host : xxx.xxx.xxx.xx
Port :27017
Username:”XXXX”
Password :”YYYY”
AuthDB : “admin”
“DB”: “mydb”
D:\mongodb-backup>mongodump -h xxx.xxx.xxx.xxx –port 27017 -u “XXXX” -p “YYYY” –authenticationDatabase “admin” –db “mydb”
Use this to get dump using URI:
mongodump --uri=mongodb+srv://john:xxxxxxxxxxxxxxx#cluster0-jdtjt.mongodb.net/sales
You can also use gzip for taking backup of one collection and compressing the backup on the fly
mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz
Or with a date in the file name:
mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz
This worked to me like a charm for a single collection with a remote Windows Server.
mongodump --host <remote_ip> --port <mongo_port> --db <remote_db_name> --authenticationDatabase <remote_auth_db> --username <remote_mongo_username> --password <remote_db_pwd> --out <local_DB_backup_folder> --collection <remote_collection_name>
On Mac, this is what worked for me (but be sure to use your own real credentials):
brew tap mongodb/brew
brew install mongodb-community#5.0
brew services start mongodb/brew/mongodb-community
mongodump --uri "mongodb://usersname:password#127.0.0.1:27100/dbname" --out "/Users/some_username/code/mongodb_dumps/dump/"
cd /Users/some_username/code/mongodb_dumps/
mongorestore --nsInclude "*.*"
mongodump --host hostip -d dbname --port portnumber --username username --password password --authenticationDatabase admin -o ./path/of/backupfolder
note: "./path/of/backupfolder" path is in your client
This worked for me:
Step1: Export remote/local DB.
mongodump --uri "mongodb+srv://USER:PASSWORD........." --out "/Users/Hardik/Desktop/mongo_bkp"
Step2: Import
mongorestore ./mongo_bkp/
Posting this here in case it helps somebody.
It was impossible for me to connect using mongodump. I ended up installing the VS Code Mongo extension and it generated the string for me. The command looks like this:
mongodump -o dump_destination --uri "mongodb://<USERNAME>:<PASSWORD>#<HOST>:<PORT>/<DATABASENAME>?authSource=admin&readPreference=primary&ssl=true"