一、安装前准备

机器分配: 三台机器 A :192.168.19.101 B: 192.168.19.102 C: 192.168.19.103
A机器:mongos 、config server、shard1主节点、shard2仲裁、shard3从节点
B机器:mongos 、config server、shard1从节点、shard2主节点、shard3仲裁
C机器:mongos 、config server、shard1仲裁、shard2从节点、shard3主节点
端口分配:mongos 20000、config 21000 shard1 27001 shard2 27002、shard3 27003
三台机器全部关闭firewalld服务和selinunx,或者增加相应端口规则

2.目录结构,使basedir 和 datadir 不在一个分区上
basedir: /usr/local/mongodb/
datadir: /data/mongodb/

3.禁用大内存页面

二、下载 解压 创建相关目录

# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.9.tgz
# tar zxvfmongodb-linux-x86_64-rhel70-4.0.9.tgz
# mv mongodb-linux-x86_64-rhel70-4.0.9 /usr/local/mongodb# 创建相关目录
# mkdir -p /data/mongodb/mongos/log ;mkdir -p /data/mongodb/config/{data,log};mkdir -p /data/mongodb/shard1/{data,log};mkdir -p /data/mongodb/shard2/{data,log};mkdir -p /data/mongodb/shard3/{data,log}# 设置环境变量
# cat /etc/profile.d/mongodb.sh
#!/bin/bash
MONGODB_HOME=/usr/local/mongodb/
PATH=$PATH:$MONGODB_HOME/bin
export MONGODB_HOME PATH# . /etc/profile.d/mongodb.sh       #使环境变量生效

三、分片集群搭建
1.config server的配置,三台机器都需要操作

# pwd
/usr/local/mongodb/conf
# mkdir  /usr/local/mongodb/pids        #存放服务的pid 目录# cat config.conf           # config 配置文件
pidfilepath = /usr/local/mongodb/pids/configsrv.pid
dbpath = /data/mongodb/config/data
logpath = /data/mongodb/config/log/configsrv.log
logappend = true
bind_ip = 0.0.0.0
port = 21000
fork = true
configsvr = true
replSet = configs
maxConns = 20000#启动
# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/config.conf #初始化副本集,任意一台机器都可以
# mongo --host 192.168.19.101 --port 21000
> config = {_id:"configs", members:[{_id:101, host:"192.168.19.101:21000"},{_id:102, host:"192.168.19.102:21000"},{_id:103, host:"192.168.19.103:21000"}]}
> rs.initiate(config)
configs:SECONDARY> rs.status()           #等一会 当前机器 状态会变为 PRIMARY
configs:PRIMARY>

2.shard的配置,三台机器都需要操作

###############   以下是shard1的配置   ##############
# cat /usr/local/mongodb/conf/shard1.conf
pidfilepath = /usr/local/mongodb/pids/shard1.pid
dbpath = /data/mongodb/shard1/data
logpath = /data/mongodb/shard1/log/shard1.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
replSet = shard1
shardsvr = true
maxConns = 20000# 启动,三个节点均需要启动
# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard1.conf
#连接mongo 配置shard1
# mongo --host 192.168.19.101 --port 27001
> config = {_id:"shard1",members:[{_id:101,host:"192.168.19.101:27001"},{_id:102,host:"192.168.19.102:27001"},{_id:103,host:"192.168.19.103:27001",arbiterOnly:true}]}
> rs.initiate(config)
shard1:SECONDARY> rs.status()
shard1:PRIMARY> ###############   以下是shard2的配置   ##############
# cat /usr/local/mongodb/conf/shard2.conf
pidfilepath = /usr/local/mongodb/pids/shard2.pid
dbpath = /data/mongodb/shard2/data
logpath = /data/mongodb/shard2/log/shard2.log
logappend = true
bind_ip = 0.0.0.0
port = 27002
fork = true
replSet = shard2
shardsvr = true
maxConns = 20000# 启动,三个节点均需要启动
# mongod -f /usr/local/mongodb/conf/shard2.conf
#连接mongo 配置shard2
# mongo --host 192.168.19.102 --port 27002
> config = {_id:"shard2", members:[{_id:101, host:"192.168.19.101:27002",arbiterOnly:true}, {_id:102, host:"192.168.19.102:27002"},{_id:103, host:"192.168.19.103:27002"}]}
> rs.initiate(config)
shard2:SECONDARY> rs.status()
shard2:PRIMARY> ###############   以下是shard3的配置   ##############
# cat /usr/local/mongodb/conf/shard3.conf
pidfilepath = /usr/local/mongodb/pids/shard3.pid
dbpath = /data/mongodb/shard3/data
logpath = /data/mongodb/shard3/log/shard3.log
logappend = true
bind_ip = 0.0.0.0
port = 27003
fork = true
replSet = shard3
shardsvr = true
maxConns = 20000# 启动,三个节点均需要启动
# mongod -f /usr/local/mongodb/conf/shard3.conf
#连接mongo 配置shard3
# mongo --host 192.168.19.103 --port 27003
> config = {_id:"shard3", members:[{_id:101,host:"192.168.19.101:27003"},{_id:102,host:"192.168.19.102:27003",arbiterOnly:true},{_id:103,host:"192.168.19.103:27003"}]}
> rs.initiate(config)
shard3:SECONDARY> rs.status()
shard3:PRIMARY>

3 mongs配置

# cat /usr/local/mongodb/conf/mongos.conf
pidfilepath = /usr/local/mongodb/pids/mongos.pid
logpath = /data/mongodb/mongos/log/mongos.log
logappend = true
bind_ip = 0.0.0.0
port = 20000
fork = true
configdb = configs/192.168.19.101:21000,192.168.19.102:21000,192.168.19.103:21000  # 监听的配置服务器,只能有1个或3个,configs为配置服务器的副本集名称
maxConns = 20000# 启动,三个节点均需要启动
# mongos -f /usr/local/mongodb/conf/mongos.conf # 连接mongo 配置mongos  把所有的分片和路由器串联
# mongo --host 192.168.19.101 --port 20000
mongos> sh.addShard("shard1/192.168.19.101:27001,192.168.19.102:27001,192.168.19.103:27001")
mongos> sh.addShard("shard2/192.168.19.101:27002,192.168.19.102:27002,192.168.19.103:27002")
mongos> sh.addShard("shard3/192.168.19.101:27003,192.168.19.102:27003,192.168.19.103:27003")
mongos> sh.status()          # 查看状态

四、分片测试

mongos> use admin
mongos> db.runCommand( { enablesharding :"test"});
mongos> db.runCommand( { shardcollection : "test.table",key : {id: "hashed"} } )
mongos> use test
mongos> for (var i = 1; i <= 10000; i++) db.table.save({id:i,"test":"testval"})
mongos> db.table.stats()     #查看每个分区的数据量

https://www.oschina.net/question/3571801_2286249?sort=default

四、备份与恢复

#备份指定库
# mongodump --host 192.168.19.101 --port 20000 -d test -o /tmp/test
#备份所有库
# mongodump --host 192.168.19.101 --port 20000 -o /tmp/alldb
#备份指定集合
# mongodump --host 192.168.19.101 --port 20000 -d test -c table -o /tmp/test/#恢复所有库
# mongorestore --host 192.168.19.101 --port 20000 --drop /tmp/alldb  # --drop 可选 意思是恢复之前先把之前的数据删除,不建议使用
#恢复指定库
# mongorestore --host 192.168.19.101 --port 20000 -d test /tmp/test
#恢复集合
# mongorestore --host 192.168.19.101 --port 20000 -d test -c table /tmp/test/table.bson

五、其他
1 备份时过滤

# mongodump --host 192.168.19.101 --port 27017 -d touchless -c pousheng_validation_sdap  -q '{batch_id: { $in: [ "0001SU201", "0001SU202", "SU20A109210502316"] }, validate_status_flag: "Success"}' -o /cust/cig/data/mongodb/

2

mongodb 分片集群安装 -- 二进制文件安装相关推荐

  1. 搭建MongoDB分片集群

    在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...

  2. 实战:MongoDB 分片集群Shard Cluster 搭建(1台路由节点,3台配置节点,9台分片节点)

    MongoDB 分片集群搭建(分片集群安全认证+SpringBoot访问) 一.搭建要求 一台路由节点 IP地址:192.168.80.110 端口:11111 三套复制集(每个分片节点中的复制集 都 ...

  3. MongoDB——MongoDB分片集群(Sharded Cluster)两种搭建方式

    MongoDB分片集群(Sharded Cluster)两种搭建方式 MongoDB分片的概念 分片集群包含的组件 分片集群架构目标 MongoDB分片集群搭建 第一套副本集 第二套副本集 配置节点副 ...

  4. mongodb 启动_精心总结--mongodb分片集群启动与关闭

    概述 网上教程有点坑啊,很多bug,今天刚好涉及到所以抽空整理了下mongodb分片集群启动与关闭方面的教程.希望对大家有点帮助. 基础环境配置 192.168.240.145 测试Nosql服务器1 ...

  5. MongoDb分片集群认证

    本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html), Mong ...

  6. DOCKER-COMPOSE搭建MONGODB分片集群(单机版)

    docker-compose搭建mongodb分片集群(单机版) - 丰哥坑到 - 博客园

  7. 2021-05-12 MongoDB面试题 什么是MongoDB分片集群

    什么是MongoDB分片集群? Sharding cluster是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建.sharding分片很好的解决了单台服务器磁盘空 ...

  8. TiDB和MongoDB分片集群架构比较

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近阅读了TiDB源码的说明文档,跟MongoDB的分片集群做了下简单对比. 首先展示TiDB的整体架构 M ...

  9. mongodb分片集群突然停电造成一些错误,分片无法启动

    今天突然停电使mongodb分片集群造成这种错误,暂时不知道怎么解决,如果 有人知道请回复我 ,现在把记录下来,等后期处理. Fri Aug  8 10:49:52.165 [initandliste ...

最新文章

  1. 最强无监督行人重识别方法 Cluster Contrast ReID
  2. 手机热点总是正在连接服务器,手机热点用不了?可以尝试这个方法。
  3. 管理者的困境:放权或者崩溃
  4. A20 网卡驱动分析
  5. [jQuery基础] jQuery案例 -- qq音乐以及初步解决Ajax 跨域问题
  6. 从零实现深度学习框架——逻辑回归中的数值稳定
  7. 计算机组成原理-第3章-3.3
  8. paip.命令行执行js
  9. 复制当前地址到系统剪贴板
  10. 因计算机磁盘硬件的pe,PE缺少AHCI驱动无法识别硬盘更新U盘启动盘中的WINPE
  11. 删除需要TrustedInstaller权限的文件
  12. plupload插件上传总结(分片上传,php后端处理)
  13. 最新Discuz【西瓜】微信登录插件
  14. 线性高电压稳压器的制作
  15. esp32 Flash分区与OTA功能简析
  16. Visitor パターン
  17. 路由器可以上网但是显示没有连接到服务器,路由器不可上网怎么设置_路由器可以连接但无法上网怎么办...
  18. GDI基础(1):绘制线条和图形
  19. 从传统金融变身科技公司后,2017年的平安交了这样一份答卷
  20. 2019上半年恶意挖矿趋势报告

热门文章

  1. 关于『数据结构』:图论
  2. 实现动画切换渐进渐出效果
  3. [LCT刷题][连通性维护] P3950 部落冲突
  4. RN + Flutter
  5. 云计算 原理与实践期末复习
  6. 为什么宝宝做错事被骂哭后,还要求抱抱?
  7. dad my_每个爸爸都应该给孩子读的大师绘本 - 《My Dad》绘本解读
  8. Carrey的第一篇博客
  9. 静态页面和动态页面中的静态和动态到底指的是什么
  10. 【科研】浅学Cross-attention?