首页 > 代码库 > MongoDB-备份和恢复

MongoDB-备份和恢复

MongoDB 备份(mongodump)与恢复(mongorestore)

MongoDB数据备份
在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。
语法
mongodump命令脚本语法如下:
>mongodump -h dbhost -d dbname -o dbdirectory
    -h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
    -d:需要备份的数据库实例,例如:test
    -o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

>mongodump
执行以上命令后,客户端会连接到ip为 127.0.0.1 端口号为 27017 的MongoDB服务上,并备份所有数据到 bin/dump/ 目录中。    
    
MongoDB数据恢复
mongodb使用 mongorestore 命令来恢复备份的数据。
语法
mongorestore命令脚本语法如下:
>mongorestore -h <hostname><:port> -d dbname <path>
     -h <:port>:   MongoDB所在服务器地址,默认为: localhost:27017
     -d :    需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
    --dir: 指定备份的目录

接下来我们执行以下命令:
>mongorestore   
    

单collection备份
>mongoexport -h dbhost -d dbname -c collectionname -f collectionKey -o dbdirectory
  -h: MongoDB所在服务器地址
  -d: 需要恢复的数据库实例
  -c: 需要恢复的集合
  -f: 需要导出的字段(省略为所有字段)
  -o: 表示导出的文件名
 

单collection恢复
>mongoimport -d dbhost -c collectionname –type csv –headerline –file
  -type: 指明要导入的文件格式
  -headerline: 批明不导入第一行,因为第一行是列名
  -file: 指明要导入的文件路径

  
附:

1、mongodump说明

Export MongoDB data to BSON files.
Options:
  --help                                produce help message
  -v [ --verbose ]                      be more verbose (include multiple times for more verbosity e.g. -vvvvv)
  --quiet                               silence all non error diagnostic messages
  --version                             print the program‘s version and exit
  -h [ --host ] arg                     mongo host to connect to ( <set name>/s1,s2 for sets)
  --port arg                            server port. Can also use --host hostname:port
  --ipv6                                enable IPv6 support (disabled by default)
  -u [ --username ] arg                 username
  -p [ --password ] arg                 password
  --authenticationDatabase arg          user source (defaults to dbname)
  --authenticationMechanism arg (=MONGODB-CR)  authentication mechanism
  --gssapiServiceName arg (=mongodb)    Service name to use when authenticating using GSSAPI/Kerberos
  --gssapiHostName arg                  Remote host name to use for purpose of GSSAPI/Kerberos authentication
  --dbpath arg                          directly access mongod database files in the given path
  --directoryperdb                      each db is in a separate directory (relevant only if dbpath specified)
  --journal                             enable journaling (relevant only if dbpath specified)
  -d [ --db ] arg                       database to use
  -c [ --collection ] arg               collection to use (some commands)
  -o [ --out ] arg (=dump)              output directory or "-" for stdout
  -q [ --query ] arg                    json query
  --oplog                               Use oplog for point-in-time snapshotting
  --repair                              try to recover a crashed database
  --forceTableScan                      force a table scan (do not use $snapshot)
  --dumpDbUsersAndRoles                 Dump user and role definitions for the given database

2、mongorestore说明
Import BSON files into MongoDB.
usage: mongorestore [options] [directory or filename to restore from]
Options:
  --help                                produce help message
  -v [ --verbose ]                      be more verbose (include multiple times for more verbosity e.g. -vvvvv)
  --quiet                               silence all non error diagnostic messages
  --version                             print the programs version and exit
  -h [ --host ] arg                     mongo host to connect to ( <set name>/s1,s2 for sets)
  --port arg                            server port. Can also use --host  hostname:port
  --ipv6                                enable IPv6 support (disabled by  default)
  -u [ --username ] arg                 username
  -p [ --password ] arg                 password
  --authenticationDatabase arg          user source (defaults to dbname)
  --authenticationMechanism arg (=MONGODB-CR) authentication mechanism
  --gssapiServiceName arg (=mongodb)    Service name to use when authenticating using GSSAPI/Kerberos
  --gssapiHostName arg                  Remote host name to use for purpose of GSSAPI/Kerberos authentication
  --dbpath arg                          directly access mongod database files in the given path--directoryperdb                      each db is in a separate directory (relevant only if dbpath specified)
  --journal                             enable journaling (relevant only if dbpath specified)
  -d [ --db ] arg                       database to use
  -c [ --collection ] arg               collection to use (some commands)
  --objcheck                            validate object before inserting (default)
  --noobjcheck                          dont validate object before inserting
  --filter arg                          filter to apply before inserting
  --drop                                drop each collection before import
  --oplogReplay                         replay oplog for point-in-time restore
  --oplogLimit arg                      include oplog entries before the provided Timestamp (seconds[:ordinal]) during the oplog replay; the ordinal value is optional
  --keepIndexVersion                    dont upgrade indexes to newest version
  --noOptionsRestore                    dont restore collection options
  --noIndexRestore                      dont restore indexes
  --restoreDbUsersAndRoles              Restore user and role definitions for the given database
  --w arg (=0)                          minimum number of replicas per write

 


3、mongoexport说明

Export MongoDB data to CSV, TSV or JSON files.
Options:
  --help                                produce help message
  -v [ --verbose ]                      be more verbose (include multiple times for more verbosity e.g. -vvvvv)
  --quiet                               silence all non error diagnostic messages
  --version                             print the programs version and exit
  -h [ --host ] arg                     mongo host to connect to ( <set name>/s1,s2 for sets)
  --port arg                            server port. Can also use --host hostname:port
  --ipv6                                enable IPv6 support (disabled by default)
  -u [ --username ] arg                 username
  -p [ --password ] arg                 password
  --authenticationDatabase arg          user source (defaults to dbname)
  --authenticationMechanism arg (=MONGODB-CR) authentication mechanism
  --gssapiServiceName arg (=mongodb)    Service name to use when authenticating using GSSAPI/Kerberos
  --gssapiHostName arg                  Remote host name to use for purpose of GSSAPI/Kerberos authentication
  --dbpath arg                          directly access mongod database files in the given path--directoryperdb                      each db is in a separate directory (relevant only if dbpath specified)
  --journal                             enable journaling (relevant only if dbpath specified)
  -d [ --db ] arg                       database to use
  -c [ --collection ] arg               collection to use (some commands)
  -f [ --fields ] arg                   comma separated list of field names e.g. -f name,age
  --fieldFile arg                       file with field names - 1 per line
  -q [ --query ] arg                    query filter, as a JSON string, e.g.,  ‘{x:{$gt:1}}
  --csv                                 export to csv instead of json
  -o [ --out ] arg                      output file; if not specified, stdout is used
  --jsonArray                           output to a json array rather than one object per line
  -k [ --slaveOk ] arg (=1)             use secondaries for export if  available, default true
  --forceTableScan                      force a table scan (do not use $snapshot)
  --skip arg (=0)                       documents to skip, default 0
  --limit arg (=0)                      limit the numbers of documents returned, default all
  --sort arg                            sort order, as a JSON string, e.g., 
                                        {x:1}

 

4、mongoimport说明

Import CSV, TSV or JSON data into MongoDB.
When importing JSON documents, each document must be a separate line of the input file.

Example:
  mongoimport --host myhost --db my_cms --collection docs < mydocfile.json

Options:
  --help                                produce help message
  -v [ --verbose ]                      be more verbose (include multiple times for more verbosity e.g. -vvvvv)
  --quiet                               silence all non error diagnostic messages
  --version                             print the programs version and exit
  -h [ --host ] arg                     mongo host to connect to ( <set name>/s1,s2 for sets)
  --port arg                            server port. Can also use --host hostname:port
  --ipv6                                enable IPv6 support (disabled by default)
  -u [ --username ] arg                 username
  -p [ --password ] arg                 password
  --authenticationDatabase arg          user source (defaults to dbname)
  --authenticationMechanism arg (=MONGODB-CR) authentication mechanism
  --gssapiServiceName arg (=mongodb)    Service name to use when authenticating using GSSAPI/Kerberos
  --gssapiHostName arg                  Remote host name to use for purpose of GSSAPI/Kerberos authentication
  --dbpath arg                          directly access mongod database files in the given path--directoryperdb                      each db is in a separate directory (relevant only if dbpath specified)
  --journal                             enable journaling (relevant only if dbpath specified)
  -d [ --db ] arg                       database to use
  -c [ --collection ] arg               collection to use (some commands)
  -f [ --fields ] arg                   comma separated list of field names e.g. -f name,age
  --fieldFile arg                       file with field names - 1 per line
  --ignoreBlanks                        if given, empty fields in csv and tsv will be ignored
  --type arg                            type of file to import.  default: json (json,csv,tsv)
  --file arg                            file to import from; if not specified stdin is used
  --drop                                drop collection first 
  --headerline                          first line in input file is a header (CSV and TSV only)
  --upsert                              insert or update objects that already exist
  --upsertFields arg                    comma-separated fields for the query part of the upsert. You should make sure this is indexed
  --stopOnError                         stop importing at first error rather than continuing
  --jsonArray                           load a json array, not one item per line. Currently limited to 16MB.

 

MongoDB-备份和恢复