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

前期准备

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

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

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

  4. 关闭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,数据库)