MongoDB版本
当前使用的MongoDB版本为4.2.0,下载地址.https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.0.tgz

关闭防火墙
systemctl stop filewalld

集群架构
副本集

若要查看具体的文档,可以访问官方文档,文章中很多内容都可以参考https://docs.mongodb.com/manual/,地址

分片

分三步:

(1).shard副本集的建立

(2).config的replica set 建立

(3).mongos 路由的建立

1.shard副本集的建立

共两个shard,shard1和shard2

(1)三台服务器上分别建立这个文件,及创建需要的目录

mkdir  /data/shard1 -p

mkdir  /data/logs/12305 -p

shard1.conf

storage:
dbPath: /data/shard1/data
journal:
enabled: true
directoryPerDB: true
#syncPeriodSecs: 60
engine: wiredTiger

processManagement:
fork: true
pidFilePath: /data/shard1/mongod.pid

net:
bindIp: 0.0.0.0
port: 12305

systemLog:
destination: file
path: /data/logs/12305/log.txt
logAppend: true

#security:
# keyFile: /data/phpmongo-keyfile
# authorization: enabled

operationProfiling:
slowOpThresholdMs: 100
mode: slowOp

replication:
#oplogSizeMB: 20000
replSetName: shard1

sharding:
clusterRole: shardsvr

重启服务

/usr/bin/mongod -f  shard1.conf

(2) 登陆任意的mongo客户端

/usr/bin/mongo --host 主机ip --port 12305

use admin

config = { _id:"shard1", members:[ {_id:0,host:"mongoshard1-node1:12305"}, {_id:1,host:"mongoshard1-node2:12305"}, {_id:2,host:"mongoshard1-arb01:12305",arbiterOnly:true} ] }
 
rs.initiate(config);
rs.status()
 
shard2 和shard1 建立的步骤一样,不再赘述
 
2. config的replica set 建立
(1)配置文件及目录建立
mkdir /data/confser/data -p
mkdir  /data/logs/12201/ -p
 
confser.conf

storage:
dbPath: /data/confser/data
journal:
enabled: true
directoryPerDB: true
#syncPeriodSecs: 60
engine: wiredTiger

processManagement:
fork: true
pidFilePath: /data/confser/mongoconf.pid

net:
bindIp: 0.0.0.0
port: 12201

systemLog:
destination: file
path: /data/logs/12201/log.txt logAppend: true

replication:
oplogSizeMB: 2048
replSetName: csvr
sharding:
clusterRole: configsvr
processManagement:
fork: true

#security:
# keyFile: /data/phpmongo-keyfile
# authorization: enabled

重启服务

/usr/bin/mongod -f  confser.conf

(2) 登陆任意的mongo客户端

/usr/bin/mongo --host 主机ip --port 12201

use admin

config = { _id:"csvr", members:[ {_id:0,host:"mongoconf-node1:12201"}, {_id:1,host:"mongoconf-node2:12201"}, {_id:2,host:"mongoconf-node3:12201"} ] }
 
rs.initiate(config);
rs.status()
 
3.mongos 路由的建立 
(1)目录及配置文件的建立
mkdir -p /data/mongos/
mkdir  -p /data/logs/12101/
 
mongos.conf

processManagement:
fork: true
pidFilePath: /data/mongos/mongos.pid

net:
bindIp: 0.0.0.0
port: 12101

systemLog:
destination: file
path: /data/logs/12101/log.txt
logAppend: true

#security:
# keyFile: /data/phpmongo-keyfile
# #authorization: enabled ##is available only for mongod.

sharding:
configDB: csvr/mongoconf-node1:12201,mongoconf-node2:12201,mongoconf-node3:12201

重启服务

/usr/bin/mongos -f  mongos.conf

(2) 登陆任意的mongo客户端

/usr/bin/mongo --host 主机ip --port 12101

mongos>use admin

添加分片
use admin

  • db.runCommand( { addshard : "shard1/mongoshard1-node1:12305,mongoshard1-node2:12305,mongoshard1-arb01:12305",name:"shard1"} )
  • db.runCommand( { addshard : "shard2/mongoshard2-node1:12306,mongoshard2-node2:12306,mongoshard2-arb01:12306",name:"shard2"} )

激活分片
需要注意的是,分片功能是需要手动开启的.

在mongo shell中,这里设置一个测试数据库,用来测试分片的功能.

  • db.runCommand( { enablesharding : "testdb" } )
  • db.runCommand( { shardcollection : "testdb.users",key : {id: 1} } )

创建测试数据,用来测试分片功能,下面的代码向数据库中插入了200w条数据,由于数据量比较大,所以批量插入的时候,时间会稍微有点久.

  • var arr=[];
  • for(var i=0;i<2000000;i++){
  • var uid = i;
  • var name = "mongodb"+i;
  • arr.push({"id":uid,"name":name});
  • }
  • db.users.insertMany(arr);

查询状态
通过sh.status()函数查看当前分片的状态,查看副本集的状态通过rs.status().

库,用来测试分片的功能.

  • db.runCommand( { enablesharding : "testdb" } )
  • db.runCommand( { shardcollection : "testdb.users",key : {id: 1} } )

创建测试数据,用来测试分片功能,下面的代码向数据库中插入了200w条数据,由于数据量比较大,所以批量插入的时候,时间会稍微有点久.

  • var arr=[];
  • for(var i=0;i<2000000;i++){
  • var uid = i;
  • var name = "mongodb"+i;
  • arr.push({"id":uid,"name":name});
  • }
  • db.users.insertMany(arr);

查询状态
通过sh.status()函数查看当前分片的状态,查看副本集的状态通过rs.status().

mongo 分片集群的搭建的更多相关文章

  1. Mongo--04 Mongo分片集群

    目录 一.分片的概念 二. 分片工作原理 三.IP端口目录规划 1.IP端口规划 2.目录规划 四.分片集群搭建副本集步骤 1.安装软件 2.创建目录 3.创建配置文件 4.优化警告 5.启动服务 6 ...

  2. 从零搭建mongo分片集群的简洁方法

    一.目录 1.mongo路径,config数据路径,shard数据路径

  3. mongo分片集群部署

    测试环境192.168.56.101-213 前期准备: openssl rand -base64 756 > /home/software/mongodb/mongodbkey chmod   ...

  4. Mongo分片集群脚本

    bash大法好啊,一键玩mongo. 我的mongo版本是:MongoDB shell version v4.0.2 这里准备为大家献上Mongo创建分片和可复制集的脚本,以及在部署的时候踩的坑. 分 ...

  5. MongoDB分片集群环境搭建记录

    --创建配置服务器mongod.exe --logpath "G:\USERDATA\MONGODB\Test2\Log\mongodb.log" --logappend --db ...

  6. MongoDB Sharding(二) -- 搭建分片集群

    在上一篇文章中,我们基本了解了分片的概念,本文将着手实践,进行分片集群的搭建 首先我们再来了解一下分片集群的架构,分片集群由三部分构成: mongos:查询路由,在客户端程序和分片之间提供接口.本次实 ...

  7. 【MongoDB】在windows平台下搭建mongodb的分片集群(二)

    在上一片博客中我们讲了Mongodb数据库中分片集群的主要原理. 在本篇博客中我们主要讲描写叙述分片集群的搭建过程.配置分片集群主要有两个步骤.第一启动全部须要的mongod和mongos进程. 第二 ...

  8. Windows 搭建MongoDB分片集群(二)

    在本篇博客中我们主要讲描述分片集群的搭建过程.配置分片集群主要有两个步骤,第一启动所有需要的mongod和mongos进程.第二步就是启动一个mongos与集群通信.下面我们一步步来描述集群的搭建过程 ...

  9. MongoDB之分片集群(Sharding)

    MongoDB之分片集群(Sharding) 一.基本概念 分片(sharding)是一个通过多台机器分配数据的方法.MongoDB使用分片支持大数据集和高吞吐量的操作.大数据集和高吞吐量的数据库系统 ...

随机推荐

  1. Arcpy 将要素类添加到当前工作窗口(内容列表)

    test1layer=arcpy.mapping.Layer( folder+"\\"+"result.shp") mxd = arcpy.mapping.Ma ...

  2. .net微信扫码支付

    今天给大家分享一篇.net的扫码支付文章,话不多说直接进入主题. 如有需要可以加我Q群[308742428]大家一起讨论技术,有偿服务. 后面会不定时为大家更新文章,敬请期待. 喜欢的朋友可以关注下. ...

  3. 【JS学习】慕课网8-17编程练习 网页的返回与跳转

    编程练习 制作一个跳转提示页面: 要求: 1. 如果打开该页面后,如果不做任何操作则5秒后自动跳转到一个新的地址,如慕课网主页. 2. 如果点击“返回”按钮则返回前一个页面. 代码如下: 需要注意的是 ...

  4. SpringMVC整合Freemarker(含Demo源码)(转)

    转自:http://blog.csdn.net/sinat_27535209/article/details/61199452 整合过程如下: 1.新建一个maven web工程,使用maven依赖s ...

  5. CSIC_716_20191209【并发编程---GIL和协程】

    GIL   Global Interpreter Lock 全局解释锁 GIL对含IO的任务来说,会出现不能保证数据安全的情况.如下: from threading import Thread fro ...

  6. hdu 4300 拓展kmp

    题目大意: 输入样例个数,每个样例有两行,第一行是26个字母,分别代表a~z加密后的密文:第二行代表一串密文+明文,密文一定是完整的,但明文可能不完整,让你输出最短的(密文+明文): 基本思路: 拓展 ...

  7. leetcood学习笔记-14*-最长公共前缀

    笔记: python if not   判断是否为None的情况 if not x if x is None if not x is None if x is not None`是最好的写法,清晰,不 ...

  8. 【Jenkins、sonar】

    1.Jenkins入门(一)安装Jenkins 2.Jenkins入门(二)部署java项目 3.Jenkins远程部署SpringBoot应用 4.配置sonar.jenkins进行持续审查 5.S ...

  9. 思维+贪心——cf1042D

    /* 首先考虑从后往前计算lis,显然0的在很多情况下的贡献要大于1 如果遇上0,那么lis++,如果遇上1,那么cnt1++,并且用cnt1更新lis 这样的贪心保证正确,因为从[i,j]这一段的l ...

  10. delphi 文件夹操作

    文件的拖放和打开拖拽 user shellapi type TForm1 = class(TForm) ListView1: TListView; procedure FormCreate(Sende ...