zoukankan      html  css  js  c++  java
  • MongoDB 备份恢复

    搭建高可用的MongoDB集群

    http://www.csdn.net/article/2014-04-09/2819221-build-high-avialable-mongodb-cluster-part-1

    (一)备份和恢复

     1.备份(mongodump)

      语法

      mongodump命令脚本语法如下:

      >mongodump -h dbhost -d dbname -o dbdirectory
    
    • -h:

      MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

    • -d:

      需要备份的数据库实例,例如:test

       如果不指定该参数,默认备份所有数据库

    • -o:

      备份的数据存放位置,例如:c:datadump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

          

         实例

    [root@datanode1 mongodb2.6.5]# ./bin/mongodump -h 127.0.0.1:27017 -d szc -o /mongodb/dump/ 
    connected to: 127.0.0.1:27017
    2015-03-09T15:59:09.168+0800 DATABASE: szc       to     /mongodb/dump/szc
    2015-03-09T15:59:09.169+0800    szc.system.indexes to /mongodb/dump/szc/system.indexes.bson
    2015-03-09T15:59:09.169+0800             2 documents
    2015-03-09T15:59:09.169+0800    szc.szc_test to /mongodb/dump/szc/szc_test.bson
    2015-03-09T15:59:09.169+0800             1 documents
    2015-03-09T15:59:09.169+0800    Metadata for szc.szc_test to /mongodb/dump/szc/szc_test.metadata.json
    2015-03-09T15:59:09.169+0800    szc.szc_test1 to /mongodb/dump/szc/szc_test1.bson
    2015-03-09T15:59:09.170+0800             1 documents
    2015-03-09T15:59:09.170+0800    Metadata for szc.szc_test1 to /mongodb/dump/szc/szc_test1.metadata.json
    [root@datanode1 mongodb2.6.5]# 

     实例

    备份单个集合

    [root@datanode1 mongodb]# ./mongodb2.6.5/bin/mongodump  -c szc1_test1 -d szc1 -o /mongodb/dump/     
    connected to: 127.0.0.1
    2015-03-09T23:33:37.984+0800 DATABASE: szc1      to     /mongodb/dump/szc1
    2015-03-09T23:33:37.985+0800    szc1.szc1_test1 to /mongodb/dump/szc1/szc1_test1.bson
    2015-03-09T23:33:37.985+0800             1 documents
    2015-03-09T23:33:37.985+0800    Metadata for szc1.szc1_test1 to /mongodb/dump/szc1/szc1_test1.metadata.json
    [root@datanode1 mongodb]# cd dump/
    [root@datanode1 dump]# ll
    总计 8
    drwxr-xr-x 2 root root 4096 03-09 15:59 szc
    drwxr-xr-x 2 root root 4096 03-09 23:33 szc1
    [root@datanode1 dump]# cd szc1
    [root@datanode1 szc1]# ll
    总计 8
    -rw-r--r-- 1 root root 35 03-09 23:33 szc1_test1.bson
    -rw-r--r-- 1 root root 97 03-09 23:33 szc1_test1.metadata.json
    [root@datanode1 szc1]# 
    [root@datanode1 szc1]# 

     2.恢复(mongorestore)

       

    • -h:

      MongoDB所在服务器地址

    • -d:

      需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,可以重命名,比如test2

    • --dir:

      备份数据所在位置,如果是恢复某个数据库(test),则需要指定到数据库备份文件所在路径,/mongodb/dump/szc;如果恢复某个集合,则需要指定到集合所在路径下的.bson文件,例如/mongodb/dump/szc/szc_test.bson

    • -C [--collection]

            指定需要恢复的集合名称

    • dfd 

        实例

        将备份文件中数据库为szc中的集合szc_test恢复,

    [root@localhost mongodb]# ./mongodb2.6.5/bin/mongorestore --collection szc_test -d szc --dir /root/mongodb/dump/szc/szc_test.bson
    connected to: 127.0.0.1
    2015-03-09T20:27:54.700+0800 /root/mongodb/dump/szc/szc_test.bson
    2015-03-09T20:27:54.700+0800    going into namespace [szc.szc_test]
    1 objects found
    2015-03-09T20:27:54.732+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "szc.szc_test" }

    结果如下

    [root@localhost mongodb]# ./mongodb2.6.5/bin/mongo
    MongoDB shell version: 2.6.5
    connecting to: test
    > show dbs
    admin (empty)
    local 0.078GB
    szc 0.078GB
    > use szc
    switched to db szc
    > show tables
    system.indexes
    szc_test
    > db.szc_test.find()
    { "_id" : ObjectId("54f91f61166199c99103f2f7"), "name" : "111" }

    实例

    恢复所有数据库及集合

    [root@localhost mongodb]# ./mongodb2.6.5/bin/mongorestore 
    connected to: 127.0.0.1
    2015-03-09T23:13:38.571+0800 dump/szc/szc_test1.bson
    2015-03-09T23:13:38.571+0800    going into namespace [szc.szc_test1]
    1 objects found
    2015-03-09T23:13:38.646+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "szc.szc_test1" }
    2015-03-09T23:13:38.895+0800 dump/szc/szc_test.bson
    2015-03-09T23:13:38.895+0800    going into namespace [szc.szc_test]
    Restoring to szc.szc_test without dropping. Restored data will be inserted without raising errors; check your server log
    1 objects found
    2015-03-09T23:13:38.952+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "szc.szc_test" }
    [root@localhost mongodb]# ^C

    3.导出(mongoexport)

    4.导入(mongoimport)

    不建议使用mongoexport和mongoimport

    因为它不能可靠地获取数据类型信息,所以无法提供完整性的备份。

    下四点转自该文章

    1.mongoexport 可以导出json或csv格式的文件,可以指定查询过滤器或指定输出的域,不过此工具导出的json,csv可能对某些数据类型不兼容,因此可能不能全部数据导出,mongodump就可以全部兼容 ;

    2.mongodump支持过滤 ,而且在导出速度和压缩率方面mongodump是最快最好的 。所以,若无csv或debug等特殊格式的备份需求,一般都使用 mongodump 作为备份工具 

    3. mongoimport 可以接受json,csv,tsv格式的文件,每行为一个对象 。同mongoexport一样,其在恢复过程中同样存在兼容性的问题,所以有恢复不完整的概率 ;

    4.mongorestore,速度较慢,比mongoimport慢2.5倍左右,但是根据mongodump导出的数据,可以完整导入数据。在restore过程中,索引根据之前dump的结果重新创造。

     

  • 相关阅读:
    MySQL Explain优化
    mysql联合索引
    MySQL索引类型
    php常用的排序算法与二分法查找
    mysql 主从复制(mysql双机热备的实现)
    mysql 主从复制 (2)
    Linux 查看进程之PS命令
    PHP isset 和 array_key_exists 对比
    Linux md5sum 的用法
    Linux Sphinx 安装与使用
  • 原文地址:https://www.cnblogs.com/SamuelSun/p/4322853.html
Copyright © 2011-2022 走看看