mongodb的備份以及恢復


最近由於需要用到mongodb,因此到網上找的資料,跟大家分享下,個人感覺比較實用。

備份前的檢查

> show dbs

MyDB 0.0625GB

admin (empty)

bruce 0.0625GB

local (empty)

test 0.0625GB

> use MyDB

switched to db MyDB

> db.users.find()

{ "_id" : ObjectId("4e290aa39a1945747b28f1ee"), "a" : 1, "b" : 1 }

{ "_id" : ObjectId("4e2cd2182a65c81f21566318"), "a" : 3, "b" : 5 }

>


整庫備份:

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的官方說明(可通過mongodump --help查看):

options:

 --help          produce help message

 -v [ --verbose ]     be more verbose (include multiple times for more

              verbosity e.g. -vvvvv)

 --version        print the program's version and exit

 -h [ --host ] arg    mongo host to connect to ( /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

 --dbpath arg       directly access mongod database files in the given

              path, instead of connecting to a mongod server -

              needs to lock the data directory, so cannot be used

              if a mongod is currently accessing the same path

 --directoryperdb     if dbpath specified, each db is in a separate

              directory

 --journal        enable journaling

 -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)

整庫恢復:

mongorestore -h dbhost -d dbname –directoryperdb dbdirectory

-h:MongoDB所在服務器地址

-d:需要恢復的數據庫實例,例如:test,當然這個名稱也可以和備份時候的不一樣,比如test2

–directoryperdb:備份數據所在位置,例如:c:\data\dump\test,這裏爲什麼要多加一個test,而不是備份時候的dump,讀者自己查看提示吧!

–drop:恢復的時候,先刪除當前數據,然後恢復備份的數據。就是說,恢復後,備份後添加修改的數據都會被刪除,慎用哦!


mongorestore的官方說明(可通過mongorestore --help查看):

options:

 --help         produce help message

 -v [ --verbose ]    be more verbose (include multiple times for more

             verbosity e.g. -vvvvv)

 --version        print the program's version and exit

 -h [ --host ] arg    mongo host to connect to ( /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

 --dbpath arg      directly access mongod database files in the given

             path, instead of connecting to a mongod server -

             needs to lock the data directory, so cannot be used

             if a mongod is currently accessing the same path

 --directoryperdb    if dbpath specified, each db is in a separate

             directory

 --journal        enable journaling

 -d [ --db ] arg     database to use

 -c [ --collection ] arg collection to use (some commands)

 --objcheck       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    exclude oplog entries newer than provided timestamp

             (epoch[:ordinal])

 --keepIndexVersion   don't upgrade indexes to newest version

 --noOptionsRestore   don't restore collection options

 --noIndexRestore    don't restore indexes

 --w arg (=1)      minimum number of replicas per write

單個collection備份:

mongoexport -h dbhost -d dbname -c collectionname -f collectionKey -o dbdirectory

-h: MongoDB所在服務器地址

-d: 需要恢復的數據庫實例

-c: 需要恢復的集合

-f: 需要導出的字段(省略爲所有字段)

-o: 表示導出的文件名


mongoexport的官方說明(可通過mongoexport --help查看):

 --help          produce help message

 -v [ --verbose ]     be more verbose (include multiple times for more

              verbosity e.g. -vvvvv)

 --version         print the program's version and exit

 -h [ --host ] arg     mongo host to connect to ( /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

 --dbpath arg       directly access mongod database files in the given

              path, instead of connecting to a mongod server -

              needs to lock the data directory, so cannot be used

              if a mongod is currently accessing the same path

 --directoryperdb     if dbpath specified, each db is in a separate

              directory

 --journal         enable journaling

 -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 fields names - 1 per line

 -q [ --query ] arg    query filter, as a JSON string

 --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)

單個collection恢復:

mongoimport -d dbhost -c collectionname –type csv –headerline –file

-type: 指明要導入的文件格式

-headerline: 批明不導入第一行,因爲第一行是列名

-file: 指明要導入的文件路徑


mongoimport的官方說明(可通過mongoimport --help查看):

 --help         produce help message

 -v [ --verbose ]    be more verbose (include multiple times for more

             verbosity e.g. -vvvvv)

 --version        print the program's version and exit

 -h [ --host ] arg    mongo host to connect to ( /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

 --dbpath arg      directly access mongod database files in the given

             path, instead of connecting to a mongod server -

             needs to lock the data directory, so cannot be used

             if a mongod is currently accessing the same path

 --directoryperdb    if dbpath specified, each db is in a separate

             directory

 --journal        enable journaling

 -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 fields 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      CSV,TSV only - use first line as headers

 --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.其他導入與導出操作:


1. mongoimport -d my_mongodb -c user user.dat


參數說明:


-d 指明使用的庫, 本例中爲” my_mongodb”


-c 指明要導出的表, 本例中爲”user”


可以看到導入數據的時候會隱式創建表結構


2. mongoexport -d my_mongodb -c user -o user.dat


參數說明:


-d 指明使用的庫, 本例中爲” my_mongodb”


-c 指明要導出的表, 本例中爲”user”


-o 指明要導出的文件名, 本例中爲”user.dat”


從上面可以看到導出的方式使用的是JSON 的樣式.


轉自:http://www.jb51.net/article/40285.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章