Mongodb3.4.4复制集群+分片配置文档
2019独角兽企业重金招聘Python工程师标准>>>
1. 复制
1.1. 复制简介
MongoDB复制是将数据同步在多个服务器的过程。
复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
复制还允许您从硬件故障和服务中断中恢复数据。
1.2. 什么是复制
l 保障数据的安全性
l 数据高可用性 (24*7)
l 灾难恢复
l 无需停机维护(如备份,重建索引,压缩)
l 分布式读取数据
1.3. MongoDB复制原理
mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
mongodb各个节点常见的搭配方式为:一主一从、一主多从。
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
1.4. 复制架构
以上结构图总,客户端总主节点读取数据,在客户端写入数据到主节点是, 主节点与从节点进行数据交互保障数据的一致性。
1.5. 复制特征
- N 个节点的集群
- 任何节点可作为主节点
- 所有写入操作都在主节点上
- 自动故障转移
- 自动恢复
2. 分片
2.1. 分片简介
在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。
当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
2.2. 为什么使用分片
- 复制所有的写入操作到主节点
- 延迟的敏感数据会在主节点查询
- 单个副本集限制在12个节点
- 当请求量巨大时会出现内存不足。
- 本地磁盘不足
- 垂直扩展价格昂贵
2.3. 分片架构
上图中主要有如下所述三个主要组件:
Shard:
用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障
Config Server:
mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。
Query Routers:
前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用
3. 复制+分片配置
3.1. 基础组件
操作系统: CentOS6.5 x64
Mongodb版本: 3.4.4
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.4.tgz
集群 |
IP |
端口号 |
rs0 |
192.168.1.90 |
26001 |
rs0 |
192.168.1.9 |
26001 |
rs1 |
192.168.1.90 |
26002 |
rs1 |
192.168.1.9 |
26002 |
rs2 |
192.168.1.90 |
26003 |
rs2 |
192.168.1.9 |
26003 |
Configure server: 192.168.1.90:26007、192.168.1.9:26007
Router : 192.168.1.90:26010、192.168.1.9:26010
3.2. 复制配置
下载软件并解压到指定目录
解压软件
tar xvf mongodb-linux-x86_64-rhel62-3.4.4.tgz
创建安装目录
mkdir –p /data/usr/local/mongodb/
复制可执行文件到安装目录
cp -a mongodb-linux-x86_64-rhel62-3.4.4/bin /data/usr/local/mongodb/
创建mongodb存储目录
mkdir –p /data/mongodb26001mkdir –p /data/mongodb26002mkdir –p /data/mongodb26003mkdir –p /data/mongodb26007mkdir –p /data/mongodb26010
配置文件配置
cat /etc/mongodb26001.confport=26001logpath=/data/mongodb26001/mongod26001.loglogappend=truepidfilepath=/data/mongodb26001/26001.pid dbpath=/data/mongodb26001#bind_ip=mongodb1.example.net,127.0.0.1maxConns=500replSet=rs0shardsvr=true#auth=true#keyFile=/data/usr/local/mongodb/mongodbkey.cert#fork=true#cpu=true#noauth=true
启动
nohup mongod -f /etc/mongodb26001.conf &
初始化
mongo 192.168.1.90:26001rs.initiate()rs.conf()
以上配置在192.168.1.9上重复执行
启动备用实例(192.168.1.9上执行)
nohup mongod -f /etc/mongodb26001.conf &
切换到192.168.1.90上
执行mongo 192.168.1.90:26001
rs.add("192.168.1.9:26001")
验证
rs.status()
集群rs1、rs2同上
3.3. 分片配置
添加Config Server
cat /etc/mongodb26007.confport=26007logpath=/data/mongodb26007/mongod26007.loglogappend=truepidfilepath=/data/mongodb26007/26007.pid dbpath=/data/mongodb26007#bind_ip=mongodb7.example.net,127.0.0.1maxConns=500replSet=configReplSetconfigsvr=true#auth=true#keyFile=/data/usr/local/mongodb/mongodbkey.cert#fork=true#cpu=true#noauth=true
192.168.1.9上配置文件相同
启动(两个都启动)
nohup mongod -f /etc/mongodb26002.conf &
初始化配置
rs.initiate({_id: "configReplSet",configsvr: true,members: [{ _id: 0, host: "192.168.1.90:26007" },{ _id: 1, host: "192.168.1.9:26007" }]})
验证
rs.statau()
添加route节点(mongos)
[root@oracle ~]# cat /etc/mongodb26010.confport=26010logpath=/data/mongodb26010/mongod26010.loglogappend=truepidfilepath=/data/mongodb26010/26010.pid #dbpath=/data/mongodb26010#bind_ip=mongodb10.example.net,127.0.0.1maxConns=500configdb=configReplSet/192.168.1.90:26007,192.168.1.9:26007#configdb=configReplSet/mongodb7.example.net:26007,mongodb8.example.net:26008,mongodb9.example.net:26009#chunkSize=1 fork=true#auth=true#keyFile=/data/usr/local/mongodb/mongodbkey.cert#fork=true#cpu=true#noauth=true
启动router
nohup mongos -f /etc/mongodb26010.conf &
添加分片节点
mongo mongodb10.example.net:26010进入mongodb
sh.addShard( "rs0/192.168.1.90:26001,192.168.1.9:26001" )sh.addShard( "rs1/192.168.1.90:26002,192.168.1.9:26002" )sh.addShard( "rs2/192.168.1.90:26003,192.168.1.9:26003" )use testsh.enableSharding('test');sh.shardCollection('test.user',{uid:1})for(i=-100;i<1000;i++){db.user.insert({uid:i,username:'test-'+i});}
验证分片
sh.status()
不明显;
for(i=10000;i<1000000;i++){db.user.insert({uid:i,username:'test-'+i});}
4. 添加分片
1, 复制集配置完毕
2, 配置服务器不用动
3, 往路由服务器里添加分片即可
sh.addShard( "rs3/192.168.1.90:26004,192.168.1.91:26004,192.168.1.9:26004" )for(i=1000001;i<2000000;i++){db.user.insert({uid:i,username:'test-'+i});}
哈希分片
初始值:
移除分片
use admin;db.adminCommand( { listShards: 1 } )
(或者运行 sh.status() 或者 db.printShardingStatus() .)
shards._id 字段列出了每个分片的名字.
db.runCommand({removeShard: "rs0"});
5. 错误处理
5.1. 错误一
"infoMessage" : "could not find member to sync from",
解决办法:
等待,知道复制集同步完成即可
转载于:https://my.oschina.net/guanshanyue1990/blog/1456650
Mongodb3.4.4复制集群+分片配置文档相关推荐
- csrediscore访问redis集群_搭建文档 | centos7.6环境下redis5.0.8集群搭建
" 本文作者:墨篱弦 " 一.做基础配置 a) 首先创建3个空文件 mkdir -p /server/redis_cluster/7001/datamkdir -p /server ...
- Mongodb3.4 复制集及分片配置
2019独角兽企业重金招聘Python工程师标准>>> 复制技术: mongodb的复制至少需要两个节点.其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数 ...
- StarRocks 集群安装部署文档
下表为规划的集群组件分配 域名 starrocks1 starrocks2 starrocks3 组件 mysql.FE(follower).BE1.datax-executor.datax FE(l ...
- k8s二进制集群部署安装文档
一.架构拓扑图 版本信息: kubernetes v1.18.20/ etcd-v3.4.21 docker 18.09.9-3.el7 calico/node v3.8.9 安装所需要镜像: har ...
- biee 12c linux 安装,oracle biee 12c linux ha 集群安装配置手册.pdf
oracle biee 12c linux ha 集群安装配置手册 Oracle BIEE 12c Linux 系统集群安装配置文档 仇 辉 2017 年 2 月 1 1 文档控制 编制 日期 作者 ...
- Mysql 8 group replication组复制集群单主配置图解
Mysql 8 MGR集群单主配置图解 声明与简介 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的MGR集群的配置. ...
- solrloud集群的配置,zoookeeper+IK分词器+solrcloud,以及集群连接,分片管理
什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候是不需要 ...
- Mongo集群分片部署实践(4.2版本)
>使用一台Windows机器模拟集群分片部署,配置方案如下: 3个分片sharding 每一个分片由三个节点构成1主2备的 Replica Sets 3个配置节点Configserver 一个路 ...
- Elasticsearch7.x 安装及集群的配置
简介 首先引用 Elasticsearch (下文简称 ES)官网的一段描述: Elasticsearch 是一个分布式.RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例. 作为 ...
最新文章
- php访问获取全部网站状态码,php打开其他网站获取状态码
- squid反向代理(实现缓存)加速web
- C语言 | 指向指针的指针排序
- React开发(252):react项目理解 ant design spining加载中
- arm qt5 iconv 问题
- 路由算法及路由协议(详解)
- python之socket编程
- android获取年月日时分秒毫秒,Android获取两个日期其间间隔的天数
- erp采购总监个人总结_2018计划工作年终总结和2019目标:助理版、经理版、总监版(二)...
- spring-boot 免xml配置直接使用spring
- php 精度比较,PHP浮点数精度和比较
- SVNQuery–如何创建更新索引并查询
- P2P打洞原理(二十二)
- 转iOS深拷贝与浅拷贝 附NSSet讲解
- html文字自动轮播代码怎么写,图片轮播HTML代码
- 联想云计算机终端,联想智能云教室系统 V1.3.20.1109_C201105 最新官网版本
- 51单片机系列--led点阵屏显示汉字
- 集集自助服务密码重置
- 苹果应用审核指南最新
- 一文了解线控制动市场格局——7家公司10款产品盘点
热门文章
- MySQL之日期时间处理函数_MySQL之日期时间处理函数
- liteos内核驱动和linux,移植RTOS必备基础知识
- linux向上翻页_linux学习基础篇——文件管理(一)
- bios免电池补丁_补丁和权限 处理器漏洞多大这样看
- 计算机与材料化学应用背景介绍,计算机在材料工程中的应用.ppt
- python一对一_Python - Django - ORM 一对一表结构
- amp 调用链_调用链选型之Zipkin,Pinpoint,SkyWalking,CAT
- 华中科技大学应用高等工程数学_专业解析【第152期】| 机械电子工程课程设置及研究方向...
- 获取目录的大小函数linux,Linux C++获取文件夹大小1(通过lstat实现)
- bootcamp空间不足_Bootcamp安装WinXP补丁时C盘空间不足怎么办?