前往官网下载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})
搭建篇就到此结束。