mongodb单机做分片(使用不同的端口号)

发布时间 2023-11-09 09:43:42作者: slnngk

环境:
OS:Centos 7
mongodb:4.4.22
部署情况如下:

192.168.1.109:27001 s1分片(单节点的副本集)

192.168.1.109:28001 s2分片(单节点的副本集)
192.168.1.109:29001 s3分片(单节点的副本集)
192.168.1.109:30001 配置服务器(单节点副本集)
192.168.1.109:40001 路由服务器

 

####################部署s1副本集分片服务器######################
1.下载相应的版本
https://www.mongodb.com/download-center/community
我这里下载的是mongodb-linux-x86_64-rhel70-4.4.22.tgz

2.创建目录
[root@test services]# mkdir -p /usr/local/services
[root@test services]# mkdir -p /home/middle/mongodb_s1/data
[root@test services]# mkdir -p /home/middle/mongodb_s1/log
[root@test services]# mkdir -p /home/middle/mongodb_s1/key
[root@test services]# mkdir -p /home/middle/mongodb_s1/conf
[root@test services]# mkdir -p /home/middle/mongodb_s1/run

 

3.安装
[root@test soft]# tar -xvf mongodb-linux-x86_64-rhel70-4.4.22.tgz
[root@test soft]# mv mongodb-linux-x86_64-rhel70-4.4.22 /usr/local/services/mongodb_s1

 

4.产生秘钥验证(先不做)
[root@test key]# cd /home/middle/mongodb_s1/key
[root@test key]# openssl rand -base64 741 >>keyfile
[root@test key]# chmod 700 keyfile

这里每个副本集s1,s2,s3可以共用一个keyfile
[root@localhost key]# cp /home/middle/mongodb_s1/key/keyfile /home/middle/mongodb_s2/key/
[root@localhost key]# cp /home/middle/mongodb_s1/key/keyfile /home/middle/mongodb_s3/key/


5.生成日志文件(配置文件中指定了,提前创建)
每个s1分片服务器上都执行
[root@test key]#echo>/home/middle/mongodb_s1/log/mongodb.log

6.创建配置文件 mongo.cnf
每个s1分片服务器上都执行,需要修改相应的ip和端口

vi /home/middle/mongodb_s1/conf/mongo.cnf

port=27001
fork=true
dbpath=/home/middle/mongodb_s1/data
logpath=/home/middle/mongodb_s1/log/mongodb.log
pidfilepath=/home/middle/mongodb_s1/run/27001.pid
bind_ip=192.168.1.109,127.0.0.1
logappend=true
shardsvr=true
replSet=s1
oplogSize=16384
logRotate=reopen
##keyFile=/home/middle/mongodb_s1/key/keyfile
##auth=true

 

7.启动s1的
/usr/local/services/mongodb_s1/bin/mongod -f /home/middle/mongodb_s1/conf/mongo.cnf

 

8.初始化s1
在s1副本集的其中一台机器上执行即可
[root@localhost bin]# /usr/local/services/mongodb_s1/bin/mongo 192.168.1.109:27001
use admin
config={_id:'s1',members:[{_id:0,host:'192.168.1.109:27001'}]}
rs.initiate(config)

9.查看副本集s1集群状态


rs.status()
rs.conf()

另外s2,s3副本集也安装上面的步骤进行操作,将s1替换成s2,s3,同时注意ip和端口的修改.
登录查看集群情况
/usr/local/services/mongodb_s2/bin/mongo 192.168.1.109:28001
/usr/local/services/mongodb_s3/bin/mongo 192.168.1.109:29001

 

####################部署配置服务器######################
1.创建如下目录
[root@test services]# mkdir -p /usr/local/services
[root@test services]# mkdir -p /home/middle/mongo_config/data
[root@test services]# mkdir -p /home/middle/mongo_config/log
[root@test services]# mkdir -p /home/middle/mongo_config/key
[root@test services]# mkdir -p /home/middle/mongo_config/conf
[root@test services]# mkdir -p /home/middle/mongo_config/run

2.解压安装
每个副本集服务器上都执行
[root@test soft]# tar -xvf mongodb-linux-x86_64-rhel70-4.4.22.tgz
[root@test soft]# mv mongodb-linux-x86_64-rhel70-4.4.22 /usr/local/services/mongo_config

3.生成日志文件
[root@localhost soft]#echo>/home/middle/mongo_config/log/mongodb.log


4.产生秘钥验证(先不做)
[root@test key]# cd /home/middle/mongo_config/key
[root@test key]# openssl rand -base64 741 >>keyfile
[root@test key]# chmod 700 keyfile

可以使用与其他副本集同样的keyfile
[root@localhost key]# cp /home/middle/mongodb_s1/key/keyfile /home/middle/mongo_config/key/

 

5.创建配置文件
在conf目录下创建配置文件

vi /home/middle/mongo_config/conf/mongo.cnf
[root@localhost conf]# more mongo.cnf
port=30001
fork=true
dbpath=/home/middle/mongo_config/data
logpath=/home/middle/mongo_config/log/mongodb.log
pidfilepath=/home/middle/mongo_config/run/30001.pid
bind_ip=192.168.1.109,127.0.0.1
logappend=true
oplogSize=16384
logRotate=reopen
configsvr=true
replSet=configrs

 

6.启动
每个副本集服务器上都执行
/usr/local/services/mongo_config/bin/mongod -f /home/middle/mongo_config/conf/mongo.cnf


7.初始化副本集
在副本集的其中一台机器上执行即可
[root@localhost bin]# /usr/local/services/mongo_config/bin/mongo 192.168.1.109:30001
use admin
config={_id:'configrs',members:[{_id:0,host:'192.168.1.109:30001'}]}
rs.initiate(config)


8.查看副本集状态
rs.status()
rs.conf()

 

####################部署路由服务器######################
1.创建如下目录
[root@test services]# mkdir -p /usr/local/services
[root@test services]# mkdir -p /home/middle/mongo_router/data
[root@test services]# mkdir -p /home/middle/mongo_router/log
[root@test services]# mkdir -p /home/middle/mongo_router/key
[root@test services]# mkdir -p /home/middle/mongo_router/conf
[root@test services]# mkdir -p /home/middle/mongo_router/run

 

2.解压安装
[root@test soft]# tar -xvf mongodb-linux-x86_64-rhel70-4.4.22.tgz
[root@test soft]# mv mongodb-linux-x86_64-rhel70-4.4.22 /usr/local/services/mongo_router

 

3.生成日志文件
[root@localhost soft]#echo>/home/middle/mongo_router/log/mongodb.log


4.产生秘钥验证(先不做)
[root@test key]# cd /home/middle/mongo_router/key
[root@test key]# openssl rand -base64 741 >>keyfile
[root@test key]# chmod 700 keyfile

可以使用与其他副本集同样的keyfile
[root@localhost key]# cp /home/middle/mongodb_s1/key/keyfile /home/middle/mongo_router/key/

 

5.创建配置文件
在conf目录下创建配置文件,mongo.cnf

vi /home/middle/mongo_router/conf/mongo.cnf
[root@localhost conf]# more mongo.cnf
port=40001
fork=true
logpath=/home/middle/mongo_router/log/mongodb.log
pidfilepath=/home/middle/mongo_router/run/40001.pid
configdb=configrs/192.168.1.109:30001
bind_ip=192.168.1.109,127.0.0.1

 

6.启动
/usr/local/services/mongo_router/bin/mongos -f /home/middle/mongo_router/conf/mongo.cnf

注意这里是使用mongos命令启动,而不是mongod

 

7.登录查看
/usr/local/services/mongo_router/bin/mongo 192.168.1.109:40001
mongos> show dbs
admin 0.000GB
config 0.000GB

 

################配置分片服务器#############################
在路由服务器上进行登录
1.配置分片服务器
目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。
登录路由服务器(192.168.1.109:40001)
[root@pxc01 bin]# /usr/local/services/mongo_router/bin/mongo 192.168.1.109:40001
mongos> use admin
switched to db admin

sh.addShard("s1/192.168.1.109:27001")
sh.addShard("s2/192.168.1.109:28001")
sh.addShard("s3/192.168.1.109:29001")

sh.status()

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
        "_id" : 1,
        "minCompatibleVersion" : 5,
        "currentVersion" : 6,
        "clusterId" : ObjectId("654b21aa04789a98cfffd524")
  }
  shards:
        {  "_id" : "s1",  "host" : "s1/192.168.1.109:27001",  "state" : 1 }
        {  "_id" : "s2",  "host" : "s2/192.168.1.109:28001",  "state" : 1 }
        {  "_id" : "s3",  "host" : "s3/192.168.1.109:29001",  "state" : 1 }
  active mongoses:
        "4.4.22" : 1
  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 }
mongos> 

mongos> db.shards.find()
{ "_id" : "s1", "host" : "s1/192.168.1.109:27001", "state" : 1 }
{ "_id" : "s2", "host" : "s2/192.168.1.109:28001", "state" : 1 }
{ "_id" : "s3", "host" : "s3/192.168.1.109:29001", "state" : 1 }

 

######################提前创建库和表##################################
mongos> use admin
mongos> db.runCommand({enablesharding:"db_pushmsg" })
mongos> db.runCommand({"shardcollection":"db_pushmsg.app_message_all","key":{"_id":"hashed"}})