MONGODB的备份和恢复

本文介绍了MongoDB数据库的备份与恢复方法,包括使用mongodump和mongorestore命令的具体步骤,以及如何通过mongoexport和mongoimport实现数据的导出与导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

mongodb数据库的备份与恢复!

在mongodb的官方上search mongodump没有相应的资料,自己就在shell命令行里面 :
/data/mongodb-linux-x86_64-1.6.0/bin/mongodump --help 了一把, 自己来测试了,测试总结如下:
备份本机mongodb到/tmp/bakup目录下面:
[root@localhost csf]#  /data/mongodb-linux-x86_64-1.6.0/bin/mongodump -h 192.168.0.39:10001 -d csf -o /backup/mongodb
将/tmp/backup 下面的文件导入数据库:
[root@localhost csf]# /data/mongodb-linux-x86_64-1.6.0/bin/mongorestore -h 192.168.0.39:10001 -d csf -drop --directoryperdb /backup/mongodb/csf/

【注释】--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在; /backup/mongodb则是备份文件存放路径
http://blog.youkuaiyun.com/oraclemch/article/details/5853497

mongodb的备份与恢复

mongodb提供了两个命令来备份(mongodump )和恢复(mongorestore )数据库。

1.备份(mongodump )

用法 :
[root@web3 3]# mongodump --help
options:
--help                   produce help message
-v [ --verbose ]         be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
-h [ --host ] arg        mongo host to connect to ("left,right" for pairs)
-d [ --db ] arg          database to use
-c [ --collection ] arg  collection to use (some commands)
-u [ --username ] arg    username
-p [ --password ] arg    password
--dbpath arg             directly access mongod data files in the given path,
instead of connecting to a mongod instance - 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
-o [ --out ] arg (=dump) output directory

例子:

[root@web3 ~]# mongodump -h 192.168.1.103 -d citys -o /backup/mongobak/3
connected to: 192.168.1.103
DATABASE: citys  to     /backup/mongobak/3/citys
citys.building to /backup/mongobak/3/citys/building.bson
13650 objects
citys.system.indexes to /backup/mongobak/3/citys/system.indexes.bson
1 objects

备份出来的数据是二进制的,已经经过压缩。比实际数据库要小很多,我的数据库显示占用了260多M,备份后只有2M。

2.恢复(mongorestore )

用法:
[root@web3 3]# mongorestore --help
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)
-h [ --host ] arg       mongo host to connect to ("left,right" for pairs)
-d [ --db ] arg         database to use
-c [ --collection ] arg collection to use (some commands)
-u [ --username ] arg   username
-p [ --password ] arg   password
--dbpath arg            directly access mongod data files in the given path,
instead of connecting to a mongod instance - 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
--drop                  drop each collection before import
--objcheck              validate object before inserting

--drop参数可以在导入之前把collection先删掉。

例子:

[root@web3 3]# mongorestore -h 127.0.0.1 --directoryperdb /backup/mongobak/3/        
connected to: 127.0.0.1
/backup/mongobak/3/citys/building.bson
going into namespace [citys.building]
13667 objects
/backup/mongobak/3/citys/system.indexes.bson
going into namespace [citys.system.indexes]
1 objects

另外mongodb还提供了mongoexport 和 mongoimport 这两个命令来导出或导入数据,导出的数据是json格式的。也可以实现备份和恢复的功能。

例:

mongoexport -d mixi_top_city_prod -c building_45 -q '{ "uid" : "10832545" }' > mongo_10832545.bson

mongoimport -d mixi_top_city -c building_45 --file mongo_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(Binary Serialized dOcument Format)。
MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。

=== 安装、配置 ===
源码包: wget http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz
1.解压tar -zxvf mongodb-linux-i686-1.6.5.tgz
  重命名mv mongodb-linux-i686-1.6.5.tgz mongodb
2.创建数据库文件目录,默认为/data/db,我把数据库文件目录放在当前文件夹下,mkdir -p data/mongodb,创建日志目录mkdir log
3.启动服务
cd /usr/local/mongodb/bin
./mongod -dbpath=/data/mongodb -logpath=/var/log/mongodb.log

4.安装完,进行测试
[root@localhost bin]# ./mongo
MongoDB shell version: 1.6.5
connecting to: 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 --port 27017

 -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/ --port 10000 --master 
启动两个从服务器  分别用10001 和 10002 端口  也可以使用 master master-> slave 的设置
. /bin/mongod -dbpath /mongodb/ slavedb_1 -- source localhost:10000 --slave --port 10001
. /bin/mongod -dbpath /mongodb/ slavedb_2 -- source localhost:10000 --slave --port 10002
#启动后  就会看到有日志 显示 从主服务器复制内容了

相关参数:./mongod --help
--autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据
--slavedelay 同步延迟,单位:秒

3.测试主从
a、在主服务器新建数据库
. /bin/mongo --port 10001
show dbs
#里面只有系统数据库,同时如果做插入数据的操作 会提示 not master
use testdb
db.blog.save({title: "new article" })

b、在从服务器上查看同步数据
. /bin/mongo --port 10001
MongoDB shell version: 1.6.0
connecting to: 127.0.0.1:10001 /test
> show dbs
admin
local
testdb
> use testdb
switched to db testdb
> db.blog. find ()
{ "_id" : ObjectId( "4c776ccce7af0727ce4b6234" ), "title" : "new article" } #此为同步过来的数据,测试成功


=== 备份与恢复 ===


mongodump -h 192.168.0.39:10001 -d csf -o /backup/mongodb
将/tmp/backup 下面的文件导入数据库:
mongorestore -h 192.168.0.39:10001 -d csf -drop --directoryperdb /backup/mongodb/csf/
mongodb提供了两个命令来备份(mongodump )和恢复(mongorestore )数据库。

1、备份数据库
语法:mongodump -h IP -d 数据库 -o 文件存在路径
./mongodump -h 127.0.0.1 -d testdb -o /backup/mongobak/

connected to: 127.0.0.1:10000
DATABASE: testdb         to     /data/dump/testdb
        testdb.blog to /data/dump/testdb/blog.bson
                 1 objects
        testdb.system.indexes to /data/dump/testdb/system.indexes.bson
                 1 objects
出现此提示说明备份成功

2、恢复数据库
语法:mongorestore -h 主机 -d 目标库 -drop  --directoryperdb 源文件
【注释】--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在; /backup/mongodb则是备份文件存放路径

./mongorestore -h 127.0.0.1 --directoryperdb /data/dump    


3.另外mongodb还提供了mongoexport 和 mongoimport 这两个命令来导出或导入数据,导出的数据是json格式的。也可以实现备份和恢复的功能。

例:

mongoexport -d mixi_top_city_prod -c building_45 -q '{ "uid" : "10832545" }' > mongo_10832545.bson

mongoimport -d mixi_top_city -c building_45 --file mongo_10832545.bson



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值