MongoDB进阶
核心组件
MongoDB作为一个分布式文件存储数据库,我们要了解他的架构方式和重要的组件,分别是 :mongod(数据库核心程序)
、mongos(他是用于分片集群的控制器和查询路由器)、mongo(他是交互式的MongoDB shell)
mongod
此程序会处理所有的数据请求,管理数据格式并且执行于后台的管理操作.无参数运行默认的数据目录为/data/db.默认端口27017会此端口侦听socket的请求链接.
mongod程序启动时确保该目录数据存在,并且当前用户拥有对该目录的写权限.如果该目录不存在或者没有写权限,程序启动失败,默认端口27017被占用,服务启动失败.
Mongod还有一个web服务器,侦听端口为28017,使用web昂问可以获取数据库的相关信息,
Mongo
Mongo为研发人员提供了交互式的JS API这样方便再数据库上直接做测试查询和操作,并且也可用于系统管理员对数据库进行有效的管理,可以通过命令的方式来处理.当mongo shell 启动后,默认链接连接到test数据库实例
Mongos
Mongos被用于MongoDB的分片.相当于一种路由服务,他对于来自应用层的查询请求进行并行处理并判断所请求的数据位于分片集群的具体位置
复制
MongoDB复制是将数据同步再多个服务器的过程.
复制提供了数据用于备份.并且再多个服务器上存储副本,提高了数据的可用性,并保证数据的安全性.复制还允许您从硬件故障和服务中断中回复数据.
复制目标
- Failover(故障转移,故障切换,故障恢复):系统中其中一项设备或者服务失效无法运作时,另一项设备或服务自动接收原失效系统所指定的工作.
- Redundancy(数据用于):再一个数据集合中重复的数据.
- 避免单点,用于灾难时回复,报表处理,提升数据可用性。
- 读写分离,分单读压力。
- 对用户透明的系统维护升级
复制基础
实现复制功能需要建立副本集
副本集是由自动故障恢复功能的主从集群,有一个Primary节点和一个或者多个Seconday节点组成。
mongodb的复制至少需要两个节点,一个是主节点处理用户的客户端请求,其余都是从节点,复制主节点上的数据,常见的模式由:一主一从,一主多从。主节点所有的操作oplog从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据于主节点一致。
副本集的特征:
N 个节点的集群
任何节点可作为主节点
所有写入操作都在主节点上
自动故障转移
自动恢复
实现复制集
启动
mongo --nodb
设置副本集
replicaSet = new ReplSetTest({"node":3})
启动mongod服务器
> replicaSet.startSet() ReplSetTest starting set [ ]
配置复制功能