同一电脑上配置Mongodb集群

副本集的配置
1.启动
mongod --dbpath D:\DB\Mongodb\data\replset\r1\ 
 --logpath D:\DB\Mongodb\data\replset\r1\replset.log 
 --replSet test --logappend --port 10001
 
mongod --dbpath D:\DB\Mongodb\data\replset\r2\ 
 --logpath D:\DB\Mongodb\data\replset\r2\replset.log 
 --replSet test --logappend --port 10002
 
mongod --dbpath D:\DB\Mongodb\data\replset\r3\ 
 --logpath D:\DB\Mongodb\data\replset\r3\replset.log 
 --replSet test --logappend --port 10003
 
mongod --dbpath D:\DB\Mongodb\data\replset\r4\ 
 --logpath D:\DB\Mongodb\data\replset\r4\replset.log 
 --replSet test --logappend --port 10004


2. 配置
config_test = { _id:"test", 
members:[ {_id:0,host:"127.0.0.1:10001"}, 
 {_id:1,host:"127.0.0.1:10002"}, 
 {_id:2,host:"127.0.0.1:10003"}, 
 {_id:3,host:"127.0.0.1:10004", arbiterOnly:true}
]
 }
rs.initiate(config_test);
执行该命令后,需要等待一些时间(各有不同,根据机器配置)
如果后台配置为完成时连接进去mongo 127.0.0.1:10001, 状态可能是STARTUP2(主节点)
或者是RECOVERING(从节点和仲裁节点), 这个时候只需要等待即可,如果等待很久(超过1小时),
可以考虑重新启动主节点.
如果在从节点想读取数据, 需要在从节点执行db.getMongo().setSlaveOk();
停掉master, 会自动在该副本集中选取一台为主节点, 重新启动master节点,
又会恢复master身份

集群的配置
配置方案:
1、3个分片sharding
2、每一个分片由3个节点构成1主2备的Replica Sets
3、3个配置节点Configsever
4、1个路由节点Mongos
5、提前准备(提前规划和创建好数据文件目录以及日志文件,如果涉及到数据/日志迁移,最好提前想好如何设置)


1. 创建分片和复制集
分片1
mongod --dbpath D:\DB\Mongodb\data\cluster\set1\r1\ --logpath D:\DB\Mongodb\data\cluster\logs\set1\r1\r1.log --logappend --port 10001 --shardsvr --replSet set1 --rest --oplogSize 64
mongod --dbpath D:\DB\Mongodb\data\cluster\set1\r2\ --logpath D:\DB\Mongodb\data\cluster\logs\set1\r2\r2.log --logappend --port 10002 --shardsvr --replSet set1 --rest --oplogSize 64
mongod --dbpath D:\DB\Mongodb\data\cluster\set1\r3\ --logpath D:\DB\Mongodb\data\cluster\logs\set1\r3\r3.log --logappend --port 10003 --shardsvr --replSet set1 --rest --oplogSize 64
连接任意一台mongo 127.0.0.1:10001执行脚本
config = {"_id": "set1","members": [{"_id": 0,"host": "127.0.0.1:10001"},{"_id": 1,"host": "127.0.0.1:10002"},{"_id": 2,"host": "127.0.0.1:10003"}]}
rs.initiate(config);

分片2
mongod --dbpath D:\DB\Mongodb\data\cluster\set2\r1\ --logpath D:\DB\Mongodb\data\cluster\logs\set3\r1\r1.log --logappend --port 20001 --shardsvr --replSet set2 --rest --oplogSize 64
mongod --dbpath D:\DB\Mongodb\data\cluster\set2\r2\ --logpath D:\DB\Mongodb\data\cluster\logs\set3\r2\r2.log --logappend --port 20002 --shardsvr --replSet set2 --rest --oplogSize 64
mongod --dbpath D:\DB\Mongodb\data\cluster\set2\r3\ --logpath D:\DB\Mongodb\data\cluster\logs\set3\r3\r3.log --logappend --port 20003 --shardsvr --replSet set2 --rest --oplogSize 64
连接任意一台mongo 127.0.0.1:20001执行脚本
config = {"_id": "set2","members": [{"_id": 0,"host": "127.0.0.1:20001"},{"_id": 1,"host": "127.0.0.1:20002"},{"_id": 2,"host": "127.0.0.1:20003"}]}
rs.initiate(config);

分片3
mongod --dbpath D:\DB\Mongodb\data\cluster\set3\r1\ --logpath D:\DB\Mongodb\data\cluster\logs\set3\r1\r1.log --logappend --port 30001 --shardsvr --replSet set3 --rest --oplogSize 64
mongod --dbpath D:\DB\Mongodb\data\cluster\set3\r2\ --logpath D:\DB\Mongodb\data\cluster\logs\set3\r2\r2.log --logappend --port 30002 --shardsvr --replSet set3 --rest --oplogSize 64
mongod --dbpath D:\DB\Mongodb\data\cluster\set3\r3\ --logpath D:\DB\Mongodb\data\cluster\logs\set3\r3\r3.log --logappend --port 30003 --shardsvr --replSet set3 --rest --oplogSize 64
连接任意一台mongo 127.0.0.1:30001执行脚本
config = {"_id": "set3","members": [{"_id": 0,"host": "127.0.0.1:30001"},{"_id": 1,"host": "127.0.0.1:30002"},{"_id": 2,"host": "127.0.0.1:30003"}]}
rs.initiate(config);


2. 启动三个配置服务节点Configsvr
mongod --dbpath D:\DB\Mongodb\data\cluster\configsvr\r1\ --logpath D:\DB\Mongodb\data\cluster\logs\configsvr\r1\r1.log --logappend --port 40001 --configsvr --shardsvr

mongod --dbpath D:\DB\Mongodb\data\cluster\configsvr\r2\ --logpath D:\DB\Mongodb\data\cluster\logs\configsvr\r2\r2.log --logappend --port 40002 --configsvr --shardsvr

mongod --dbpath D:\DB\Mongodb\data\cluster\configsvr\r3\ --logpath D:\DB\Mongodb\data\cluster\logs\configsvr\r3\r3.log --logappend --port 40003 --configsvr --shardsvr

3. 启动一个路由节点mongos
mongos --configdb 127.0.0.1:40001,127.0.0.1:40002,127.0.0.1:40003 --logpath D:\DB\Mongodb\data\cluster\logs\mongos\mongos.log --logappend --port 50001

4. 配置分片
连接到该路由节点mongos mongo 127.0.0.1:50001
执行如下命令
db.runCommand({addshard:"set1/127.0.0.1:10001,127.0.0.1:10002,127.0.0.1:10003",name:"ShardSet1"})
db.runCommand({addshard:"set2/127.0.0.1:20001,127.0.0.1:20002,127.0.0.1:20003",name:"ShardSet2"})
db.runCommand({addshard:"set3/127.0.0.1:30001,127.0.0.1:30002,127.0.0.1:30003",name:"ShardSet3"})
配置结束
执行 printShardingStatus()可以查看配置结果
如果看到以下结果则表示配置成功
mongos> printShardingStatus();
--- Sharding Status ---
 sharding version: {
"_id" : 1,
"version" : 3,
"minCompatibleVersion" : 3,
"currentVersion" : 4,
"clusterId" : ObjectId("53070a99c802a74f3c3496f7")
}
 shards:
{  "_id" : "ShardSetA",  "host" : "setA/127.0.0.1:10001,127.0.0.1:10002,
127.0.0.1:10003" }
{  "_id" : "ShardSetB",  "host" : "setB/127.0.0.1:20001,127.0.0.1:20002,
127.0.0.1:20003" }
{  "_id" : "ShardSetC",  "host" : "setC/127.0.0.1:30001,127.0.0.1:30002,
127.0.0.1:30003" }
 databases:
{  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
{  "_id" : "test",  "partitioned" : false,  "primary" : "ShardSetC" }







同一电脑上配置Mongodb集群

上一篇:系统管理员 数据库管理员 系统集成工程师面试点详解


下一篇:(四):数据库表和列中的约束的使用示例