MongoDB 学习笔记之 分片和副本集混合运用

Posted AK47Sonic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 学习笔记之 分片和副本集混合运用相关的知识,希望对你有一定的参考价值。

 分片和副本集混合运用:

 

基本架构图:

搭建详细配置:

3个shard + 3个replicat set + 3个configserver + 3个Mongos

shardrsname

Primary

Secondary

Secondary

port

bigdata-sh-a

bigdata-sh-a1

bigdata-sh-a2

bigdata-sh-a3

28111

bigdata-sh-b

bigdata-sh-b2

bigdata-sh-b1

bigdata-sh-b3

28112

bigdata-sh-c

bigdata-sh-c3

bigdata-sh-c2

bigdata-sh-c1

28113

bigdata-cs

configserver1

configserver2

configserver3

28200

 

 在三台Linux机器的mongo根目录下建立如下文件夹:

Log:

/usr/local/mongodb/logs/a1

/usr/local/mongodb/logs/b1

/usr/local/mongodb/logs/c1

/usr/local/mongodb/logs/configserver1

 

DB:

/usr/local/mongodb/db/a1

/usr/local/mongodb/db/b1

/usr/local/mongodb/db/c1

/usr/local/mongodb/db/configserver1

 

bigdata-sh-a1.conf:

# mongod config

systemLog:
  destination: file
  logAppend: true
  path: /usr/local/mongodb/logs/a1/mongodb.log


# Where and how to store data.
storage:
  dbPath: /usr/local/mongodb/db/a1
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
# fork : fork and run in background
# pidFilePath:location of pidfile 
processManagement:
  fork: true
  pidFilePath: /usr/local/mongodb/pidFile/mongod-a1.pid

# network interfaces
# Listen to local interface only, comment to listen on all interfaces.
net:
  port: 28111
  bindIp: 0.0.0.0

#security:  enabled  disabled
#security:
#  keyFile: /mongodb/keyfile
#  clusterAuthMode: keyFile

#operationProfiling:
operationProfiling:
   slowOpThresholdMs: 1000
   mode: slowOp

#replication:

replication:
  replSetName: bigdata-sh-a

#sharding:

sharding:
  clusterRole: shardsvr

## Enterprise-Only Options

#auditLog:

#snmp:

 

 bigdata-sh-configserver1.conf:

 

# mongod config

systemLog:
  destination: file
  logAppend: true
  path: /usr/local/mongodb/logs/configserver1/mongodb.log


# Where and how to store data.
storage:
  dbPath: /usr/local/mongodb/db/configserver1
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
# fork : fork and run in background
# pidFilePath:location of pidfile
processManagement:
  fork: true
  pidFilePath: /usr/local/mongodb/pidFile/mongod-configserver1.pid

# network interfaces
# Listen to local interface only, comment to listen on all interfaces.
net:
  port: 28200
  bindIp: 0.0.0.0


#security:  enabled  disabled
#security:
#  keyFile: /mongodb/keyfile
#  clusterAuthMode: keyFile

#operationProfiling:
operationProfiling:
   slowOpThresholdMs: 1000
   mode: slowOp

#replication:

replication:
  replSetName: bigdata-cs

#sharding:

sharding:
  clusterRole: configsvr

## Enterprise-Only Options

#auditLog:

#snmp:

 

配置完成后,启动服务:

./mongod -f ../conf/bigdata-sh-a1.conf

./mongod -f ../conf/bigdata-sh-b1.conf

./mongod -f ../conf/bigdata-sh-c1.conf

./mongod -f ../conf/bigdata-sh-configserver1.conf

 

./mongod -f ../conf/bigdata-sh-a2.conf

./mongod -f ../conf/bigdata-sh-b2.conf

./mongod -f ../conf/bigdata-sh-c2.conf

./mongod -f ../conf/bigdata-sh-configserver2.conf

 

./mongod -f ../conf/bigdata-sh-a3.conf

./mongod -f ../conf/bigdata-sh-b3.conf

./mongod -f ../conf/bigdata-sh-c3.conf

./mongod -f ../conf/bigdata-sh-configserver3.conf

 

创建副本集:

./mongo hadoop1:28111/admin

use admin

rs.initiate()

 

rs.add("hadoop2:28111")

rs.add("hadoop3:28111")

 

./mongo hadoop2:28112/admin

rs.initiate()

rs.add("hadoop1:28112")

rs.add("hadoop3:28112")

 

./mongo hadoop3:28113/admin

rs.initiate()

rs.add("hadoop2:28113")

rs.add("hadoop1:28113")

 

./mongo hadoop1:28200/admin

rs.initiate()

rs.add("hadoop2:28200")

rs.add("hadoop3:28200")

 

在三台linux上启动Mongos:

./mongos --port 28300 --configdb bigdata-cs/hadoop1:28200,hadoop2:28200,hadoop3:28200 --fork --logpath /usr/local/mongodb/logs/mongos/mongos.log --bind_ip 0.0.0.0

 

连接其中一台Mongos,增加分片:

./mongo hadoop1:28300/admin

use admin

sh.addShard("bigdata-sh-a/hadoop1:28111,hadoop2:28111,hadoop3:28111")

sh.addShard("bigdata-sh-b/hadoop1:28112,hadoop2:28112,hadoop3:28112")

sh.addShard("bigdata-sh-c/hadoop1:28113,hadoop2:28113,hadoop3:28113")

 

sh.enableSharding("shop")

sh.shardCollection("shop.goods",{"goodid": 1});

 

插入大量数据进行验证:

for(var i=80002; i<=90001; i++){ db.goods.insert({goodid: i, name: "My first shard"}) }

 

大功告成!

以上是关于MongoDB 学习笔记之 分片和副本集混合运用的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB——MongoDB分片集群(Sharded Cluster)

mongodb带密码的副本集加入分片后怎么访问

Mongodb副本集和分片的概念

mongodb副本集和分片存储理论整理

搭建mongodb集群(副本集+分片)

搭建MongoDB副本集&分片