6.6MongoDB 复制集 & 分片
以下代码/命令可直接复制粘贴
第一关 MongoDB 架构
- ACD
- ABD
第二关 MongoDB 复制集搭建
port=20002 #配置端口号
dbpath=/data/test/db2 #配置数据存放的位置
logpath=/logs/test/mongod2.log #配置日志存放的位置
logappend=true #日志使用追加的方式
fork=true #设置在后台运行
replSet=YOURMONGO #配置复制集名称,该名称要在所有的服务器一致
port=20003 #配置端口号
dbpath=/data/test/db3 #配置数据存放的位置
logpath=/logs/test/mongod3.log #配置日志存放的位置
logappend=true #日志使用追加的方式
fork=true #设置在后台运行
replSet=YOURMONGO #配置复制集名称,该名称要在所有的服务器一致
mongod -f /etc/test/mongod1.conf
mongod -f /etc/test/mongod2.conf
mongod -f /etc/test/mongod3.conf
config = {
_id:"YOURMONGO",
members:[
{_id:0,host:'127.0.0.1:20001'},
{_id:1,host:'127.0.0.1:20002',arbiterOnly:true},
{_id:2,host:'127.0.0.1:20003'},
]
}
第三关 MongoDB 分片集搭建
mkdir -p /data/test2/shard1/db
mkdir -p /logs/test2/shard1/log
mkdir -p /data/test2/shard2/db
mkdir -p /logs/test2/shard2/log
mkdir -p /data/test2/shard3/db
mkdir -p /logs/test2/shard3/log
mkdir -p /data/test2/config/db
mkdir -p /logs/test2/config/log
mkdir -p /logs/test2/mongs/log
mkdir -p /etc/test2
vim /etc/test2/mongod1.conf
dbpath=/data/test2/shard1/db
logpath=/logs/test2/shard1/log/mongodb.log
port=21001
shardsvr=true
fork=true
vim /etc/test2/mongod2.conf
dbpath=/data/test2/shard2/db
logpath=/logs/test2/shard2/log/mongodb.log
port=21002
shardsvr=true
fork=true
vim /etc/test2/mongod3.conf
dbpath=/data/test2/shard3/db
logpath=/logs/test2/shard3/log/mongodb.log
port=21003
shardsvr=true
fork=true
mongod -f /etc/test2/mongod1.conf
mongod -f /etc/test2/mongod2.conf
mongod -f /etc/test2/mongod3.conf
mongod --dbpath /data/test2/config/db --logpath /logs/test2/config/log/mongodb.log --port 21004 --configsvr --replSet cs --fork
mongo localhost:21004
use admin
cfg = {
_id:'cs',
configsvr:true,
members:[
{_id:0,host:'localhost:21004'}
]
}
rs.initiate(cfg)
exit;
mongos --configdb cs/localhost:21004 --logpath /logs/test2/mongs/log/mongodb.log --port 21005 --fork
测试命令(可选操作)
mongo localhost:21005
sh.addShard('localhost:21001')
sh.addShard('localhost:21002')
sh.addShard('localhost:21003')
sh.status()
use config
db.settings.save( { _id:"chunksize", value: 1 } )
sh.enableSharding("test")
db.user.ensureIndex({ "uid" : 1})
sh.shardCollection("test.user",{"uid" : 1})
use test
for(i=0;i<100000;i++){db.user.insert({uid:i,username:'test-'+i})}
sh.status()
exit
mongo localhost:21001
use test
db.user.count()
exit
mongo localhost:21002
use test
db.user.count()
exit
mongo localhost:21003
use test
db.user.count()
exit