摘要: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()