Giter Club home page Giter Club logo

docker-mongo's Introduction

Mongo Sharded Cluster with Docker Compose

Mongo Components

  • Config Server (3 member replica set): cfgsvr1, cfgsvr2, cfgsvr3
  • 3 Shards (each a 3 member replica set):
    • shard1svr1, shard1svr2, shard1svr3
    • shard2svr1, shard2svr2, shard2svr3
    • shard3svr1, shard3svr2, shard3svr3
  • Router (mongos): router

Setup

  • Cloud Server 1 docker-compose -f docker-compose1.yml -d

  • Cloud Server 2 docker-compose -f docker-compose2.yml -d

  • Cloud Server 3 docker-compose -f docker-compose3.yml -d

  • Cloud Router (Application Cloud) docker-compose -f docker-router.yml -d

Configuration

  • Config Server
docker exec -it cfgsvr1
mongo < /scripts/init-configserver.js
  • Shard1
docker exec -it shard1svr1
mongo < /scripts/init-shard1.js
  • Shard2
docker exec -it shard2svr1
mongo < /scripts/init-shard2.js
  • Shard3
docker exec -it shard3svr1
mongo < /scripts/init-shard3.js
  • Router
docker exec -it router
mongo < /scripts/init-router.js

Sharding a Mongo Collection

docker exec -it router
mongo
  • Check status
router> sh.status()

Enable Sharding of Database

sh.enableSharding("dbName")

Shard Empty Collection Data

sh.shardCollection( "dbName.myCollections", {"field": 1, ...} )
sh.shardCollection( "dbName.myCollections", {"field": "hashed", ...} )

Ex:

sh.shardCollection( "dbName.users", { _id: "hashed" } )
sh.shardCollection( "dbName.invoices", { tranType: "hashed", tranDate: "hashed" } )

Shard Exist Collection Data

  • Create Collection Index
db.myCollections.createIndex({"field": "hashed"})
  • Sharding Collection
sh.shardCollection( "dbName.myCollections", {"field": "hashed"} )

Check Collection Sharding

db.myCollections.getShardDistribution()

References

docker-mongo's People

Contributors

thearabbit avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

ongbona

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.