MongoDB备份与恢复

  categories:资料  tags:,   author:

mongodb数据库同样离不开必要的维护,如备份、恢复、导入、导出。

其实备份和恢复比导入和导出要方便些,而且一般不会出错,所以大部分时候使用备份和恢复操作就可以了

1. 备份Mongodb

mongodump -h test.xxxx.com:52000 -d dataname -o /home/aa/dev/mongodb/data

mongodump mongo导出数据库命令 mongodump –help 可以查看该命令下所有的帮助

-h 导出源

-d 要导出的数据库名称

-o 数据库要导出的位置

在终端滚过N行之后,数据库导出完成,可以去/home/aa/dev/mongodb/data 目录下查看导出的文件,bson格式的(我导出后没有马上就看到文件,等了一会才出现的,原因不明)

2. 恢复使用:mongorestore 命令

mongorestore -d cmsdev  /home/xx/dev/mongodb/data/cmsdev

-d 使用的数据库名称

后面直接加你刚才导出的目录,这样是直接恢复所有表

如果-c 是恢复一个表

3. 导入

mongoimport -d … 阅读全文

MongoDB集群

  categories:资料  tags:,   author:

MongoDB集群中包含一个自动分片模块(“mongos”)。自动分片可以用于构建一个大规模的可扩展的数据库集群,这个集群可以并入动态增加的机器。自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。在一个mongodb的集群中包括一些shards(mongod进程),mongos的路由进程,一个或多个config服务器。sharding是一种对大规模数据存储的一种策略,关于sharding的详细信息可以查看这里。也许有人会问,为什么需要做这种策略,因为在一个大型系统中最后的瓶颈会落在网络的带宽和磁盘的读写上,如果将数据分布在多个机器上的多个磁盘上,将会系统数据的处理能有所提高。

MongoDB 集群的结构:

下图中Shard是指每个节点的shard有一个或更多的服务器和存储数据的mongod进程,而mongod是MongoDB数据的核心进程。

每台机器上的mongod从配置获取服务器(元数据metadata),然后,当收到客户端请求时,它请求路由到相应的服务器组和编译结果发送回客户端。

mongos进行可以被看作是一个路由和协调的过程,因为他可以使得每个单一的各个节点组成一个集群系统。另外还需要强调一点mongos进程没有持久状态,每个实例都需要一定的数据存储的内存空间。

换而言之,所谓MongoDB集群也就是MongoDB做了一个数据库路由的策略,而且保证跨库操作的数据库事务,而MongoDB集群中的关键部分Sharding不是一门新技术,而是一种策略,关键还是看应用场景和案例提供的可用性,因为Sharding不仅仅是MongoDB集群中所提到的分布在不同的机器上,还可以分表,分区,分数据,等等。

wps_clip_image-16472[3][1]

MongoDB 集群的工作原理:

其中有一个服务器上存储着集群的metadata信息,包括每个服务器,每个shard的基本信息和chunk信息Config Server主要存储的是chunk信息。每一个config服务器都复制了完整的chunk信息,就是下图中左边黄色的部分。

如果客户端对集群的MongoDB插入一条数据,客户端并不知道刚刚插入的数据被分配到具体哪个MongoDB节点上了,因为当一条数据被传入MongoDB集群中通过mongos路由,所以我们并感觉不到是数据存放在哪个shard的chunk上,但是通过后台的Sharding的管理命令可以看到插入的数据存放在哪个节点上。

wps_clip_image-13442[3][1]

配置MongoDB集群

模拟2个shard服务、一个config服务、一个mongos process,全部运行在一个测试的服务器上,具体配置步骤如下:

口水:–shardsvr是表示以sharding模式启动Mongodb服务器,Mongodb数据同步方式参见我写的另外一篇文章“MongoDB主(Master)/从(Slave)数据同步”

$ mkdir /data/db/a

$ mkdir /data/db/b

$ mkdir /data/db/config

$ ./mongod –shardsvr –dbpath /data/db/a –port 10000 > /tmp/sharda.log &

$ cat /tmp/sharda.log

$ ./mongod … 阅读全文

NoSQL数据库

  categories:mysql资料  tags:,   author:

来源:互联网

—MongoDB和Redis

相关文章:

MongoDB基本操作指南
NoSQL数据库
MongoDB集群
MongoDB数据库
MongoDB备份与恢复
8种NoSQL数据库对比
配置mongodb分片群集(sharding cluster)
记一次MongoDB性能问题,附原理解析
mongodb之insert和save函数的区别
mongodb shell无法删除问题 与 secureCRT使用退格键出现^H解决办法
Mongodb源码分析之Mongos分析
PHP操作MongoDB

 

 

1NoSQL简述

CAP(Consistency,Availabiity,Partition tolerance)理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。关系型数据库通过把更新操作写到事务型日志里实现了部分耐用性,但带来的是写性能的下降。MongoDB等NoSQL数据库背后蕴涵的哲学是不同的平台应该使用不同类型的数据库,MongoDB通过降低一些特性来达到性能的提高,这在很多大型站点中是可行的。因为MongoDB是非原子性的,所以如果如果应用需要事务,还是需要选择MySQL等关系数据库。

NoSQL数据库,顾名思义就是打破了传统关系型数据库的范式约束。很多NoSQL数据库从数据存储的角度看也不是关系型数据库,而是key-value数据格式的hash数据库。由于放弃了关系数据库强大的SQL查询语言和事务一致性以及范式约束,NoSQL数据库在很大程度上解决了传统关系型数据库面临的诸多挑战。

在社区中,NoSQL是指“not only sql”,其特点是非关系型,分布式,开源,可水平扩展,模式自由,支持replication,简单的API,最终一致性(相对于即时一致性,最终一致性允许有一个“不一致性窗口”,但能保证最终的客户都能看到最新的值)。

2MongoDB简介

mongo取自“humongous”(海量的),是开源的文档数据库──nosql数据库的一种。

MongoDB是一种面向集合(collection)的,模式自由的文档(document)数据库。

面向集合是说数据被分成集合的形式,每个集合在数据库中有惟一的名称,集合可以包含不限数目的文档。除了模式不是预先定义好的,集合与RDBMS中的表概念类似,虽然二者并不是完全对等。数据库和集合的创建是“lazy”的,即只有在第一个document被插入时集合和数据库才真正创建——这时在磁盘的文件系统里才能看见。

模式自由是说数据库不需要知道存放在集合中的文档的结构,完全可以在同一个集合中存放不同结构的文档,支持嵌入子文档。

文档类似于RDBMS中的记录,以BSON的格式保存。BSON是Binary JSON的简称,是对JSON-like文档的二进制编码序列化。像JSON(JavaScript Object Notation)一样,BSON支持在对象和数组内嵌入其它的对象和数组。有些数据类型在JSON里不能表示,但可以在BSON里表示,如Date类型和BinData(二进制数据),Python原生的类型都可以表示。与Protocal Buffers(Google开发的用以处理对索引服务器请求/应答的协议)相比,BSON模式更自由,所以更灵活,但这样也使得每个文档都要保存字段名,所以空间压缩上不如Protocol Buffers。

BSON第一眼看上去像BLOB,但MongoDB理解BSON的内部机制,所以MongoDB可以深入BSON对象的内部,即使是嵌套的对象,这样MongoDB就可以在顶层和嵌套的BSON对象上建立索引来应对各种查询了。… 阅读全文




快乐成长 每天进步一点点      京ICP备18032580号-1