#---------------------------------------------------------------------
# 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'})