MongoDB搭建副本集分片集群 大数据量存储(Windows版)

一,副本集与分片存储概述

       设定副本是一组mongodb保持相同数据集的过程。副本集提供冗余和高可用性,通过在不同数据库服务器上提供多个数据副本,达到一定程度的容错能力,以防止丢失单个数据库服务器。与MySQL的副本集相比,MongoDB的中的副本集配置十分便捷,且支持副本集中主服务器的自动选择。当主服务器宕机后,所有副本集会通过投票自动选择出一个新的主服务器,用户无需关心副本集中的主从服务器情况,只需对这个副本集进行操作即可。分片是一种跨多台机器分发数据的方法,MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署,MongoDB的分片群集包括以下组件:( 源自MongoDB的官网

  • 分片:每个分片包含分片数据的子集每个分片都可以部署为副本集。
  • mongos:充当查询路由器,提供客户端应用程序和分片集群之间的接口。
  • 配置服务器:存储群集的元数据和配置设置。从MongoDB 3.4开始,配置服务器必须部署为副本集(CSRS)。

二,基本结构(源自MongoDB的官网

        ä¸»è|è»»åçé»è®¤è·¯ç±å¾ãâ扩大               

                          副本集结构(图一)    

         ç¨äºçºº§ç®ççæ·æ¬åçé群çå¾è¡ããåå«3个éç½®æå¡å¨ï¼2个ææ'å¤``mongos``æ¥è¯¢è·¯ç±å¨ï¼ä »¥åè³å°2个åçãç¢çæ¯å¯æ¬éã

                        分片集群结构(图二)

三,详细步骤

分片结构端口如下:

Shard Server 1:27020
Shard Server 2:27021
Shard Server 3:27022
Shard Server 4:27023
Config Server :27100
Route Process:40000

1.创建分片文件夹及日志文件:

  • C:\ Program Files \ MongoDB目录下创建shard文件夹
  • C:\ Program Files \ MongoDB \ shard目录下创建文件夹conf1(配置服务器副本集),conf2,log(日志文件),s0(副本集),s1,s2,s3
  • C:\ Program Files \ MongoDB \ shard \ log目录下创建日志文件conf1.log,cong2.log,route.log,s0.log,s1.log,s2.log,s3.log(日志文件创建方法:打开记事本另存为 - >保存类型“所有文件” - >文件名“conf1.log”)

2.创建分片副本集rs0(切记以下每个步骤运行的命令行程序在创建分片的整个过程都不​​能关闭):

(1)创建复制集:

命令行

                                                            图三

命令行

                                                           图四

(2)配置副本集rs0(不要关闭图三四,打开命令行):首先键入cd C:\ Program File \ MongoDB \ Server \ 4.0 \ bin,然后依次执行以下几步:                                                                           

> mongo localhost:27020 
> rs.initiate({_id: 'rs0', members: [{_id: 0, host: 'localhost:27020'}, {_id: 1, host: 'localhost:27021'}]}) 
> rs.isMaster()
> rs.add('localhost:27020')
> rs.add('localhost:27021')

3.创建分片副本集rs1:

(1)创建复制集:

命令行

                                                           图五

命令行

                                                            图六

(2)配置副本集rs1(不要关闭图五六,打开命令行):首先键入cd C:\ Program File \ MongoDB \ Server \ 4.0 \ bin,然后依次执行以下几步:                                                                                        

> mongo localhost:27022 
> rs.initiate({_id: 'rs0', members: [{_id: 0, host: 'localhost:27022'}, {_id: 1, host: 'localhost:27023'}]}) 
> rs.isMaster()
> rs.add('localhost:27022')
> rs.add('localhost:27023')

4.创建配置副本集的的conf

(1)创建复制集:

命令行

                                                              图七

命令行

                                                                图八

(2)配置副本集conf(不要关闭图七八,打开命令行):首先键入cd C:\ Program File \ MongoDB \ Server \ 4.0 \ bin,然后依次执行以下几步:     

> mongo localhost:27100 
> rs.initiate({_id: 'conf', members: [{_id: 0, host: 'localhost:27100'}, {_id: 1, host: 'localhost:27101'}]}) 
> rs.isMaster()
> rs.add('localhost:27100')
> rs.add('localhost:27101')

5.创建路线

(1)创建路由服务器

命令行

(2)设置分片

键入cd C:\ Program File \ MongoDB \ Server \ 4.0 \ bin,然后依次执行以下几步:                                                                                                

> mongo localhost:40000
> use admin
> db.runCommand({ addshard: 'rs0/localhost:27020,localhost:27021'})
> db.runCommand({ addshard: 'rs1/localhost:27030,localhost:27031'})
> db.runCommand({ enablesharding: 'test'})
> db.runCommand({ shardcollection: 'test.user', key: {name: 1}})

四,环境配置总结

       或许以上每个步骤都有坑,在此之前小白根据网上各种配置方案都没配置成功(也许是小白理解能力...),不过还好最后通过结合文档对分片结构建立的理解,实现了环境搭建,现在看来最重要的还是要自己多思考,理清思路,不要盲从网上的教程,尤其注重内容的时效性,第一时间最好查看官方文档(虽然写得也不是很清楚,但至少版本与时俱进,配置思路清晰),这样大概会少走许多弯路吧...

猜你喜欢

转载自blog.csdn.net/qq_38685503/article/details/81456743