docker 搭建mongodb 分片集群 ---- 单机版

根据自己配置 随意搭配

这是 三个config server 一个分片 副本集 一个mongos

version: '3'
services:
  csrs1:
    image: mongo:latest
    container_name: csrs1
    command: mongod --noauth --configsvr --replSet csrs --dbpath /data/db
  csrs2:
    image: mongo:latest
    container_name: csrs2
    command: mongod --noauth --configsvr --replSet csrs --dbpath /data/db
  csrs3:
    image: mongo:latest
    container_name: csrs3
    command: mongod --noauth --configsvr --replSet csrs --dbpath /data/db
  mongos:
    image: mongo:latest
    container_name: mongos1
    command: mongos --noauth --configdb csrs/csrs1:27019,csrs2:27019,csrs3:27019
  shrs1:
    image: mongo:latest
    command: mongod --noauth --dbpath /data/db --shardsvr --replSet shrs
  shrs2:
    image: mongo:latest
    command: mongod --noauth --dbpath /data/db --shardsvr --replSet shrs
  shrs3:
    image: mongo:latest
    command: mongod --noauth --dbpath /data/db --shardsvr --replSet shrs

直接 docker-compose up -d

配置 config server 副本集

然后 进入 任意一个 config server中 ,例如 进入 csrs1
docker exec -it csrs1 bash

然后连接到 mongo --port 27019
然后进行配置

config = {_id:"csrs",configsvr:true,members:[{_id:0,host:"csrs1:27019"},{_id:1,host:"csrs2:27019"},{_id:2,host:"csrs3:27019"}]}
rs.initiate(config)
rs.status() #应该当前节点  会变成  主节点

配置 shard 分片 副本集

# 进入 mongo
docker exec -it shrs1 bash
#然后 连接
mongo --port 27018
config = { _id:"shrsd", members:[
                     {_id:0,host:"shrs1:27018"},
                     {_id:1,host:"shrs2:27018"},
                     {_id:2,host:"shrs3:27018"}
                ]
         }
rs.initiate(config)
rs.status() # 不出意外 此节点就会成为主节点 
#########如果 你是用了 另一种方式 进行添加 可能 出现下面mongos无法 添加成功
rs.initirte()
rs.add("shrs2:27018)
rs.add("shrs3:27018)
rs.status() 
# 这样做 可以添加成功  但是下面mongos 无法成功  添加  

然后 配置 mongos

# 进入mongos 
docker exec -it mongos1 mongo 
# 然后
use admin
sh.addShard("shrs/shrs1:27018,shrs2:27018,shrs3:27018)
# 应该 就添加上了  
# 然后 试试分片
# 设置数据库 分片
db.runCommand( { enablesharding :"testdb"});
# 设置 表 以什么字段 进行分片  我这里是以  id hashed 散列分布 用其他的 可能出现数据太小 无法分布 但是 我们这只有一个 也不存在什么分布 不分布
sh.shardCollection("testdb.table1", { id: "hashed" } )

use testdb
for (var i = 1; i <= 100000; i++){db.table1.save({_id:i,"test1":"testval1"})}

#不出意外 就可以看见 数据插入了 如果只有一个分片副本集 跟普通副本集差不多  所以 我们现在 再加一个 分片

后面在写吧  脑子里 太多 太乱了 

你可能感兴趣的:(docker 搭建mongodb 分片集群 ---- 单机版)