MongoDB副本集和分片模式安装

设备:
  三个1G、20G、1核的虚拟机,系统是SentOS7 min
设置目录:
Server1:
mkdir -p /home/mongoshard/data/shard11 /home/mongoshard/data/shard21 /home/mongoshard/data/config
Server2:
mkdir -p /home/mongoshard/data/shard12 /home/mongoshard/data/shard22 /home/mongoshard/data/config
Server3:
mkdir -p /home/mongoshard/data/shard13 /home/mongoshard/data/shard23 /home/mongoshard/data/config
 
1、配置副本集和分片
Server1:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /home/mongoshard/data/shard11  --logpath /home/mongoshard/data/shard11.log --logappend --fork --nojournal  --oplogSize 10
Server2:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /home/mongoshard/data/shard12  --logpath /home/mongoshard/data/shard12.log --logappend --fork --nojournal  --oplogSize 10
Server3:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /home/mongoshard/data/shard13  --logpath /home/mongoshard/data/shard13.log --logappend --fork --nojournal  --oplogSize 10
 
config = { _id:"shard1", members:[
                     {_id:0,host:"192.168.229.129:27017 "},
                     {_id:1,host:"192.168.229.130:27017 "},
                     {_id:2,host:"192.168.229.131:27017 "}
                ]
         }
rs.initiate(config);
 
Server1:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/mongoshard/data/shard21  --logpath /home/mongoshard/data/shard21.log --logappend --fork --nojournal  --oplogSize 10
Server2:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/mongoshard/data/shard22  --logpath /home/mongoshard/data/shard22.log --logappend --fork --nojournal  --oplogSize 10
Server3:
/usr/local/mongoshard/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/mongoshard/data/shard23  --logpath /home/mongoshard/data/shard23.log --logappend --fork --nojournal  --oplogSize 10
 
config = { _id:"shard2", members:[
                     {_id:0,host:"192.168.229.129:27018 "},
                     {_id:1,host:"192.168.229.130:27018"},
                     {_id:2,host:"192.168.229.131:27018 "}
                ]
         }
 
rs.initiate(config);
2、启动配置服务器
Server1:
/usr/local/mongoshard/bin/mongod --configsvr --replSet shard3 --dbpath /home/mongoshard/data/config --port 20000 --logpath /home/mongoshard/data/config.log --logappend --fork
 
Server2:
/usr/local/mongoshard/bin/mongod --configsvr --replSet shard3 --dbpath /home/mongoshard/data/config --port 20000 --logpath /home/mongoshard/data/config.log --logappend --fork
 
Server3:
/usr/local/mongoshard/bin/mongod --configsvr --replSet shard3 --dbpath /home/mongoshard/data/config --port 20000 --logpath /home/mongoshard/data/config.log --logappend --fork
config = { _id:"shard3", members:[
                     {_id:0,host:"192.168.229.129:20000 "},
                     {_id:1,host:"192.168.229.130:20000"},
                     {_id:2,host:"192.168.229.131:20000 "}
                ]
         }
rs.initiate(config);
 
3、启动mongos
/usr/local/mongodb/bin/mongos  --configdb --port 30000  192.168.229.129:20000,192.168.229.130:20000,192.168.229.131:20000 --logpath /home/mongoshard/data/mongos.log --logappend --fork 
 
在任意节点链接mongos
/usr/local/mongoshard/bin/mongo 127.0.0.1:30000/admin
 
4. 加入shards
如里shard是单台服务器,用>db.runCommand( { addshard : “<serverhostname>[:<port>]” } )这样的命令加入,如果shard是replica sets,用replicaSetName/<serverhostname>[:port][,serverhostname2[:port],…]这样的格式表示,例如本例执行:
>db.runCommand( { addshard : "shard1/192.168.229.129:27017,192.168.229.130:27017,192.168.229.131:27017",name:"s1",maxsize:20480} );
>db.runCommand( { addshard : "shard2/192.168.229.129:27018,192.168.229.130:27018,192.168.229.131:27018",name:"s2",maxsize:20480} );
注意:在添加第二个shard时,出现error:test database 已经存在的错误,这里用mongo命令连接到第二个replica set,用db.dropDatabase()命令把test数据库给删除然后就可加入
5. Listing shards
>db.runCommand( { listshards : 1 } )
如果列出了以上二个你加的shards,表示shards已经配置成功
6. 激活数据库分片
命令:
> db.runCommand( { enablesharding : "testdb "} );
通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,一旦激活数据库分片,数据库中不同的collection将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对collection作些操作
我们设置testdb的 table1 表需要分片,根据 id 自动分片到 shard1 ,shard2,shard3 上面去。要这样设置是因为不是所有mongodb 的数据库和表 都需要分片!
use testdb
for (var i = 1; i <= 100000; i++)db.table1.save({id:i,"test1":"testval1"});
for(var i=0;i<100000;i++)db.table1.save({"name" : "kk", "value" : "0", "myid" : i});
#查看分片情况如下,部分无关信息省掉了
db.table1.stats();
 
查看mongodb数据分布情况:
db.printShardingStatus(); 或者sh.status()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值