同一电脑上配置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" }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。