mongodb一个神奇的nosql数据库,特此总结一下mongodb的主从、副本集、分片的相关概念和原理。
一、MongoDB的主从复制
主从复制是MongoDB最常用的复制方式。这种方式非常灵活,可用于备份、故障恢复、读扩展等。
最基本的设置方式就是建立一个主节点和一个或者多个从节点,每个从节点要知道主节点的地址。运行
mongod --master就启动了主服务器。运行mongod --slave --sourcemaster_address 则启动了从服务器,
其中master_address就是上面主节点的地址。
为了方便演示,可以在一台计算机上来模拟主节点和从节点。在D盘创建两个目录master和slave,
master目录作为主节点的数据文件的目录,slave目录作为从节点的数据文件的目录。
注意:主节点和从节点要指定不同的端口。
启动主节点:mongod --dbpathd:\master --port 10000 --master
启动从节点:mongod --dbpathd:\slave --port 10001 --slave --source localhost:10000
启动成功后就可以连接主节点进行操作了,而这些操作会同步到从节点。
二、MongoDB的副本集
副本集就是有自动故障恢复功能的主从集群。
主从集群和副本集最大的区别就是副本集没有固定的“主节点”;整个集群会选出一个“主节点”,
当其挂掉后,又在剩下的从节点中选中其他节点为“主节点”,副本集总有一个活跃点(primary)和
一个或多个备份节点(secondary)。
1、MongoDB副本集的好处:
· 保障数据的安全性
· 数据高可用性 (24*7)
· 灾难恢复
· 无需停机维护(如备份,重建索引,压缩)
· 分布式读取数据
2、MongoDB副本集的特征:
· N 个节点的集群
· 任何节点可作为主节点
· 所有写入操作都在主节点上
· 自动故障转移
· 自动恢复
三、MongoDB的分片(分布式存储)
为什么使用分片:
· 复制所有的写入操作到主节点
· 延迟的敏感数据会在主节点查询
· 单个副本集限制在12个节点
· 当请求量巨大时会出现内存不足。
· 本地磁盘不足
· 垂直扩展价格昂贵
分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程。有时也用分区(partitioning)
来表示这个概念。将数据分散到不同的机器上,不需要功能强大的大型计算机就可以储存更多的数据,处
理更多的负载。
MongoDB分片的基本思想就是将集合切分成小块。这些块分散到若干片里面,每个片只负责总如
果请求有了回应,路由器将其收集起来回送给应用。数据的一部分。应用程序不必知道哪片对应哪些数据,
甚至不需要知道数据已经被拆分了,所以在分片之前要运行一个路由进程,该进程名为mongos。这个路
由器知道所有数据的存放位置,所以应用可以连接它来正常发送请求。对应用来说,它仅知道连接了一个
普通的mongod。路由器知道数据和片的对应关系,能够转发请求到正确的片上。设置分片时,需要从集
合里面选一个键,用该键的值作为数据拆分的依据。这个键称为片键(shardkey)。
{name:"zhangsan",age:1}
用个例子来说明这个过程:假设有个文档集合表示的是人员。如果选择名字("name")作为片键,第一片可
能会存放名字以A~F开头的文档,第二片存的G~P的名字,第三片存的Q~Z的名字。随着添加或者删除片,
MongoDB会重新平衡数据,使每片的流量都比较均衡,数据量也在合理范围内。
这一天的学习效率特低,工作是比较清闲,但感觉什么都没干,就抽空总结了一些概念,
路漫漫其修远兮........ 愿明天更努力的学习........