分片是把大型数据集合进行分区成更小的可管理的片的过程。

副本集的每一个成员(仲裁节点除外)都一份数据的完整拷贝!

分片的目的:在节省硬件成本的基础上,提高系统的整体性能。但是却增加了管理和性能的开销。

分片集群中的组件:

几个组件协同工作才可以让分片集群正常工作。当他们正常工作时,这个整体就叫做分片集群。

分片集群是由分片,mongos路由器,配置服务器组成。

一个简单的分片集群,结构如下:

mongodb的分片

图片中有两个分片: 存储了应用数据。在分片集群中,只有mongos路由器或者系统管理员可以直接连接分片服务器节点。每个分片是个单独的副本集。

mongos路由器:每个分片包含的只是总数据的一部分,所以需要某个东西来路由操作到适当的分片上,这就是路由的作用。mongos缓存了集群元数据并使用它来路由操作到正确的分片路由器。mongos提供给库互端单点连接集群的方式,这使得整个集群看起来像个单点。mongos是个轻量级的,不持久化的。他们通常需要部署在应用程序服务器上。

配置服务器(config-server):存储集群的元数据,包括那个分片包含哪些数据集。这些元数据包含集群配置信息,每个数据库,集合,特定数据的范围位置,以及保存了跨片数据迁移历史的一个修改日志。

配置服务器保存的元数据时集群正常工作和更新维护的关键。例如,每次mongodb启动,mongos都会从配置服务器获取一份元数据拷贝。没有这些数据,就没有办法完整预览这个集群。配置服务器必须部署在单独的冗余机器上。

从MongoDB 3.2开始,可以将分片群集的配置服务器部署为副本集(CSRS),而不是三个镜像配置服务器(SCCC)。使用配置服务器的副本集可以提高配置服务器的一致性,因为MongoDB可以利用配置数据的标准副本集读写协议。此外,使用配置服务器的副本集允许分片群集具有3个以上的配置服务器,因为副本集最多可包含50个成员。要将配置服务器部署为副本集,配置服务器必须运行WiredTiger存储引擎。mongodb3.4已经删除对SCCC的支持,配置服务器需要配置成副本集

mongodb的分片方式?

mongodb的数据单元:

  • 文档:mongodb中最小的数据单元。文档表示系统中不可再分的单个对象。我们可以把他与关系型数据库中的行比较。
  • 块:是一个逻辑概念,根据文档中某个字段的值划分的一个集合。块只在分片集群中存在的概念。分解一个或者一组字段的值进行分片,这些字段称为分片键。
  • 集合:数据库中一组命名的文档。类比mysql中表的概念。
  • 数据库: 类比MySQL中库的概念。这是系统中最顶级的命名组。组合数据库名字和集合的名字提供了系统中的唯一性,这通常也叫做命名空间。通常是数据库名字和集合名字连接在一起,中间用圆点分割。

mongodb的分片正是基于上面提到的逻辑概念块来分片操作的。

构建一个分片集群

首先我们搭建一个3个分片,一个mongos路由,一个config集群的副本集。在这个基础上对mongos做HA,完成了HA之后,会测试mongo集群之间的认证模式!

有5台测试机,规划如下:

10.0.102.195

10.0.102.202

10.0.102.204

10.0.102.214

10.0.102.220

rp1-p:30001

rp1-s:30001

rp1-a:30001

rp2-p:30002

rp2-s:30002

rp2-a:30002

rp3-s:30003

rp3-p:30003

rp3-a:30003

config-p:30004

config-a:30004

config-s:30004

 

 

mongos:27017

rp:表示副本集, rpx-p:表示副本集的主,rpx-s:表示副本集的secondary, rpx-a:表示副本集的仲裁节点。config:表示配置服务器,mognos:表示mongos服务器。

1:首先搭建三个分片副本集

按照上面的划分,每个物理机中只有一个副本集中的一个成员,因此我们在每个物理机中创建对应/data/nodeX目录,在里面保存分别创建conf,log,db目录来保存对应配置文件,日志,和数据文件。

[root@test4 ~]# mkdir -p /data/node1
[root@test4 ~]# cd /data/node1/
......
[root@test4 node1]# ls
conf  db  log

其余的目录创建省略

编写配置文件,配置文件如下:

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
   destination: file
   logAppend: true
   path: /data/node1/log/mongodb.log

# Where and how to store data.
storage:
   dbPath: /data/node1/db
   journal:
      enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
processManagement:
   fork: true  # fork and run in background
   pidFilePath: /data/node1/log/mongod.pid  # location of pidfile

# network interfaces
net:
   port: 30001
   bindIp:    # Listen to local interface only, comment to listen on all interfaces.


#security:

#operationProfiling:

replication:
   replSetName: shard1      #当前副本集的名字

#sharding:
sharding:
   clusterRole: shardsvr     #集群中的角色是分片服务器

## Enterprise-Only Options

#auditLog:

#snmp:
shard1副本集配置文件

相关文章:

  • 2021-11-28
猜你喜欢
  • 2021-10-07
  • 2022-01-22
  • 2021-06-06
  • 2022-01-18
  • 2021-07-28
相关资源
相似解决方案