如何创建数据库的MongoDB转储?


Answers:


82

用途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

来源:http : //www.mongodb.org/display/DOCS/Import+Export+Tools


4
要将结果放入单个压缩文件中,请参见unix.stackexchange.com/questions/93139/…–
Donal Lafferty

在mongodb服务器上,数据库将存储在哪个位置?
太空地球

157

要转储数据库以进行备份,请在终端上调用此命令

mongodump --db database_name --collection collection_name

要将备份文件导入到mongodb中,可以在终端上使用以下命令

mongorestore --db database_name path_to_bson_file

2
metas.json对于还原有何意义?
纳宾'18年

103

您还可以gzip用于备份一个集合并动态压缩备份:

mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz

或文件名中带有日期:

mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz

更新:
在日期文件夹中备份数据库的所有集合。这些文件已压缩:

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

1
说:错误:不知道如何处理文件!Gunizpped并尝试了`mongorestore --db db_name'gunzipped文件'
amitchhajer 2015年

2
错字:“
Vivien

7
在3.2版本mongodump或更高版本可以使用--gzip:选择做mongodump_manpage和相同的选项mongorestore
布普


1
@Pyrejkee,最好对这些问题提出新的问题,而不要发表评论。(Windows上的日期有很大不同)
r03

68

此命令将以json和bson格式转储给定数据库。

mongodump -d <database name> -o <target directory>

14

有一个实用程序:mongodump在mongo命令行上,您可以输入:

>./mongodump

上面的代码将创建本地主机上所有数据库的转储。要转储单个集合,请使用:

./mongodump --db blog --collection posts

看看:mongodump


11

您需要以管理员身份在安装Mongo的文件夹中打开命令提示符(在我的情况下为C:\ Program Files \ MongoDB \ Server \ 3.4 \ bin)。如果要转储整个数据库,则可以使用:

mongodump --db database_name

您还可以仅转储某些集合,或转储除某些集合以外的所有集合。

如果您只想转储一个集合(例如用户):

mongodump  --db database_name --collection users

如果要转储除用户集合之外的所有集合:

mongodump  --db database_name --excludeCollection=users

也可以将转储输出到存档文件:

mongodump --archive=test.archive --db database_name

10

定时备份/还原Mongodb。

备份:

sudo mongodump --db db_name --out /path_of_your_backup/`date +"%m-%d-%y"`

--db 数据库名称的参数

--out 输出路径的参数

恢复:

sudo mongorestore --db db_name --drop /path_of_your_backup/01-01-19/db_name/

--drop 恢复之前删除数据库的参数

定时:

您可以使用crontab进行定时备份:

sudo crontab -e

它以编辑器(例如nano)打开

3 3 * * * mongodump --out /path_of_your_backup/`date +"%m-%d-%y"`

每天上午03:03备份

根据您的MongoDB数据库大小,您可能很快就会用完过多的备份来耗尽磁盘空间。因此,还建议定期清理或压缩旧备份。例如,要删除所有7天以上的备份,可以使用以下bash命令:

3 1 * * * find /path_of_your_backup/ -mtime +7 -exec rm -rf {} \;

删除所有早于7天的备份

祝好运。

参考:https : //www.digitalocean.com/community/tutorials/how-to-back-up-restore-and-migrate-a-mongodb-database-on-ubuntu-14-04


8

您可以转储数据库并使用bellow命令进行还原

mongodb  -d <Your_db_name> -o <path of your folder>

例如我的数据库名称正在跟踪,我在转储文件夹中有转储

mongodb  -d tracking -o dump

恢复转储

mongorestore -d <databasename> <dum_path>

mongorestore -d tracking  dump/tracking

8

以下命令连接到远程服务器以转储数据库:

<>可选参数在需要时使用它们

  • host-主机名端口
  • 监听端口用户名
  • db的用户名db
  • 数据库名称ssl
  • 安全连接出
  • 输出到具有名称的已创建文件夹

    mongodump --host --port --username --db --ssl --password --out _date +“%Y-%m-%d”


对于在上面建议的查询错误解析命令行选项后运行该错误的用户:未知选项“ ssl”。删除--ssl后,尝试运行以上查询。对我有用。谢谢。
Anurag_BEHS


2

如果您的数据库在本地系统中。然后,键入以下命令。用于Linux终端

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME

如果数据库用户和密码在那里,那么您将在下面的代码中进行操作。

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME -u DATABASE_USER -p PASSWORD

这在我的Linux终端中非常有效。


1

下面的命令将对mongo db进行转储。

mongodump -d -o

在Windows上:尝试在c:\ mongodump是转储文件位置的位置执行此操作,它将创建json中的元数据,并以bson格式进行备份

C:\ MongoDB \ bin> mongodump -d -oc:\ mongodump


1

出口

mongodump -d <database name> <backup-folder>

进口

mongorestore -d <database name> <backup-folder>

0

或者您可以在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 !!!!!

0

Mongo转储并使用uri还原到本地

mongodump --uri“ mongodb:// USERNAME:PASSWORD @ IP_OR_URL:PORT / DB_NAME” --collection COLLECTION_NAME -o LOCAL_URL

如果不指定--colletion COLLECTION_NAME,它将转储整个数据库。


0

为特定的数据库进行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

0
 Use -v to see progress of backup data
    mongodump -v --db dbname --out /pathforbackup/NewFolderforBackupData

 you can use it for restore also
    mongorestore -v --db dbname --drop /pathforbackup/NewFolderforBackupData/dbname

with multile v like -vvvv you will get more information


-4

mongodump -h主机名-u dbusername -p dbpassword –db dbname –port端口号–out / path / folder

mongodump -h主机名-u dbusername -p dbpassword –db dbname –port端口号–out /path/folder.gz


1. mongodump-是用于创建mongo转储的命令以及我们需要的有关规范的输入。2. -h代表您的mongodb主机名。3. -u代表您的mongodb用户名。4. -p表示密码。5. --db代表我们需要转储的数据库名称。6. --port表示您的mongo运行的端口。7. --out用名称表示转储的目的地。
Anjankumar HN
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.