@KingMe
2016-01-25T20:40:48.000000Z
字数 2303
阅读 1920
MongoDB
文件管理
.NET
windwos X64环境下搭建集群
1.官网下载64位安装包
https://www.mongodb.org/downloads#production
2.建立文件夹。mongodb运行时,需要先创建好存放数据的目录
mkdir data\rs-1
mkdir data\rs-2
mkdir data\rs-3
mkdir data\configSrv
mkdir data\configSrv2
mkdir data\configSrv3
mkdir log
3.运行一个mongod实例和一个配置服务实例,并且从配置文件读取配置
start mongod -f mongod_rs1.config
start mongod -f mongod_configSrv.config
mongod_rs1.config
port=30000
dbpath=.\data\rs-1
logpath=.\log\rs-1.log
logappend=true
smallfiles=false
shardsvr=true
replSet=rs1
oplogSize=200
mongod_configSrv.config
port=27019
dbpath=.\data\configSrv
logpath=.\log\configSrv.log
logappend=true
configsvr=true
smallfiles=false
replSet=config
4.初始化复制集
mongo.exe -nodb configure.js
configure.js
//用于保存数据的所有mongodb复制集,应该每个复制集的其中一个初始化即可
var hostnames = [
hostname() + ":30000/admin"
];
var configServers = [
hostname() + ":27019"
];
try {
hostnames.forEach(function (hostname) {
var rsDb = connect(hostname);
rsDb.runCommand({ replSetInitiate: null });
});
} catch (ex) { }
//配置服务复制集,初始化一个即可,默认配置服务复制集名称为config,可以随便定义
var config = new Object();
config._id = "config";
config.members = [];
for (var i = 0; i < configServers.length; i++) {
var temp = new Object();
temp._id = i;
temp.host = configServers[i];
config.members.push(temp);
}
var rsDb = connect(configServers[0] + "/admin");
rsDb.runCommand({ replSetInitiate: config });
5.运行一个mongos实例,mongos不需要配置文件,只需要设置存放日志的文件夹即可和打开的端口号即可。
start mongos --configdb config/%computername%:27019 --port 27017 --logpath .\log\mongos.log --logappend
6.连接到mongos服务,将初始化的分片添加到服务中
mongo.exe -nodb configure2.js
configure2.js
var mongosDb = connect(hostname() + ":27017/admin");
mongosDb.runCommand({addShard: "rs1/" + hostname() + ":30000"});
到此为止,我们生成了一个复制集,它包含一个mongod实例,并且添加到了rs1分片,生成了一个config复制集,包含一个config mongod实例,用来保存集群的配置信息。还有一个mongos进程,他读取配置服务器的信息,并且暴露给外部的程序链接,这样外部的程序不需要知道集群的其他信息,所有操作和操作单个mongod服务是一样的。
7.设置片键
mongo.exe -nodb pj.js
pj.js 这里用sleep来延迟执行命令,实际最好手动检查一下状态再执行下一步的命令
var db = connect(hostname() + ":27017/admin");
db.runCommand({ enablesharding:"testDB" })
sleep(3000)
var db2 = connect(hostname() + ":27017/testDB");
db2.fs.chunks.ensureIndex({files_id: 1});
sleep(3000)
db.runCommand({ shardcollection : "testDB.fs.chunks", key : { files_id : 'hashed' }})