您的位置:首页 > 数据库 > Mongodb

基于linux的mongodb3.2副本集+分片集群搭建

2016-01-07 00:00 756 查看
摘要: 基于windows的mongodb3.2副本集+分片集群搭建

前期准备

前往官网下载mongodb-3.2.0.tgz。https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel55-3.2.0.tgz

画出集群部署图。例如图1-1。

检查linux系统版本是否一致,时间是否一致。(版本不一致会导致集群间通信异常,时间不一致会导致mongodb同步异常)

关闭linux防火墙iptables



安装阶段

1.官方建议使非root账户,所以我们就建一个mongo账户,在根目录建立mongo文件夹。然后用chmod和chown分配权限具体指令就不码了。

2.将mongodb-3.2.0.tgz放入/mongo

3.解压tgz tar xf mongodb-3.2.0.tgz (ps:由于我用sftp上传至服务器,所以将名字改短)

4.在/mongo下创建logs(日志文件夹),conf(配置文件夹),pid(进程号文件夹),data(数据文件夹),data/config(config数据文件夹),data/arbiter(仲裁数据文件夹),data/shard1(1号分片数据文件夹),data/shard2(2号分片数据文件夹),data/shard3(3号数据分片文件夹)。

注意:其中根据当前配置服务选择创建哪几个分片,比如10.111.13.52这一台机器只需要创建shard1,shard2。而shard3在该机器未部署,所以不用创建。

5.编写配置文件。

#10.111.13.52

文件名:shard1.conf
logpath=/mongo/logs/shard1.log
logappend=true
fork=true
port=9082
dbpath=/mongo/data/shard1
pidfilepath=/mongo/pid/shard1.pid
storageEngine=wiredTiger
#分片标识
replSet=shard1
oplogSize=50

文件名:shard2.conf
logpath=/mongo/logs/shard2.log
logappend=true
fork=true
port=9083
dbpath=/mongo/data/shard2
pidfilepath=/mongo/pid/shard2.pid
storageEngine=wiredTiger
#分片标识
replSet=shard2
oplogSize=50

文件名:arbiter.conf
logpath=/mongo/logs/arbiter.log
logappend=true
fork=true
port=9084
dbpath=/mongo/data/arbiter
pidfilepath=/mongo/pid/arbiter.pid
nojournal=true
storageEngine=wiredTiger
#replSet设置为shard3是由于在最初规划的时候10.111.13.52机器的仲裁节点管理的是shard2的副本集节点,所以此 处设置为shard2,而53应该设置为shard1,以此类推。
replSet=shard3
oplogSize=50

其他两台机器的配置无非改下分片标识,存储路径之类的,大同小异,这里就不例举了。

启动阶段

1.首先各个服务器的configServer(配置服务器)跑起来。(命令都为同一个)

#首先进入mongodb的bin目录,懒得配置环境变量。
./mongod --configsvr --dbpath /mongo/data/config --port 9080 --logpath /mongo/logs/config.log --fork

2.启动各个服务器的mongosServer(路由服务器)

#首先进入mongodb的bin目录,懒得配置环境变量。(确保configServer已经启动,否则会出现连接异常之类的错误)
./mongos --configdb 10.111.13.52:9080,10.111.13.53:9080,10.111.13.54:9080 --port 9081 --logpath /mongo/logs/mongos.log --chunkSize 50 --fork

3.启动各个服务器数据节点

#首先进入mongodb的bin目录,懒得配置环境变量。(此处只有10.111.13.52服务器的命令,其他服务器命令根据部署图做修改)
./mongod -f ../../conf/shard1.conf
./mongod -f ../../conf/shard2.conf
./mongod -f ../../conf/arbiter.conf


配置集群

1.首先配置副本集(replSet),这里用shard1做例子。

#首先进入mongodb的bin目录,懒得配置环境变量。
#连接任意一台shard1的服务器。比如10.111.13.52:9082,10.111.13.54:9083,10.111.13.53:9084
#此处采用10.111.13.52的服务器做例子
./mongo --port 9082
#进入mongo命令行
#切换到admin空间
mongo> use admin
mongo> config = { _id:"shard1", members:[
{_id:0,host:"10.111.13.52:9082"},
{_id:1,host:"10.111.13.54:9083"},
{_id:2,host:"10.111.13.53:9084",arbiterOnly:true}
]
}
mongo> rs.initiate(config);

其他机器同理可推。

2.配置shard分片。

#首先进入mongodb的bin目录,懒得配置环境变量。
#连接任意一台mongos的服务器。比如10.111.13.52:9081,10.111.13.54:9081,10.111.13.53:9081

mongos> use admin
#设置分片集合
mongos> db.runCommand( { addshard : "shard1/10.111.13.52:9082,10.111.13.54:9083"});
mongos> db.runCommand( { addshard : "shard2/10.111.13.53:9082,10.111.13.52:9083"});
mongos> db.runCommand( { addshard : "shard3/10.111.13.54:9082,10.111.13.53:9083"});
#将某个(sysobj)库启用分片
mongos> db.runCommand({"enablesharding": "sysobj"})
#设置sysobj库中obj集合的片键(分片的键值),1为正序,-1为逆序。
mongos> sh.shardCollection("sysobj.obj",{"Data-UUID":1,"GlobalTargetType":1,"GlobalSourceType":1})


搭建篇就到此结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb 数据库