mongodb集群——配置服务器放分片meta信息,说明meta里包含了哪些数据信息

简介:
+关注继续查看

在搭建分片之前,先了解下分片中各个角色的作用。

① 配置服务器。是一个独立的mongod进程,保存集群和分片的元数据,即各分片包含了哪些数据的信息。最先开始建立,启用日志功能。像启动普通的mongod一样启动配置服务器,指定configsvr选项。
不需要太多的空间和资源,配置服务器的1KB空间相当于真实数据的200MB。保存的只是数据的分布表。当服务不可用,则变成只读,无法分块、迁移数据。 ② 路由服务器。即mongos,起到一个路由的功能,供程序连接。本身不保存数据,在启动时从配置服务器加载集群信息,开启mongos进程需要知道配置服务器的地址,指定configdb选项。 ③ 分片服务器。是一个独立普通的mongod进程,保存数据信息。可以是一个副本集也可以是单独的一台服务器。

      在部署之前先明白片键的意义,一个好的片键对分片至关重要。片键必须是一个索引,数据根据这个片键进行拆分分散。通过sh.shardCollection加会自动创建索引。一个自增的片键对写入和数据均匀分布就不是很好,因为自增的片键总会在一个分片上写入,后续达到某个阀值可能会写到别的分片。但是按照片键查询会非常高效。随机片键对数据的均匀分布效果很好。注意尽量避免在多个分片上进行查询。在所有分片上查询,mongos会对结果进行归并排序。

配置服务器官方的最新说明:

Replica Set Config Servers

在 3.4 版更改.

Starting in MongoDB 3.2, config servers for sharded clusters can be deployed as a replica set (CSRS) instead of three mirrored config servers (SCCC). Using a replica set for the config servers improves consistency across the config servers, since MongoDB can take advantage of the standard replica set read and write protocols for the config data. In addition, using a replica set for config servers allows a sharded cluster to have more than 3 config servers since a replica set can have up to 50 members. To deploy config servers as a replica set, the config servers must run the WiredTiger storage engine.

来自:http://docs.mongoing.com/manual-zh/core/sharded-cluster-config-servers.html

其想表达的核心便是使用副本集来进行配置服务器部署。

 

基本概念

mongodb-001

  • 路由(mongos)

请求的入口,所有请求都经过mongos协调和分发。通常部署多个实例,以便当一个mongos失败时,应用层驱动可以切换到其他正常的实例上。此外也可以通过一组mongos实例实现“池”的概念,在与应用层之间增加一层用于负载均衡的代理,将请求分配到“池”中的mongos实例上。mongos实例本身并不需要磁盘空间存储数据,它启动时会加载config server中的配置数据到内存,当config变化时会被通知更新。

  • 配置服务器(mongod. config server)

存储整个集群的元数据配置信息(路由、分片),mongos通过这些配置作为导向,将读写请求分发到不同的shard上。

  • 分片(mongod. shard)

数据库存储数据的组件,通过多实例达到负载均衡可伸缩目的,通过多副本主备切换达到避免单点失败的目的。

 

具体部署step by step见:

http://www.cnblogs.com/cyhe/p/5428436.html

http://www.wanghengbin.com/2016/03/18/mongodb-shard-cluster-app/

单机分片示意(对于2.6系列支持!):http://noodle.blog.51cto.com/2925423/1748149 实测没有问题!如果是3.4版本则有问题,出现提示config server必须是副本集,但是配置了副本集后又会遇到timeout错误!!!

 

我的config server配置设置成下面,并且修改了mongos的port为8888才解决了timeout错误!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
systemLog:
   destination: file
   path: "/srv/fuck_mongo/mongodb/var/config.log"
   logAppend: false
storage:
   dbPath: "/srv/fuck_mongo/mongodb/config"
   directoryPerDB: true
processManagement:
   fork: true
net:
   port: 21001
   bindIp: 0.0.0.0
sharding:
   clusterRole: "configsvr"
replication:
   replSetName: "cfg"

  













本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6291917.html,如需转载请自行联系原作者


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
NoSQL MongoDB 数据库
MongoDB常用的操作(服务器、数据库、集合)
MongoDB常用的操作(服务器、数据库、集合)
54 0
|
4月前
|
NoSQL 网络协议 安全
Linux系统:第十二章:AWS服务器X86架构安装配置Mysql与MongoDB
Linux系统:第十二章:AWS服务器X86架构安装配置Mysql与MongoDB
135 0
|
8月前
|
NoSQL 网络协议 安全
Linux系统:第十二章:AWS服务器X86架构安装配置Mysql与MongoDB
Linux系统:第十二章:AWS服务器X86架构安装配置Mysql与MongoDB
145 0
|
8月前
|
NoSQL 关系型数据库 Linux
Linux服务器的MongoDB的安装和使用
Linux服务器的MongoDB的安装和使用
242 0
Linux服务器的MongoDB的安装和使用
|
8月前
|
NoSQL Ubuntu Linux
Linux服务器安装部署最新稳定版本mongoDB社区版- Ubuntu-20.04版本
Linux服务器安装部署最新稳定版本mongoDB社区版- Ubuntu-20.04版本
551 0
Linux服务器安装部署最新稳定版本mongoDB社区版- Ubuntu-20.04版本
|
8月前
|
存储 缓存 NoSQL
分布式服务器框架之Servers.Core中 实现Log模块设计 写入MongoDB数据库
游戏服务器中都需要用到Log模块,log模块存在的意义第一个是将log输出到控制台又或者是写入到log文件中,出了BUG方便定位;第二是常用于将用户的数据(例如玩家登录、道具购买量)将这种log统计到数据库中,方便统计用户留存信息、数据分析等。
|
8月前
|
NoSQL MongoDB 数据库
分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
YFUniqueEntity是数据库中的结构,GetUniqueID函数中会根据Type和自增步长去数据库中寻找该类型的当前ID是多少,然后会用当前的Id去加上步长,把更新后的新ID插入到MongoDB中记录着ID的那张表里。
|
8月前
|
NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现 MongoEntityBase 实现阻塞 异步对MongoDB的增删改查
YFMongoDBModelBase类是个模板类,对模板参数进行了约束YFMongoEntityBase,必须要继承YFMongoEntityBase
|
8月前
|
JSON NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
|
8月前
|
SQL NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB对象实体类 管理对象ID
MongoDB中的ID是一个hash码,和传统的关系数据库相比MongoDB没有办法实现ID的自增,如果需要ID自增的话,所以要自己管理ID,并且把对应类型的ID写入到一个专门的Collection(其实就是Sql中的Table)里面去,每次创建新对象的时候,都要取到该类型当前的ID,然后在这个基础上+1,比如当前是角色的ID是1,又创建了一个新的角色,要在原来的基础上+1 ID=2。今天先把MongoDB的对象实体基类实现了。
推荐文章
更多