第7.1.4 mongodb4.x增加分片

使用过elasticsearch的人应该都知道,es的动态分片很强大,看看下图,数据、备份节点管理由es自己完成
1
我在第7.1.1Spring操作mongodb之mongodb4.x集群搭建中参考了MongoDB4.0.2分片+副本集集群搭建,莫非mongodb的分片必须手工指定吗?
先看看10分钟完成MongoDB的容量规划及硬件配置
按照一主、一从、一仲裁的模式,每次新增节点岂不是3的倍数?
我们不需要再创建config server了,于是新增的节点中创建下面的目录,其中mongos.conf内容不用改变

mkdir -p /application/data/mongodb/mongos/log
mkdir -p /application/data/mongodb/shard4/data
mkdir -p /application/data/mongodb/shard4/log
mkdir -p /application/data/mongodb/shard5/data
mkdir -p /application/data/mongodb/shard5/log
mkdir -p /application/data/mongodb/shard6/data
mkdir -p /application/data/mongodb/shard6/log
# shared4.conf
systemLog:
  destination: file
  logAppend: true
  path: /application/data/mongodb/shard4/log/shared4.log
 
# Where and how to store data.
storage:
  dbPath: /application/data/mongodb/shard4/data
  journal:
    enabled: true

# how the process runs
processManagement:
  fork: true
  pidFilePath: /application/data/mongodb/shard4/log/shard4.pid
 
# network interfaces
net:
  port: 27004
  bindIp: 0.0.0.0
 
#operationProfiling:
replication:
    replSetName: shard4     

sharding:
    clusterRole: shardsvr
systemLog:
  destination: file
  logAppend: true
  path: /application/data/mongodb/shard5/log/shared5.log
 
# Where and how to store data.
storage:
  dbPath: /application/data/mongodb/shard5/data
  journal:
    enabled: true

# how the process runs
processManagement:
  fork: true
  pidFilePath: /application/data/mongodb/shard5/log/shard5.pid
 
# network interfaces
net:
  port: 27005
  bindIp: 0.0.0.0
 
#operationProfiling:
replication:
    replSetName: shard5     

sharding:
    clusterRole: shardsvr
systemLog:
  destination: file
  logAppend: true
  path: /application/data/mongodb/shard6/log/shared6.log
 
# Where and how to store data.
storage:
  dbPath: /application/data/mongodb/shard6/data
  journal:
    enabled: true

# how the process runs
processManagement:
  fork: true
  pidFilePath: /application/data/mongodb/shard1/log/shard6.pid
 
# network interfaces
net:
  port: 27006
  bindIp: 0.0.0.0
 
#operationProfiling:
replication:
    replSetName: shard6     

sharding:
    clusterRole: shardsvr

执行下面的命令,启动shard

mongod -f /application/data/mongodb/config/shard4.conf
mongod -f /application/data/mongodb/config/shard5.conf
mongod -f /application/data/mongodb/config/shard6.conf

再对分片进行配置

mongo --port 27004

config = {
    _id : "shard4",
     members : [
         {_id : 0, host : "bwhs163:27004", priority : 2 },
         {_id : 1, host : "bwhs164:27004" , arbiterOnly :true},
         {_id : 2, host : "bwhs165:27004", priority : 1 }
     ]
}
rs.initiate(config)


mongo --port 27005

config = {
    _id : "shard5",
     members : [
         {_id : 0, host : "bwhs163:27005", priority : 1 },
         {_id : 1, host : "bwhs164:27005" , priority :2},
         {_id : 2, host : "bwhs165:27005", arbiterOnly :true }
     ]
}
rs.initiate(config)

mongo --port 27006
config = {
    _id : "shard6",
     members : [
         {_id : 0, host : "bwhs163:27006", arbiterOnly :true },
         {_id : 1, host : "bwhs164:27006" , priority :2},
         {_id : 2, host : "bwhs165:27006", priority : 2 }
     ]
}
rs.initiate(config)

执行命令mongos -f /application/data/mongodb/config/mongos.conf,接着添加分片就可以了

mongo --port 20000
use admin
sh.addShard("shard4/bwhs163:27004,bwhs164:27004,bwhs164:27004")
sh.addShard("shard5/bwhs163:27005,bwhs164:27005,bwhs164:27005")
sh.addShard("shard6/bwhs163:27006,bwhs164:27006,bwhs164:27006")

执行db.stats()就可以看到对应的数据库在哪个分片了。
1

发布了317 篇原创文章 · 获赞 168 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/warrah/article/details/89308150