MongoDB学习笔记

之前一篇文章写了关于使用mongodb来进行replication,然后发现对于fileserver来说,只是单纯的replicate还不够,因为我们不可能只是使用一台机器来作为fileserver。

于是尝试试用mongodb的auto-shard来进行分布式存储,搞了一整天终于能够搭好环境,下面贴一下配置信息,备忘一下。

主要参考了两篇文章,这里面如何配置都讲得很详细,不过我还是按照自己的方法写一下我的步骤

http://www.cnblogs.com/daizhj/archive/2010/09/07/1820528.html  

http://www.mongodb.org/display/DOCS/A+Sample+Configuration+Session

1. 复制三份mongodb文件,同时在各个文件夹下建立data文件夹用于保存数据库

D:\mongodb1\

D:\mongodb2\

D:\mongodb3\

2. 开始配置,db1,db2作为shard节点,db3作为config server以及mongos

db1和db2的配置一样:

cd d:\mongodb1\bin

mongod --shardsvr --dbpath d:\mongodb1\data --logpath d:\mongodb1\log\logs.log --port 10000 

cd d:\mongodb2\bin

mongod --shardsvr --dbpath d:\mongodb2\data --logpath d:\mongodb2\log\logs.log --port 10001 

db3 config server 配置:

cd d:\mongodb3\bin

mongod --configsvr --dbpath d:\mongodb3\data --logpath d:\mongodb3\log\logs.log --port 20000

db3 mongos 配置:

mongos --configdb 127.0.0.1:20000

这里mongos是用来路由到各个shard节点,因此客户端只需要连接到mongos,无需要直接连接到shard节点,这里没有指定端口号,所以为默认端口号27017

在看上面两篇文章的配置中,我还以为mongos的端口号就是20000,甚至还以为链接字符串应该是把所有的节点写上,囧,所以为了避免困惑还是写上端口好。

mongos --port 30000 --configdb 127.0.0.1:20000

--configdb 用于指定配置服务器地址,可以多个,用逗号隔开

3.  链接到mongos,配置shard

cd d:\mongodb3\bin

mongo

use admin

db.runCommand({addshard:"127.0.0.1:10000",name:"shard1",maxSize:40000})

db.runCommand({addshard:"127.0.0.1:10001",name:"shard2"})

Now you need to tell the database that you want to spread out your data at a database and collection level. You have to give the collection a key (or keys) to partition by.
This is similar to creating an index on a collection.(http://www.mongodb.org/display/DOCS/A+Sample+Configuration+Session)

db.runCommand({enablesharding:"ecDoc"})

db.runCommand({shardcollection:"ecDoc.files.chunks",key:{files_id:1}})

这里我使用的是GridFS来保存文件,所以根据http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key

shard key的作用还是比较模糊。

原文地址:https://www.cnblogs.com/coolkiss/p/1951781.html