MongoDB


#---------------------------------------------------------------------
# https://docs.mongodb.com/manual/tutorial/deploy-replica-set/
#---------------------------------------------------------------------
mkdir -pv repl/instance{1..3}

mongod  --bind_ip 0.0.0.0 --port 27017 --dbpath repl/instance1 --replSet rs
mongod  --bind_ip 0.0.0.0 --port 27018 --dbpath repl/instance2 --replSet rs
mongod  --bind_ip 0.0.0.0 --port 27019 --dbpath repl/instance3 --replSet rs

mongosh --port 27017

let config={
   _id : "rs",
   members: [
      { _id: 0, host: "bemoan:27017" },
      { _id: 1, host: "bemoan:27018" },
      { _id: 2, host: "bemoan:27019" }
   ]
}

rs.initiate(config)
rs.conf()
rs.status()

use rty
show tables
for(let i=0;i<100;++i){
  db.user.insertOne({_id:i,name:'rty_'+i,age:10+i})
}

db.user.find().skip(10).limit(5)
db.user.countDocuments()
db.user.deleteMany({})
db.user.insertOne({name:'rty'})


mongosh --port 27018 (secondary)
# https://docs.mongodb.com/manual/reference/method/Mongo.setReadPref/
db.getMongo().setReadPref('primaryPreferred')

# /etc/mongod.conf
replication:
   replSetName: "rs0"
net:
   bindIp: localhost,
#---------------------------------------------------------------------
# mongod
#---------------------------------------------------------------------
mongod --bind_ip localhost,My-Example-Associated-Hostname --config /etc/mongod.conf


#---------------------------------------------------------------------
# Sharding
#---------------------------------------------------------------------
mkdir -pv shard/{primary,secondary,config}{1..3}

mongod --dbpath shard/primary1 --bind_ip 0.0.0.0 --shardsvr --replSet rs1 --port 27017
mongod --dbpath shard/secondary1 --bind_ip 0.0.0.0 --shardsvr --replSet rs1 --port 27027
let config={
  _id: 'rs1',
  members: [
    {_id:0, host: 'bemoan:27017'},
    {_id:1, host: 'bemoan:27027'}
  ]
}

mongod --dbpath shard/primary2 --bind_ip 0.0.0.0 --shardsvr --replSet rs2 --port 27018
mongod --dbpath shard/secondary2 --bind_ip 0.0.0.0 --shardsvr --replSet rs2 --port 27028
let config={
  _id: 'rs2',
  members: [
    {_id:0, host: 'bemoan:27018'},
    {_id:1, host: 'bemoan:27028'}
  ]
}

mongod --dbpath shard/primary3 --bind_ip 0.0.0.0 --shardsvr --replSet rs3 --port 27019
mongod --dbpath shard/secondary3 --bind_ip 0.0.0.0 --shardsvr --replSet rs3 --port 27029
let config={
  _id: 'rs3',
  members: [
    {_id:0, host: 'bemoan:27019'},
    {_id:1, host: 'bemoan:27029'}
  ]
}

mongod --dbpath shard/config1 --bind_ip 0.0.0.0 --configsvr --replSet configsvr --port 27010
mongod --dbpath shard/config2 --bind_ip 0.0.0.0 --configsvr --replSet configsvr --port 27011
mongod --dbpath shard/config3 --bind_ip 0.0.0.0 --configsvr --replSet configsvr --port 27012
let config={
  _id: 'configsvr',
  configsvr: true,
  members: [
    {_id:0, host: 'bemoan:27010'},
    {_id:1, host: 'bemoan:27011'},
    {_id:2, host: 'bemoan:27012'}
  ]
}

mongos --port 27013 --configdb configsvr/bemoan:27010,bemoan:27011,bemoan:27012 --bind_ip 0.0.0.0

mongosh --port 27013

# 设置分片
sh.addShard( "rs1/bemoan:27017,bemoan:27027")
sh.addShard( "rs2/bemoan:27018,bemoan:27028")
sh.addShard( "rs3/bemoan:27019,bemoan:27029")

# 指定分片库
sh.enableSharding('vapour')

# Shard a Collection
sh.shardCollection(".", {  : "hashed" } )
sh.shardCollection('vapour.user',{_id:'hashed'})