Database 如何创建数据库的MongoDB转储?
我应该使用和运行什么命令?使用Database 如何创建数据库的MongoDB转储?,database,mongodb,database-dump,Database,Mongodb,Database Dump,我应该使用和运行什么命令?使用mongodump: $ ./mongodump --host prod.example.com connected to: prod.example.com all dbs DATABASE: log to dump/log log.errors to dump/log/errors.bson 713 objects log.analytics to dump/log/analytics.b
mongodump
:
$ ./mongodump --host prod.example.com
connected to: prod.example.com
all dbs
DATABASE: log to dump/log
log.errors to dump/log/errors.bson
713 objects
log.analytics to dump/log/analytics.bson
234810 objects
DATABASE: blog to dump/blog
blog.posts to dump/log/blog.posts.bson
59 objects
DATABASE: admin to dump/admin
来源:有一个名为:mongodump的实用程序 在mongo命令行上,您可以键入:
>./mongodump
上述操作将创建本地主机上所有数据库的转储。要转储单个集合,请使用:
./mongodump --db blog --collection posts
查看:您还可以使用
gzip
对一个集合进行备份并动态压缩备份:
mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz
或者文件名中有日期:
mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz
更新:备份日期文件夹中数据库的所有集合。这些文件是gziped:
mongodump --db somedb --gzip --out /backups/`date +"%Y-%m-%d"`
或者对于单个存档:
mongodump --db somedb --gzip --archive > dump_`date "+%Y-%m-%d"`.gz
或者当mongodb在docker内部运行时:
docker exec <CONTAINER> sh -c 'exec mongodump --db somedb --gzip --archive' > dump_`date "+%Y-%m-%d"`.gz
docker exec sh-c'exec mongodump--db somedb--gzip--archive'>dump_`date“+%Y-%m-%d”`.gz
此命令将以json和bson格式转储给定数据库
mongodump -d <database name> -o <target directory>
mongodump-d-o
要转储数据库进行备份,请在终端上调用此命令
mongodump --db database_name --collection collection_name
要将备份文件导入mongodb,可以在终端上使用以下命令
mongorestore --db database_name path_to_bson_file
或者您可以在Windows上创建备份脚本,请记住将Winrar添加到%PATH%
bin\mongodump --db=COL1 -o D:\BACK\COL1
rar.exe a -ep1 -r COL1.rar COL1
rename COL1.rar "COL1_%date:~10,4%_%date:~7,2%_%date:~4,2%_%time:~0,2%_%time:~3,2%.rar"
#rmdir /s /q COL1 -> don;t run this on your mongodb/ dir !!!!!
为特定数据库进行mongodb备份,并使用bin sh命令删除7天的备份:-
#!/bin/bash
MONGO_DATABASE="nexgtv_16"
APP_NAME="test"
MONGO_HOST="127.0.0.1"
MONGO_PORT="27017"
TIMESTAMP=`date +%F-%H%M`
MONGODUMP_PATH="/usr/bin/mongodump"
BACKUPS_DIR="/home/mongodbbackups/backups/$APP_NAME"
BACKUP_NAME="$APP_NAME-$TIMESTAMP"
$MONGODUMP_PATH -d $MONGO_DATABASE
mkdir -p $BACKUPS_DIR
mv dump $BACKUP_NAME
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
rm -rf $BACKUP_NAME
find /home/mongodbbackups/backups/test/ -mindepth 1 -mtime +7 -delete
下面的命令将用于获取mongo db的转储 mongodump-d-o 在Windows上:在c:\mongodump是转储文件位置的情况下尝试此操作, 它将以json格式创建元数据,并以bson格式进行备份 C:\MongoDB\bin>mongodump-d-o C:\mongodump
mongodump-h hostname-u dbusername-p dbpassword--db dbname--port portnumber--out/path/folder
mongodump-h hostname-u dbusername-p dbpassword-db dbname-port portnumber-out/path/folder.gz您需要以管理员身份在安装Mongo的文件夹中打开命令提示符(在我的示例中:C:\Program Files\MongoDB\Server\3.4\bin)。 如果要转储整个数据库,只需使用:
mongodump --db database_name
您还可以仅转储某些集合,或转储除某些集合以外的所有集合
如果只希望转储一个集合(例如用户):
如果要转储除用户外的所有集合:
mongodump --db database_name --excludeCollection=users
也可以将转储输出到存档文件:
mongodump --archive=test.archive --db database_name
以下命令连接到远程服务器以转储数据库: 如果需要,可选参数将使用它们
- 主机-主机名端口
- 侦听端口用户名
- 数据库的用户名
- 数据库名称ssl
- 安全连接输出
- 输出到具有名称的已创建文件夹 mongodump--主机--端口--用户名--数据库--ssl--密码--过期日期+%Y-%m-%d
您可以使用下面的命令转储数据库并进行恢复
mongodb -d <Your_db_name> -o <path of your folder>
恢复转储
mongorestore -d <databasename> <dum_path>
mongorestore -d tracking dump/tracking
mongorestore-d
mongorestore-d跟踪转储/跟踪
Mongo使用uri将转储和还原到本地
mongodump --uri "mongodb://USERNAME:PASSWORD@IP_OR_URL:PORT/DB_NAME" --collection COLLECTION_NAME -o LOCAL_URL
省略--collection collection\u NAME将转储整个数据库。定时备份/恢复Mongodb 备份:
sudo mongodump --db db_name --out /path_of_your_backup/`date +"%m-%d-%y"`
sudo mongorestore --db db_name --drop /path_of_your_backup/01-01-19/db_name/
--db
数据库名称的参数
--out
输出路径的参数
恢复:
sudo mongodump --db db_name --out /path_of_your_backup/`date +"%m-%d-%y"`
sudo mongorestore --db db_name --drop /path_of_your_backup/01-01-19/db_name/
--还原前删除数据库的drop
参数
计时:
sudo mongodump --db db_name --out /path_of_your_backup/`date +"%m-%d-%y"`
sudo mongorestore --db db_name --drop /path_of_your_backup/01-01-19/db_name/
您可以使用crontab定时备份:
sudo crontab -e
它通过编辑器打开(如nano)
每天凌晨3:03备份
根据MongoDB数据库的大小,您可能很快就会用完磁盘
备份过多的空间。这就是为什么也建议清洁
定期或压缩旧备份。例如,删除
所有早于7天的备份都可以使用以下bash
命令:
删除所有早于7天的备份
祝你好运
参考:
在windows中使用“路径”,否则会出现以下错误:如果您的数据库位于本地系统中,则不允许使用位置参数。然后键入下面的命令。 用于Linux终端
mongodump -h SERVER_NAME:PORT -d DATABASE_NAME
若数据库用户和密码都在那个里,那个么你们可以在下面的代码中找到它们
mongodump -h SERVER_NAME:PORT -d DATABASE_NAME -u DATABASE_USER -p PASSWORD
这在我的Linux终端上运行得非常好
编辑:根据最新版本的MongoDB v4.4.2更新命令
输出
mongodump -d <database name> -o <backup-folder>
mongodump-d-o
导入
mongorestore -d <database name> --dir <backup-folder>
mongorestore-d--dir
显示:错误:不知道如何处理文件!Gunizzed并尝试了“MongoStore--db db_name”gunzipped file”打字:“-db”=>“--db”在mongodump
或更高版本中,您可以使用--gzip
选项来实现这一点:对于@Pyrejkee:@Pyrejkee,同样的选项,最好针对这些问题提出新的问题,而不是评论。(windows上的日期非常不同)要将结果放在单个压缩文件中,请参阅mongodb服务器上的数据库存储位置?请参阅此链接@太空地球1号。mongodump-是一个用于创建mongo转储的命令,我们需要有关规范化的输入。2. -h表示您的mongodb主机名。3. -u代表您的mongodb用户名。4. -p代表佩剑。5. --db表示我们需要转储的数据库名。6. --port表示mongo正在运行的端口。7. --out表示名为的转储的目标。metadata.json对还原有什么意义?只需一个mongodump
,不带任何标志,运行上述建议的查询-错误解析命令行选项:未知选项“ssl”后,您将获得dump folder,供出现此错误的用户使用。尝试在删除--ssl后运行上述查询。这对我很有效。谢谢。简单快捷的选项非常感谢Arnav,非常感谢。我们如何用一个命令恢复所有集合(bson文件)?使用此命令恢复所有集合-mongorestore--db
mongodump -d <database name> -o <backup-folder>
mongorestore -d <database name> --dir <backup-folder>