MONGODB的备份和恢复
2012-05-30 11:49
344 查看
mongodb数据库的备份与恢复!
在mongodb的官方上searchmongodump没有相应的资料,自己就在shell命令行里面:/data/mongodb-linux-x86_64-1.6.0/bin/mongodump--help了一把,自己来测试了,测试总结如下:
备份本机mongodb到/tmp/bakup目录下面:
[root@localhostcsf]#/data/mongodb-linux-x86_64-1.6.0/bin/mongodump-h192.168.0.39:10001-dcsf-o/backup/mongodb
将/tmp/backup下面的文件导入数据库:
[root@localhostcsf]#/data/mongodb-linux-x86_64-1.6.0/bin/mongorestore-h192.168.0.39:10001-dcsf-drop--directoryperdb/backup/mongodb/csf/
【注释】--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在;/backup/mongodb则是备份文件存放路径
/article/8302222.html
mongodb的备份与恢复
mongodb提供了两个命令来备份(mongodump)和恢复(mongorestore)数据库。1.备份(mongodump)
用法:
[root@web33]#mongodump--help
options:
--helpproducehelpmessage
-v[--verbose]bemoreverbose(includemultipletimesformore
verbositye.g.-vvvvv)
-h[--host]argmongohosttoconnectto("left,right"forpairs)
-d[--db]argdatabasetouse
-c[--collection]argcollectiontouse(somecommands)
-u[--username]argusername
-p[--password]argpassword
--dbpathargdirectlyaccessmongoddatafilesinthegivenpath,
insteadofconnectingtoamongodinstance-needs
tolockthedatadirectory,socannotbeusedifa
mongodiscurrentlyaccessingthesamepath
--directoryperdbifdbpathspecified,eachdbisinaseparate
directory
-o[--out]arg(=dump)outputdirectory
例子:
[root@web3~]#mongodump-h192.168.1.103-dcitys-o/backup/mongobak/3
connectedto:192.168.1.103
DATABASE:citysto/backup/mongobak/3/citys
citys.buildingto/backup/mongobak/3/citys/building.bson
13650objects
citys.system.indexesto/backup/mongobak/3/citys/system.indexes.bson
1objects
备份出来的数据是二进制的,已经经过压缩。比实际数据库要小很多,我的数据库显示占用了260多M,备份后只有2M。
2.恢复(mongorestore)
用法:
[root@web33]#mongorestore--help
usage:mongorestore[options][directoryorfilenametorestorefrom]
options:
--helpproducehelpmessage
-v[--verbose]bemoreverbose(includemultipletimesformore
verbositye.g.-vvvvv)
-h[--host]argmongohosttoconnectto("left,right"forpairs)
-d[--db]argdatabasetouse
-c[--collection]argcollectiontouse(somecommands)
-u[--username]argusername
-p[--password]argpassword
--dbpathargdirectlyaccessmongoddatafilesinthegivenpath,
insteadofconnectingtoamongodinstance-needsto
lockthedatadirectory,socannotbeusedifa
mongodiscurrentlyaccessingthesamepath
--directoryperdbifdbpathspecified,eachdbisinaseparate
directory
--dropdropeachcollectionbeforeimport
--objcheckvalidateobjectbeforeinserting
--drop参数可以在导入之前把collection先删掉。
例子:
[root@web33]#mongorestore-h127.0.0.1--directoryperdb/backup/mongobak/3/
connectedto:127.0.0.1
/backup/mongobak/3/citys/building.bson
goingintonamespace[citys.building]
13667objects
/backup/mongobak/3/citys/system.indexes.bson
goingintonamespace[citys.system.indexes]
1objects
另外mongodb还提供了mongoexport和mongoimport这两个命令来导出或导入数据,导出的数据是json格式的。也可以实现备份和恢复的功能。
例:
mongoexport-dmixi_top_city_prod-cbuilding_45-q'{"uid":"10832545"}'>mongo_10832545.bson
mongoimport-dmixi_top_city-cbuilding_45--filemongo_10832545.bson
===MongoDB概述===
Mongo是一个高性能,开源,模式自由(schema-free)的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值(key-value)存储方式。Mongo使用C++开发,具有以下特性:
l面向集合的存储:适合存储对象及JSON形式的数据。
l动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
l完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
l查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。
l复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
l高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
l自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(BinarySerializeddOcumentFormat)。
MongoDB服务端可运行在Linux、Windows或OSX平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。
===安装、配置===
源码包:wget
1.解压tar-zxvfmongodb-linux-i686-1.6.5.tgz
重命名mvmongodb-linux-i686-1.6.5.tgzmongodb
2.创建数据库文件目录,默认为/data/db,我把数据库文件目录放在当前文件夹下,mkdir-pdata/mongodb,创建日志目录mkdirlog
3.启动服务
cd/usr/local/mongodb/bin
./mongod-dbpath=/data/mongodb-logpath=/var/log/mongodb.log
4.安装完,进行测试
[root@localhostbin]#./mongo
MongoDBshellversion:1.6.5
connectingto:test
>db.foo.save({a:1})
>db.foo.find()
{"_id":ObjectId("4d292a457e289d5d90dc6f33"),"a":1}
5.将mongoDB服务加入随机启动
vi/etc/rc.local
使用vi编辑器打开配置文件,并在其中加入下面一行代码
/usr/local/mongodb/bin/mongod-dbpath=/data/mongodb--port27017
-logpath=/var/log/mongodb.log--logappend&
===主从同步===
1.建立数据库目录
mkdir
/mongodb/masterdb
mkdir
/mongodb/
slavedb_1
mkdir
/mongodb/
slavedb_2 2.分别启动主从服务器
启动主服务器监听10000端口
.
/bin/mongod
-dbpath
/mongodb/masterdb/
--port10000--master
启动两个从服务器分别用10001和10002端口也可以使用mastermaster->slave的设置
.
/bin/mongod
-dbpath
/mongodb/
slavedb_1
--
source
localhost:10000--slave--port10001
.
/bin/mongod
-dbpath
/mongodb/
slavedb_2
--
source
localhost:10000--slave--port10002
#启动后就会看到有日志显示从主服务器复制内容了--autoresync当发现从服务器的数据不是最新时,开始从主服务器请求同步数据
相关参数:./mongod--help
--slavedelay同步延迟,单位:秒
3.测试主从
a、在主服务器新建数据库
.
/bin/mongo
--port10001
showdbs
#里面只有系统数据库,同时如果做插入数据的操作会提示notmaster
usetestdb
db.blog.save({title:
"newarticle"
}) b、在从服务器上查看同步数据
.
/bin/mongo
--port10001
MongoDBshellversion:1.6.0
connectingto:127.0.0.1:10001
/test
>showdbs
admin
local
testdb
>usetestdb
switchedtodbtestdb
>db.blog.
find
()
{
"_id"
:ObjectId(
"4c776ccce7af0727ce4b6234"
),
"title"
:
"newarticle"
}#此为同步过来的数据,测试成功
===备份与恢复===
mongodump-h192.168.0.39:10001-dcsf-o/backup/mongodb
将/tmp/backup下面的文件导入数据库:
mongorestore-h192.168.0.39:10001-dcsf-drop--directoryperdb/backup/mongodb/csf/
mongodb提供了两个命令来备份(mongodump)和恢复(mongorestore)数据库。
1、备份数据库
语法:mongodump-hIP-d数据库-o文件存在路径
./mongodump-h127.0.0.1-dtestdb-o/backup/mongobak/
connectedto:127.0.0.1:10000
DATABASE:testdbto/data/dump/testdb
testdb.blogto/data/dump/testdb/blog.bson
1objects
testdb.system.indexesto/data/dump/testdb/system.indexes.bson
1objects
出现此提示说明备份成功
2、恢复数据库
语法:mongorestore-h主机-d目标库-drop--directoryperdb源文件
【注释】--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在;/backup/mongodb则是备份文件存放路径
./mongorestore-h127.0.0.1--directoryperdb/data/dump
3.另外mongodb还提供了mongoexport和mongoimport这两个命令来导出或导入数据,导出的数据是json格式的。也可以实现备份和恢复的功能。
例:
mongoexport-dmixi_top_city_prod-cbuilding_45-q'{"uid":"10832545"}'>mongo_10832545.bson
mongoimport-dmixi_top_city-cbuilding_45--filemongo_10832545.bson
相关文章推荐
- MongoDB的备份(mongodump)与恢复(mongorestore)
- MongoDB的备份(mongodump)与恢复(mongorestore)
- MongoDB数据备份与恢复
- redis和mongodb快速实现数据备份恢复
- mongodb的备份与恢复
- MongoDB 导出导入备份恢复数据详解及实例
- mongodb数据备份与恢复
- mongodb备份恢复学习2
- MongoDB 数据文件备份与恢复
- Mongodb的备份与恢复
- 一、MongoDB安装,连接,备份与恢复
- 【转】mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
- MongoDB数据备份与恢复
- MongoDB数据库的文件备份恢复以及文件导入导出
- Mongodb 备份与恢复
- MongoDB 手动备份(mongodump)与恢复(mongorestore)
- MongoDB基础之八 备份与恢复
- MongoDB迁移方案-冷备份+增量备份恢复
- 使用centos系统中的crontab命令对mongodb定时备份恢复
- MongoDB 数据备份 mongodump 和数据恢复mongorestore