我们最近将一些数据移植到MongoDB,现在正在研究运行每日备份,最好是从cron作业中,并将其中一个备份还原到辅助mongo数据库。
我们的系统设置如下:
- 服务器 1:开发 MONGO 数据库
- 服务器 2:两个 Mongo 数据库,一个用于暂存数据,一个用于生产
- 服务器 3:是我们运行所有 cron 作业/批处理脚本的地方。
我检查了 mongo 文档,并登录到我们的 cron 作业服务器并尝试运行以下命令:(为了安全起见,用户名、主机和密码已更改,我实际上并没有连接到本地主机(
mongodump --host 127.0.0.1/development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1
我收到以下消息:
周一 10月 7 10:03:42 启动副本集 127.0.0.1 的新副本集监视器,并带有开发种子:27017
周一 10 月 7 日 10:03:42 已成功连接到种子 开发:27017 副本集 127.0.0.1
周一 10 月 7 日 10:03:42 警告: 节点: 开发:27017 不是集合的一部分: 127.0.0.1 ismaster: { ismaster: true, maxBsonObjectSize: 16777216, ok: 1.0 }
周一 10 月 7 日 10:03:44 副本集监视器 127.0.0.1 启动,地址为 127.0.0.1/
周一 10 月 7 日 10:03:44 [副本集监视器观察器] 启动无法连接到 [127.0.0.1/开发:27017] 连接失败设置127.0.0.1/开发:27017
我确认可以使用mongo -u -p ip/development
连接到 mongo 数据库
我们的最终目标是从生产数据库中转储数据并将其存储在临时数据库中。这两个数据库都位于同一个盒子上,如果这有什么不同的话,但出于测试目的,我只是想备份开发测试数据。
mongo
客户端可以解析MongoDB连接字符串URI,因此可以传递单个连接字符串URI,而不是单独指定所有连接参数。
在您的情况下,您尝试将连接 URI 作为host
传递,但127.0.0.1/development
不是有效的主机名。这意味着您应该database
参数与host
分开指定:
mongodump --host 127.0.0.1 -d development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1
你可以与 mongodump 一起使用--uri
mongodump --uri "mongodb://usersname:password@127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" --out "C:Umesh"
您的所有集合都将存储在 out 文件夹中,它将创建目录名称作为您的数据库名称,所有集合都是 bson,元数据将存储为 json 格式。
用于还原
mongorestore --uri "mongodb://usersname:password@127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" -d dbname mongodbumppath
试试这个它会起作用。
这对我有用。
参考: https://docs.mongodb.com/manual/reference/program/mongodump
语法 1:
mongodump --host <hostname:port> --db <database> --username <username> --password <password> --out <path>
语法 2:
mongodump -h <hostname:port> -d <database> -u <username> -p <password> -o <path>
示例 1:
mongodump --host 127.0.0.1:27017 --db db_app --username root --password secret --out /backup/db/app-17-03-07
示例 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
下面是将集合从节点服务器导出到本地计算机的示例:
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”
使用它来获取使用 URI 的转储:
mongodump --uri=mongodb+srv://john:xxxxxxxxxxxxxxx@cluster0-jdtjt.mongodb.net/sales
您还可以使用 gzip 备份一个集合并即时压缩备份
mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz
或者在文件名中包含日期:
mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz
这对我来说就像一个带有远程 Windows 服务器的单个集合的魅力。
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>
在Mac上,这对我有用(但一定要使用你自己的真实凭据(:
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
注意:"./path/of/backupfolder"路径在您的客户端中
我有用:
步骤1:导出远程/本地数据库。
mongodump --uri "mongodb+srv://USER:PASSWORD........." --out "/Users/Hardik/Desktop/mongo_bkp"
步骤2:导入
mongorestore ./mongo_bkp/
在这里发布这个以防它对某人有帮助。
我不可能使用 mongodump 进行连接。我最终安装了 VS Code Mongo 扩展,它为我生成了字符串。该命令如下所示:
mongodump -o dump_destination --uri "mongodb://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DATABASENAME>?authSource=admin&readPreference=primary&ssl=true"