Mongodb分片的简单配置

Mongodb分片的简单配置

相关概念

配置服务器(Config server) : 是一个独立的mongod进程,保存集群和分片的元数据,即各分片包含了哪些数据的信息。最先开始建立,启用日志功能。像启动普通的mongod一样启动配置服务器,指定configsvr选项。不需要太多的空间和资源,配置服务器的1KB空间相当于真是数据的200MB。保存的只是数据的分布表。当服务不可用,则变成只读,无法分块、迁移数据。

路由服务器(Router server) : 即mongos,起到一个路由的功能,供程序连接。本身不保存数据,在启动时从配置服务器加载集群信息,开启mongos进程需要知道配置服务器的地址,指定configdb选项。

分片服务器(Shard server) : 是一个独立普通的mongod进程,保存数据信息。可以是一个副本集也可以是单独的一台服务器。

测试环境

Mongodb版本:3.4.9

操作系统:Centos 6.5

3台vm:

vm A(192.168.9.10)
vm B(192.168.9.11)
vm C(192.168.9.12)

一,配置 Config server

在A,B,C分别启动Config Server

mongod --configsvr --replSet cfgReplSet --dbpath /data/mongodb_sharding/dbs/config --port 21000 --logpath /data/mongodb_sharding/logs/config.log --fork

创建Config Server的ReplSet

mongo --host 192.168.9.10 --port 21000
rs.initiate({_id:"cfgReplSet",configsvr:true,members:[{_id:0,host:"192.168.9.10:21000"},{_id:1,host:"192.168.9.11:21000"},{_id:2,host:"192.168.9.12:21000"}]})

二,配置 Shard server

在A,B,C分别启动分片1

mongod --shardsvr --replSet shard1ReplSet --port 22001 --dbpath /data/mongodb_sharding/dbs/shard1  --logpath /data/mongodb_sharding/logs/shard1.log --fork --nojournal --oplogSize 10

创建分片1的ReplSet

mongo --host 192.168.9.10 --port 22001
rs.initiate({_id:"shard1ReplSet",members:[{_id:0,host:"192.168.9.10:22001"},{_id:1,host:"192.168.9.11:22001"},{_id:2,host:"192.168.9.12:22001",arbiterOnly:true}]})

在A,B,C分别启动分片2

mongod --shardsvr --replSet shard2ReplSet --port 22002 --dbpath /data/mongodb_sharding/dbs/shard2  --logpath /data/mongodb_sharding/logs/shard2.log --fork --nojournal --oplogSize 10

创建分片2的ReplSet

mongo --host 192.168.9.10 --port 22002
rs.initiate({_id:"shard2ReplSet",members:[{_id:0,host:"192.168.9.10:22002"},{_id:1,host:"192.168.9.11:22002"},{_id:2,host:"192.168.9.12:22002",arbiterOnly:true}]})

在A,B,C分别启动分片3

mongod --shardsvr --replSet shard3ReplSet --port 22003 --dbpath /data/mongodb_sharding/dbs/shard3  --logpath /data/mongodb_sharding/logs/shard3.log --fork --nojournal --oplogSize 10

创建分片3的ReplSet

mongo --host 192.168.9.10 --port 22003
rs.initiate({_id:"shard3ReplSet",members:[{_id:0,host:"192.168.9.10:22003"},{_id:1,host:"192.168.9.11:22003"},{_id:2,host:"192.168.9.12:22003",arbiterOnly:true}]})

三,配置 Router server

在A,B,C分别启动mongos

mongos --configdb cfgReplSet/192.168.9.10:21000,192.168.9.11:21000,192.168.9.12:21000 --port 20000 --logpath /data/mongodb_sharding/logs/mongos.log --fork

设置分片
mongo –port 20000

use admin;
sh.addShard("shard1ReplSet/192.168.9.10:22001,192.168.9.11:22001,192.168.9.12:22001");
sh.addShard("shard2ReplSet/192.168.9.10:22002,192.168.9.11:22002,192.168.9.12:22002");
sh.addShard("shard3ReplSet/192.168.9.10:22003,192.168.9.11:22003,192.168.9.12:22003");
sh.status();

指定分片库、集合、片键:

db.runCommand( { enablesharding :"mydb"});
db.runCommand( { shardcollection : "mydb.table1",key : {id: 1} } );

插入数据:

use mydb;
for(var i =1;i<=2000000;i++) { db.table1.save({ id:i,"user":"user-"+i }); }

可能会用到的命令

//查看副本集状态
rs.status();

//查看Collection信息
//连接到 "stateStr" 属性为 "PRIMARY" 的副本
use table1;
db.table1.count();

//删除数据库
use mydb;
db.dropdatabase();

//移除分片
use admin;
db.runCommand( { removeshard: "shard1ReplSet" } );

//重置主分片
use admin;
db.runCommand({"moveprimary":"mydb","to":"192.168.9.10:22001"});

//查看分片信息
sh.status();

//查看shardCollection数据分布
use mydb;
db.table1.stats();

参考:
https://www.cnblogs.com/zhoujinyi/p/4635444.html
https://www.tuicool.com/articles/UzeUze

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值