Welcome 微信登录

首页 / 数据库 / MySQL / 基于MongoDB进行分布式数据存储的步骤

本文是研究Mongodb分布式数据存储的副产品,通过本文的相关步骤可以将一个大表中的数据分布到几个mongo服务器上。 MongoDB的1.6版本中auto-sharding功能基本稳定并可以尝试放到生产环境下使用。因为其是auto-sharding,即mongodb通过mongos(一个自动分片模块,用于构建一个大规模的可扩展的数据库集群,这个集群可以并入动态增加的机器)自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。 一个mongodb集群包括一些shards(包括一些mongod进程),mongos路由进程,一个或多个config服务器 (注:本文的测试用例需求64位的mongo程序,因为我在32位的mongo没成功过)。 下面是一些相关词汇说明: Shards : 每一个shard包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程)典型的每个shard开启多个服务来提高服务的可用性。这些服务/mongod进程在shard中组成一个复制集 Chunks: Chunk是一个来自特殊集合中的一个数据范围,(collection,minKey,maxKey)描叙一个chunk,它介于minKey和maxKey范围之间。例如chunks 的maxsize大小是100M,如果一个文件达到或超过这个范围时,会被切分到2个新的chunks中。当一个shard的数据过量时,chunks将会被迁移到其他的shards上。同样,chunks也可以迁移到其他的shards上 Config Servers : Config服务器存储着集群的metadata信息,包括每个服务器,每个shard的基本信息和chunk信息Config服务器主要存储的是chunk信息。每一个config服务器都复制了完整的chunk信息。 接着看一下要配置的测试环境信息: 模拟2个shard服务和一个config服务, 均运行在10.0.4.85机器上,只是端口不同: Shard1:27020 Shard2:27021 Config:27022 Mongos启动时默认使用的27017端口 在C,D,E磁盘下分别建立如下文件夹:
mongodbin mongodbdb
然后用CMD命令行依次打开相应文件夹下的mongd文件:<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> c:mongodbinmongod --dbpath c:mongodbdb --port 27020

d:mongodbinmongod --dbpath d:mongodbdb --port 27021

e:mongodbinmongod --configsvr --dbpath e:mongodbdb --port 27022         (注:config配置服务器) 启动mongos时,默认开启了27017端口:<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> e:mongodbinmongos --configdb 10.0.4.85:27022 然后打开mongo: E:mongodbin>mongo 回车 (有时加端口会造成下面的addshard命令出问题)<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> > use admin

switched to db admin

> db.runCommand( { addshard : "10.0.4.85:27020", allowLocal : 1, maxSize:2 , minKey:1, maxKey:10} )

--添加sharding,maxsize单位是M,此处设置比较小的数值只为演示sharding效果

{ "shardAdded" : "shard0000", "ok" : 1 }

> db.runCommand( { addshard : "10.0.4.85:27021", allowLocal : 1, minKey:1000} )

{ "shardAdded" : "shard0001", "ok" : 1 } 注:如果要移除sharding,可用下面写法 db.runCommand( { removeshard : "localhost:10000" } ); > db.runCommand({listshards:1}); 查看shard节点列表<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->      {
        "shards" : [
                {
                        "_id" : "shard0000",
                        "host" : "10.0.4.85:27020"
                },
                {
                        "_id" : "shard0001",
                        "host" : "10.0.4.85:27021"
                }
        ],
        "ok" : 1
      }
  • 1
  • 2
  • 3
  • 下一页
不容忽视:MongoDB的JavaScript性能MongoDB五分钟教程:MongoDB Shell入门相关资讯      MongoDB 
  • MongoDB 3.3.0 发布下载  (01月14日)
  • 使用MongoDB C#官方驱动操作  (12/31/2015 16:27:56)
  • CentOS 6.6下安装MongoDB 3.0.1  (12/21/2015 19:29:02)
  • MongoDB 3.2版WiredTiger存储引擎  (01月02日)
  • 进程监控工具Supervisor 启动  (12/26/2015 10:49:57)
  • MongoDB 3.2.1 RC0 发布下载  (12/18/2015 11:32:29)
本文评论 查看全部评论 (0)
表情: 姓名: 字数