在Linux上如何快速搭建MongoDB集群

搭建MongoDB集群的一个小妙招,教你快速搭建MonggoDB集群。
一.首先确认你的集群信息
三台机器的配置服务(27018)形成复制集,分片1、2、3也在各机器都部署一个实例,它们之间形成复制集,客户端直接连接3个路由服务与之交互,配置服务和分片服务对客户端是透明的。
明确下列信息:
例如:
在这里插入图片描述
服务器的安装及配置:
1、下载解压MongoDB(三台服务器执行相同操作)
下载路径:https://fastdl.mongodb.org/linux
建议下载版本:mongodb-linux-x86_64-4.0.6.tgz;
解压步骤:1.打开 xshell 连接虚拟机主机,
2.将压缩包放置/home路径下进行解压
3.改名:将解压文件夹名称改为mongodb;
设置环境变量:echo ‘export PATH=.:/home/mongodb/bin:$PATH’ >> /etc/profile
进行保存;
通过source /etc/profile进行刷新处理;

2、创建路由、配置、分片等的相关目录与文件配置服务器部署(3台服务器执行相同操作)

启动配置文件存放的文件夹:mkdir -p /home/mongodb/conf   
配置服务数据存放目录:mkdir -p /home/mongodb/data/config    
分片1服务数据存放目录:mkdir -p /home/mongodb/data/shard1   
分片2服务数据存放目录:mkdir -p /home/mongodb/data/shard2   
分片3服务数据存放目录:mkdir -p /home/mongodb/data/shard3
创建log目录:                 mkdir -p /home/mongodb/log    
配置服务日志存放文件:touch /home/mongodb/log/config.log   
路由服务日志存放文件:touch /home/mongodb/log/mongos.log    
分片1服务日志存放文件:touch /home/mongodb/log/shard1.log    
分片2服务日志存放文件:touch /home/mongodb/log/shard2.log    
分片3服务日志存放文件:touch /home/mongodb/log/shard3.log

3.配置服务器的部署(3台机器执行操作)
在/home/mongodb/conf目录创建config.conf
将下面的配置文件放置config.conf文件中

  dbpath=/home/mongodb/data/config
 logpath=/home/mongodb/log/config.log    
 port=27018    
 logappend=true    
 fork=true    
 maxConns=5000    
 #复制集名称    
 replSet=configs    
 #置参数为true    
 configsvr=true    
 #允许任意机器连接    
 bind_ip=0.0.0.0

配置复制集—》》分别启动三台服务器的配置服务:
mongod -f /home/mongodb/conf/config.conf
连接mongo,只需在任意一台机器执行即可:
mongo --host bd1 --port 27018
切换数据库
use admin
初始化复制集:
rs.initiate({_id:“configs”,members:[{_id:0,host:“bd1:27018"},{_id:1,host:“bd2:27018”}, {_id:2,host:“bd3:27018”}]})
其中_id:"configs"的configs是上面config.conf配置文件里的复制集名称,把三台服务器的配置服务组成复制集。
查看状态:
rs.status()
等几十秒左右,执行上面的命令查看状态,三台机器的配置服务就已形成复制集,其中1台为PRIMARY,其他2台为SECONDARY。
4.分片服务部署(3台服务器执行相同操作)
在/home/mongodb/conf目录创建shard1.conf文件;
文件内容如下:

dbpath=/home/mongodb/data/shard1 
logpath=/home/mongodb/log/shard1.log 
port=27001 
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true
replSet=shard1 
bind_ip=0.0.0.0

在/home/mongodb/conf目录创建shard2.conf文件;
文件内容如下:

dbpath=/home/mongodb/data/shard2 
logpath=/home/mongodb/log/shard2.log 
port=27002 
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true
replSet=shard2
bind_ip=0.0.0.0

在/home/mongodb/conf目录创建shard3.conf文件;

dbpath=/home/mongodb/data/shard3 
logpath=/home/mongodb/log/shard3.log 
port=27003 
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true
replSet=shard3
bind_ip=0.0.0.0

5.配置分片集:
a.在3台机器的相同端口形成一个分片的复制集,由于3台机器都需要这3个文件,所以根据这9个配置文件分别启动分片服务:
分别在每一个机器中启动下列三条命令:
mongod -f /home/mongodb/conf/shard1.conf
mongod -f /home/mongodb/conf/shard2.conf
mongod -f /home/mongodb/conf/shard3.conf
b.将分片配置为复制集

连接mongo,只需在任意一台机器执行即可: mongo --host bd0201 --port 27001
*(这里以shard1为例,其他两个分片则再需对应连接到27002、27003的端口进行操作即可 ) 切换数据库: use admin 初始化复制集: rs.initiate({_id:“shard1”,members:[{_id:0,host:" bd1
:27001"},{_id:1,host:" bd2:27001"},{_id:2,host:" bd3:27001"}]})
以上是基于分片1来操作,同理,其他2个分片也要连到各自的端口来执行一遍上述的操作,让3个分片各自形成1主2从的复制集,注意端口及仲裁节点的问题即可,操作完成后3个分片都启动完成,并完成复制集模式。

选择一台机器将命令输入

mongo --host bd1 --port 27001
use admin 
rs.initiate({_id:"shard1",members:[{_id:0,host:"bd1:27001"},{_id:1,host:"bd2:27001"},{_id:2,host:"bd3:27001"}]})
exit

退出

继续输入:

mongo --host bd1 --port 27002
use admin 
rs.initiate({_id:"shard2",members:[{_id:0,host:"bd1:27002"},{_id:1,host:"bd2:27002"},{_id:2,host:"bd3:27002"}]})
exit

退出

继续输入:

mongo --host bd1 --port 27003
use admin 
rs.initiate({_id:"shard3",members:[{_id:0,host:"bd1:27003"},{_id:1,host:"bd2:27003"},{_id:2,host:"bd:27003"}]})

c.路由服务部署(3台服务器执行相同操作)
在/home/mongodb/conf目录创建mongos.conf,内容如下:

  logpath=/home/mongodb/log/mongos.log    
  logappend = true    
  port = 27017    
  fork = true    
  configdb = configs/bd1:27018,bd2:27018, bd3:27018    
  maxConns=20000    
  bind_ip=0.0.0.0

启动mongos
分别在三台服务器同时启动:

mongos -f /home/mongodb/conf/mongos.conf

启动分片功能
连接mongo:

mongo --host bd1 --port 27017

切换数据库:
use admin
添加分片,只需在一台机器执行即可:

sh.addShard("shard1/bd1:27001, bd2:27001, bd3:27001")    
sh.addShard("shard2/bd1:27002, bd2:27002, bd3:27002 ")    
sh.addShard("shard3/bd1:27003, bd2:27003, bd3:27003 ")

查看集群状态:
sh.status()

显示内容如下,那么恭喜你,已经成功晋级为搭建MongoDB小能手!

--- Sharding Status --- 
  sharding version: {
        "_id" : 1,
        "minCompatibleVersion" : 5,
        "currentVersion" : 6,
        "clusterId" : ObjectId("5f51ba7ee7235v9a708e45")
  }
  shards:
        {  "_id" : "shard1",  "host" : "shard1/bd1:27001,bd2:27001,bd3:27001",  "state" : 1 }
        {  "_id" : "shard2",  "host" : "shard2/bd1:27002,bd2:27002,bd3:27002",  "state" : 1 }
        {  "_id" : "shard3",  "host" : "shard3/bd1:27003,bd2:27003,bd3:27003",  "state" : 1 }
  active mongoses:
        "4.0.6" : 3
  autosplit:
        Currently enabled: yes
  balancer:
        Currently enabled:  yes
        Currently running:  no
        Failed balancer rounds in last 5 attempts:  0
        Migration Results for the last 24 hours: 
                No recent migrations
  databases:
        {  "_id" : "config",  "primary" : "config",  "partitioned" : true }
                config.system.sessions
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                shard1  1
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard1 Timestamp(1, 0) 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值