Mongodb实现分片功能

发布时间:2020-05-12 14:15:31 作者:Leah
阅读:411
GO开发者专用服务器,限时0元免费领! 查看>>

这篇文章为大家带来有关Mongodb实现分片功能的详细介绍。大部分Mongodb知识点都是大家经常用到的,为此分享给大家做个参考。一起跟随小编过来看看吧。

MongoDB 分片概述


分片

在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。

当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。


为什么使用分片


MongoDB分片

下图展示了在MongoDB中使用分片集群结构分布:

Mongodb实现分片功能

上图中主要有如下所述三个主要组件:

分片实例

192.168.1.100 :   mongos

192.168.1.110 :   config server

192.168.1.101 :   Shard1

192.168.1.102 :   Shard2

以上四个主机上都以安装mongodb数据库。

一.配置config server

编辑配置文件mongod.conf:

vim /etc/mongod.conf

添加如下并启用config server服务:

configsvr=true

重新启动mongodb服务:

service mongod restart

注:默认监听27019端口。也可以使用如下命令启动mongod进程。

# mongod --configsvr --dbpath <path> --port <port>

此时,默认端口由27017变为27019:

Mongodb实现分片功能

二.配置mongos实例

安装mongos:

yum install mongodb-org-mongos-2.6.1-1.x86_64.rpm
mongos --configdb=192.168.1.110 --fork --logpath=/var/log/mongodb/mongos.log

注:mongos属于轻量级应用,完全可以与其它服务运行于同一节点;启动时,需要为mongos实例指明各config服务器的访问地址;

# mongos --configdb <config server hostnames((IP|Hostname):Port)>

也可以直接编辑配置文件:

1、注释dbpath指令;

2、添加configdb指令,并指定config服务器的地址;

# mongos -f /etc/mongod.conf

登录mongos并配置shard节点:

mongo --host 192.168.1.100
mongos> sh.addShard("192.168.1.101")
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> sh.addShard("192.168.1.102")
{ "shardAdded" : "shard0001", "ok" : 1 }

查看shard状态:

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" : ObjectId("58d4bd8a102ad4bdad74aa1d")
}
  shards:
{  "_id" : "shard0000",  "host" : "192.168.1.101:27017" }
{  "_id" : "shard0001",  "host" : "192.168.1.102:27017" }
  databases:
{  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }

启动sharding功能:

mongos> sh.enableSharding("testdb");
{ "ok" : 1 }

注:mongodb的shard功能实现于collection级别,但若要在collection上启动shard,还需要事先其相关的数据库上启用之。在数据库上启用shard功能后,MongoDB会为其指定一个主shard。

启用过程需要mongos实例上实现,可以使用sh.enableSharding()方法,也可以使用db.runCommand()的“enableSharding命令,它们的使用格式分别如下所示:

sh.enableSharding("<database>")
db.runCommand( { enableSharding: <database> } )

此时,再次查看shard状态为:

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" : ObjectId("58d4bd8a102ad4bdad74aa1d")
}
  shards:
{  "_id" : "shard0000",  "host" : "192.168.1.101:27017" }
{  "_id" : "shard0001",  "host" : "192.168.1.102:27017" }
  databases:
{  "_id" : "testdb",  "partitioned" : true,  "primary" : "shard0000" }

在collection上进行sharding:

mongos> sh.shardCollection("testdb.student",{"age":1})
{ "collectionsharded" : "testdb.student", "ok" : 1 }

插入数据:

mongos> for (i=1;i<=100000;i++) db.student.insert({name:"student"+i,age:(i%120),classes:"class+(i%10)"});
WriteResult({ "nInserted" : 1 })

此时我们再次查看sharding状态如下:

Mongodb实现分片功能

关于Mongodb实现分片功能就分享到这里了,解决问题并不止文章中和大家分析的办法,不过本文分析的方法准确性是不容置疑的。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:
  1. MongoDB分片群集
  2. MongoDB sharding分片

开发者交流群:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mongodb 分片功能 sharding

上一篇:nginx/mysql数据库内存占用怎么样查看

下一篇:Go中map的增删改查

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
开发者交流群×