900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 在Linux上如何快速搭建MongoDB集群

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

时间:2023-12-17 23:20:09

相关推荐

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

搭建MongoDB集群的一个小妙招,教你快速搭建MonggoDB集群。

一.首先确认你的集群信息

三台机器的配置服务(27018)形成复制集,分片1、2、3也在各机器都部署一个实例,它们之间形成复制集,客户端直接连接3个路由服务与之交互,配置服务和分片服务对客户端是透明的。

明确下列信息:

例如:

服务器的安装及配置:

1、下载解压MongoDB(三台服务器执行相同操作)

下载路径:/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/configlogpath=/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=truefork=truemaxConns=5000storageEngine=mmapv1shardsvr=truereplSet=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=truefork=truemaxConns=5000storageEngine=mmapv1shardsvr=truereplSet=shard2bind_ip=0.0.0.0

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

dbpath=/home/mongodb/data/shard3 logpath=/home/mongodb/log/shard3.log port=27003 logappend=truefork=truemaxConns=5000storageEngine=mmapv1shardsvr=truereplSet=shard3bind_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 27001use 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 27002use 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 27003use 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" : 3autosplit:Currently enabled: yesbalancer:Currently enabled: yesCurrently running: noFailed balancer rounds in last 5 attempts: 0Migration Results for the last 24 hours: No recent migrationsdatabases:{ "_id" : "config", "primary" : "config", "partitioned" : true }config.system.sessionsshard key: { "_id" : 1 }unique: falsebalancing: truechunks:shard1 1{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard1 Timestamp(1, 0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。