转载自萌阔论坛  用户tingcheng 

http://forum.foxera.com/mongodb/topic/176/mongodb%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D-3-%E6%95%B0%E6%8D%AE%E5%A4%87%E4%BB%BD-mongodump-%E4%B8%8E%E6%81%A2%E5%A4%8D-mongorestore?un=ptl

一、数据库备份mongodump
1.概述

  • 在Mongodb中我们可以在不停止服务的情况下使用mongodump命令来备份MongoDB数据,该命令可以导出所有数据库到指定目录中。
  • mongodump备份的原理是通过一次查询获取当前服务器快照,并将快照写入磁盘中,因此这种方式保存的也不是实时的,因为在获取快照后,服务器还会有数据写入,为了保证备份的安全,同样我们还是可以利用fsync锁使服务器数据暂时写入缓存中。

2.常用命令格式:

<code>mongodump -h dbhost -d dbname -o dbdirectory
</code>
  • 参数说明:
    -h:MongDB所在服务器地址
    -d:需要备份的数据库实例,例如:Test
    -o:备份的数据存放位置,例如:D:\mongodb\data\dump,该目录需要提前建立,在备份完成后,系统自动在 dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
  • 3.示例:

  • 在本地使用 27017 启动你的mongod服务。打开命令提示符窗口,进入MongoDB安装目录的bin目录输入命令mongodump:
  • <code>mongodump -h localhost -d daisyDB -o D:\mongodb\data\backup
    </code>
  • 执行以上命令后,客户端会连接到指定的MongoDB服务上,并备份所有数据到指定目录中。命令输出结果如下:
  • <code>D:\mongodb\bin>mongodump -h localhost -d daisyDB -o D:\mongodb\data\backup
    2016-10-24T14:50:57.390+0800    writing daisyDB.daisyDB to D:\mongodb\data\backu
    p\daisyDB\daisyDB.bson
    2016-10-24T14:50:57.390+0800    writing daisyDB.system.indexes to D:\mongodb\dat
    a\backup\daisyDB\system.indexes.bson
    2016-10-24T14:50:57.406+0800    writing daisyDB.daisyDB metadata to D:\mongodb\d
    ata\backup\daisyDB\daisyDB.metadata.json
    2016-10-24T14:50:57.406+0800    writing daisyDB.Account to D:\mongodb\data\backu
    p\daisyDB\Account.bson
    2016-10-24T14:50:57.421+0800    done dumping daisyDB.daisyDB (2 documents)
    2016-10-24T14:50:57.421+0800    writing daisyDB.Account metadata to D:\mongodb\d
    ata\backup\daisyDB\Account.metadata.json
    2016-10-24T14:50:57.421+0800    done dumping daisyDB.Account (0 documents)
    </code>
  • 如果不指定目录,进入MongoDB安装目录的bin目录直接输入命令mongodump,备份内容会默认保存在D:\mongodb\bin\dump,系统会自动生成dump文件夹将全部的数据库存放在该文件夹下。
  • 二、数据库恢复mongorestore
    1.常用命令格式:

  • mongorestore命令脚本语法如下:
  • <code>mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
    </code>
  • 参数说明:
    -h: MongoDB所在服务器地址
    -d:需要恢复的数据库实例
    --directoryperdb:备份数据所在位置
    --drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用
  • 2.示例:

  • mongorestore
    执行以上命令输出结果如下:
  • <code>D:\mongodb\bin>mongorestore
    2016-10-24T15:21:08.000+0800    using default 'dump' directory
    2016-10-24T15:21:08.046+0800    building a list of dbs and collections to restor
    e from dump dir
    2016-10-24T15:21:08.062+0800    reading metadata file from dump\daisyDB\daisyDB.
    metadata.json
    2016-10-24T15:21:08.062+0800    reading metadata file from dump\test\Account.met
    adata.json
    2016-10-24T15:21:08.062+0800    restoring daisyDB.daisyDB from file dump\daisyDB
    \daisyDB.bson
    2016-10-24T15:21:08.062+0800    reading metadata file from dump\daisyDB\Account.
    metadata.json
    2016-10-24T15:21:08.062+0800    restoring test.Account from file dump\test\Accou
    nt.bson
    2016-10-24T15:21:08.062+0800    restoring daisyDB.Account from file dump\daisyDB
    \Account.bson
    2016-10-24T15:21:08.062+0800    restoring indexes for collection daisyDB.Account
     from metadata
    2016-10-24T15:21:08.062+0800    error: E11000 duplicate key error index: daisyDB
    .daisyDB.$_id_ dup key: { : ObjectId('580d75ee17445b792574c3aa') }
    2016-10-24T15:21:08.078+0800    error: E11000 duplicate key error index: test.Ac
    count.$_id_ dup key: { : 10.0 }
    2016-10-24T15:21:08.078+0800    restoring indexes for collection daisyDB.daisyDB
     from metadata
    2016-10-24T15:21:08.078+0800    restoring indexes for collection test.Account fr
    om metadata
    2016-10-24T15:21:08.093+0800    finished restoring daisyDB.Account (0 documents)
    2016-10-24T15:21:08.093+0800    finished restoring daisyDB.daisyDB (2 documents)
    2016-10-24T15:21:08.109+0800    finished restoring test.Account (1 document)
    2016-10-24T15:21:08.109+0800    done
    </code>
  • 以上就是mongodb的备份和恢复过程。当数据库文件出现问题或者损坏时,MongoDB还提供了修复数据文件的命令Repair。

参考上面的mongodb备份和恢复没有成功,可能是备份恢复命令不对。

参考这个开启权限认证Linux下MongoDB安装和配置详解_ITPUB博客 成功了。

https://www.jb51.net/article/135439.htm

备份:

 cd /var/lib/mongodb/

mongodump -h localhost -d xz_gsxz -o /home/gly/mongodb;

恢复:

 cd /var/lib/mongodb/

 mongorestore -d xz_gsxz /home/glyadmin/mongodb/xz_gsxz/;
 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐