天天看點

mongodb叢集

使用docker建立mongodb cluster步驟:

1.建立配置副本集

(1)建立副本集容器

docker run --name  mongo_cluster_config1  -p 27001:27019  -d mongo mongod --configsvr --replSet configCluster

docker run --name  mongo_cluster_config2  -p 27002:27019  -d mongo mongod --configsvr --replSet configCluster

docker run --name  mongo_cluster_config3  -p 27003:27019  -d mongo mongod --configsvr --replSet configCluster

(2)副本集初始化

登入其中一台容器:

docker exec -it config容器ID /bin/bash

登入後進入mongo:

mongo --port 27019   //注意端口号

在mongo指令行運作:

rs.initiate({

    _id:"configCluster",//副本集名

    configsvr:true,//配置

    members:[

        {_id:0,host:"192.168.99.100:27001"},

        {_id:1,host:"192.168.99.100:27002"},

        {_id:2,host:"192.168.99.100:27003"}

    ]

})

2.建立分片1

docker run --name  mongo_cluster_shard1  -p 27011:27018  -d mongo mongod --shardsvr --replSet shard1Cluster

docker run --name  mongo_cluster_shard2  -p 27021:27018  -d mongo mongod --shardsvr --replSet shard1Cluster

docker run --name  mongo_cluster_shard3  -p 27031:27018  -d mongo mongod --shardsvr --replSet shard1Cluster

mongo --port 27018   //注意端口号

    _id:"shard1Cluster",

        {_id:0,host:"192.168.99.100:27011"},

        {_id:1,host:"192.168.99.100:27021"},

        {_id:2,host:"192.168.99.100:27031"}

3.建立分片2

docker run --name  mongo_cluster_shard4  -p 27041:27018  -d mongo mongod --shardsvr --replSet shard2Cluster

docker run --name  mongo_cluster_shard5  -p 27051:27018  -d mongo mongod --shardsvr --replSet shard2Cluster

docker run --name  mongo_cluster_shard6  -p 27061:27018  -d mongo mongod --shardsvr --replSet shard2Cluster

    _id:"shard2Cluster",

        {_id:0,host:"192.168.99.100:27041"},

        {_id:1,host:"192.168.99.100:27051"},

        {_id:2,host:"192.168.99.100:27061"}

注:rs.status()可檢視狀态

4.建立路由

(1)建立容器

docker run --name  mongo_cluster_router1  -p 27101:27017  -d mongo mongos --configdb configCluster/192.168.99.100:27001,192.168.99.100:27002,192.168.99.100:27003

(2)初始化

use admin //僅admin資料庫下能執行以下指令

//添加分片

sh.addShard("shard1Cluster/192.168.99.100:27011,192.168.99.100:27021,192.168.99.100:27031")

sh.addShard("shard2Cluster/192.168.99.100:27041,192.168.99.100:27051,192.168.99.100:27061")

//開啟資料庫的sharding

db.runCommand({enablesharding:"資料庫名"});