MongoDB学习笔记(十二):集群-副本集+分片模式

既要有副本集的热备功能,又要充分利用多台服务器性能 
 



 
 


01. 详细配置步骤如下:
02. 1、配置shard1用到复制集 s1:
03.   在serverA上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_1/db --logpath=/data/mongo/s1_1/log/mongo.log --logappend --fork
04.   在serverB上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_2/db --logpath=/data/mongo/s1_2/log/mongo.log --logappend --fork
05.   在serverC上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_3/db --logpath=/data/mongo/s1_3/log/mongo.log --logappend --fork
06.   连接三个节点的任一个初始化复制集s1 
07.   >use admin
08.   >config = {_id:'s1',members:[{_id:0,host:'serverA:27020',priority:1},{_id:1,host:'serverB:27020'},{_id:2,host:'serverC:27020'}]}
09.   >rs.initiate(config)
10.   >rs.status()
11.   另外对复制集s1的所有节点都执行如下命令确保所有节点都能分担读取的压力
12.   >db.getMongo().setSlaveOk();
13. 2、配置shard2用到复制集 s2:
14.   在serverA上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_1/db --logpath=/data/mongo/s2_1/log/mongo.log --logappend --fork
15.   在serverB上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_2/db --logpath=/data/mongo/s2_2/log/mongo.log --logappend --fork
16.   在serverC上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_3/db --logpath=/data/mongo/s2_3/log/mongo.log --logappend --fork 
17.   连接三个节点的任一个初始化复制集s2 
18.   >use admin
19.   >config = {_id:'s2',members:[{_id:0,host:'serverA:27021'},{_id:1,host:'serverB:27021',priority:1},{_id:2,host:'serverC:27021'}]}
20.   >rs.initiate(config)
21.   >rs.status()
22.   另外对复制集s2的所有节点都执行如下命令确保所有节点都能分担读取的压力
23.   >db.getMongo().setSlaveOk();
24. 3、配置三台Config Server:
25.   在serverA上:mongod  -fork --configsvr --dbpath /data/mongo/config/db --port 27018 --logpath /data/mongo/config/log/mongo.log --fork
26.   在serverB上:mongod  -fork --configsvr --dbpath /data/mongo/config/db --port 27018 --logpath /data/mongo/config/log/mongo.log --fork
27.   在serverC上:mongod  -fork --configsvr --dbpath /data/mongo/config/db --port 27018 --logpath /data/mongo/config/log/mongo.log --fork
28. 4、配置三台Route Server:
29.   在serverA上:mongos -fork --logpath /data/mongo/route/log/mongo.log --configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017
30.   在serverB上:mongos -fork --logpath /data/mongo/route/log/mongo.log --configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017
31.   在serverC上:mongos -fork --logpath /data/mongo/route/log/mongo.log --configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017
32. 5、配置Shard Cluster:
33.   连接任一mongos进程执行以下命令:
34.   use admin
35.   sh.addShard("shard1/serverA:27020,serverB:27020,serverC:27020")
36.   sh.addShard("shard2/serverA:27021,serverB:27021,serverC:27021")
37.   db.printShardingStatus()
38. 6、激活数据库及集合的分片功能:
39.   连接任一mongos进程执行以下命令:
40.   db.runCommand({enablesharding:"testdb"})
41.   db.runCommand({shardcollection:"testdb.collection_test",key:{_id:1}})
42. 7、登录mongos添加用户:
43. use admin
44. db.addUser("<user>","<password>")
45.   db.addUser("<user>","<password>",true) //添加只读用户
46. 8、关闭三台机器的全部mongod,mongos:
47.   sudo killall mongod
48.   sudo killall mongos
49. 9、生成keyfile:(每个进程的key file都保持一致)
50.   openssl rand -base64 753 >keyfile
51.   将生成的keyfile 拷贝到mongod/mongos 进程对应的文件夹
52.   并执行语句更改权限:sudo chmod 600 keyfile
53.   使用--keyFile参数指定前面生成的keyfile文件,重启三台机器全部mongod,mongos进程 
54.   在serverA上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_1/db --logpath=/data/mongo/s1_1/log/mongo.log --logappend --fork --keyFile  /data/mongo/s1_1/keyfile
55.   在serverB上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_2/db --logpath=/data/mongo/s1_2/log/mongo.log --logappend --fork --keyFile  /data/mongo/s1_2/keyfile
56.   在serverC上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_3/db --logpath=/data/mongo/s1_3/log/mongo.log --logappend --fork --keyFile  /data/mongo/s1_3/keyfile
57.   
58.   在serverA上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_1/db --logpath=/data/mongo/s2_1/log/mongo.log --logappend --fork --keyFile  /data/mongo/s2_1/keyfile
59.   在serverB上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_2/db --logpath=/data/mongo/s2_2/log/mongo.log --logappend --fork --keyFile  /data/mongo/s2_2/keyfile
60.   在serverC上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_3/db --logpath=/data/mongo/s2_3/log/mongo.log --logappend --fork --keyFile  /data/mongo/s2_3/keyfile
61.   
62.   在serverA上:mongod  -fork --configsvr --dbpath /data/mongo/config/db --port 27018 --logpath /data/mongo/config/log/mongo.log --fork --keyFile  /data/mongo/config/keyfile
63.   在serverB上:mongod  -fork --configsvr --dbpath /data/mongo/config/db --port 27018 --logpath /data/mongo/config/log/mongo.log --fork --keyFile  /data/mongo/config/keyfile
64.   在serverC上:mongod  -fork --configsvr --dbpath /data/mongo/config/db --port 27018 --logpath /data/mongo/config/log/mongo.log --fork --keyFile  /data/mongo/config/keyfile
65.  
66.   在serverA上:mongos -fork --logpath /data/mongo/route/log/mongo.log --configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017 --keyFile  /data/mongo/route/keyfile
67.   在serverB上:mongos -fork --logpath /data/mongo/route/log/mongo.log --configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017 --keyFile  /data/mongo/route/keyfile
68.   在serverC上:mongos -fork --logpath /data/mongo/route/log/mongo.log --configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017 --keyFile  /data/mongo/route/keyfile
69.   完毕!

猜你喜欢

转载自jorwen-fang.iteye.com/blog/2031756