MongoDB Sharding + ReplSet 筆記

摘要:Mongo Sharding + ReplSet 筆記

最近在做Sharding +ReplSet,而找到了

http://www.slideshare.net/rogerxia/mongo-db-8743986

這個簡報,滿不錯的。

順便記一下筆記

 

1.創建數據文件儲存路徑
mkdir -p /data/data/r0
 
2.創建日誌文件路徑
mkdir -p /data/log
 
3.創建主叢key文件,用於標識集群的私鑰的完整路徑,如果各個實例的key file內容不一致,程序將不能正常用。
mkdir -p /data/key
echo "this is rs1 super secret key" > /data/key/r0
chmod 600 /data/key/r*
 
4.啟動三個實例
mongod --replSet rs1 --keyFile /data/key/r0 --fork --port 28010 --dbpath /data/data/r0 --logpath=/data/log/r0.log --logappend
 
5.配置及初始化Replica Sets
mongo -port 28010
config_rs1={_id:'rs1',members:[
{_id:0,host:'localhost:28010',priority:1},
{_id:1,host:'localhost:28011'},
{_id:2,host:'localhost:28012'}]
}
 
priority=1指PRIMARY
 
 
初始化配置
rs.initiate(config_rs1)
 
查看複制集狀態
rs.status()
 
 
rs.isMaster();
 
 
db.oplog.rs.find();
 
db.printReplicationInfo();
 
db.printSlaveReplicationInfo();
 
db.system.replset.find();
 
db.getMongo().setSlaveOk();
 
增加節點
 
rs.add("localhost:28013")
rs.status();
 
減少節點
rs.remove("localhost:28014")
 
 
啟動Shard Server
mkdir -p /data/shard/s0
mongod --shardsvr --port 20000 -dbpath /data/shard/s0 --fork --logpath /data/shard/log/s0.log --directoryperdb
 
啟動Config Server
mkdir -p /data/shard/config 
mongod --configsvr --port 30000 --dbpath /data/shard/config --fork --logpath /data/shard/log/config.log --directoryperdb
 
啟動Route Process
mongos --port 40000 --configdb localhost:30000 --fork --logpath /data/shard/log/route.log --chunkSize 1
 
配置Sharding 
db.runCommand({addshard:"localhost:20000"})
db.runCommand({enablesharding:"test"})
db.runCommand({shardcollection:"test.users",key:{_id:1}})
 
驗證sharding正常工作
db.users.status();
 
查看Sharding 信息
printShardingStatus()
 
判斷是否是Sharding 
db.runCommand({isdbgrid:1})
 
 
對現有的表進行Sharding
db.users_2.stats()
sharded:false
 
use admin;
db.runCommand({shardcollection:"test.users_2',key:{_id:1}})
 
新增Shard Server 
db.runCommand({addshard:"localhost:20002"})
 
移除Shard Server 
db.runcommand({"removeshard":"localhost:20002"});
 
Replica Sets + Sharding 
 
Shard :
使用Replica Sets , 確保每個數據節點都具備份,自動容錯轉移,自動恢復能力。
 
Config:
使用3個配置服務器,確保元數據完整性
 
Route:
使用3個路由進程,實現負載平衡,提高客戶端接入性能
 
驗證Sharding 正常工作
use test
for(var i=1;i<200000;i++)db.users.insert({id:i,addr_1:"Beijing",addr_2:"Shanghai"});
db.users.status()