linux配置mongodb集群

正本集

Mongodb(M)示意主节点,Mongodb(S)示意备节点,Mongodb(A)示意仲裁节点。

Primary:主节点,一个正本集有且仅有一台服务器处于Primary状态,只有主节点才对外提供读写服务。如果主节点挂掉,正本集将投票选出一个备节点成为新的主节点。

Secondary:备用节点,正本集容许有多台Secondary,每个备用节点的数据与主节点的数据是齐全同步的。Recovering 复原中,当正本集中某台服务器挂掉或者掉线后数据无奈同步,从新复原服务后从其余成员复制数据,这时就处于复原过程,数据同步后,该节点又回到备用状态。

Arbiter:仲裁节点,该类节点能够不必独自存在,如果配置为仲裁节点,就次要负责在复本集中监控其余节点状态,投票选出主节点。该节点将不会用于存放数据。如果没有仲裁节点,那么投票工作将由所有节点独特进行。

mongodb官网下载

https://www.mongodb.com/try/download/community

1、软件上传解压

tar zxvf mongodb-linux-x86_64-amazon2-6.0.4.tgz

2、创立对应目录

创立文件夹mkdir -pv /root/mongodb/{master,slave,arbiter}mkdir: 已创立目录 "/root/mongodb"mkdir: 已创立目录 "/root/mongodb/master"mkdir: 已创立目录 "/root/mongodb/slave"mkdir: 已创立目录 "/root/mongodb/arbiter"创立master文件夹中的data、log、confmkdir -pv /root/mongodb/master/{data,log,conf}mkdir: 已创立目录 "/root/mongodb/master/data"mkdir: 已创立目录 "/root/mongodb/master/log"mkdir: 已创立目录 "/root/mongodb/master/conf"创立slave文件夹中的data、log、confmkdir -pv /root/mongodb/slave/{data,log,conf}mkdir: 已创立目录 "/root/mongodb/slave/data"mkdir: 已创立目录 "/root/mongodb/slave/log"mkdir: 已创立目录 "/root/mongodb/slave/conf"创立slave文件夹中的data、log、confmkdir -pv /root/mongodb/arbiter/{data,log,conf}mkdir: 已创立目录 "/root/mongodb/arbiter/data"mkdir: 已创立目录 "/root/mongodb/arbiter/log"mkdir: 已创立目录 "/root/mongodb/arbiter/conf"

3、复制软件到绝对应地位

cd mongodb-linux-x86_64-amazon2-6.0.1/cp -ra ./* /root/mongodb/master/cp -ra ./* /root/mongodb/slave/cp -ra ./* /root/mongodb/arbiter/

4、创立master配置文件

编辑conf设置:vi master/conf/mongodb.conf

dbpath=/root/mongodb/master/datalogpath=/root/mongodb/master/log/mongodb.logpidfilepath=/root/mongodb/master/master.piddirectoryperdb=truelogappend=truereplSet=testrsbind_ip=0.0.0.0port=27017oplogSize=10000fork=true

5、创立slave配置文件

编辑conf设置:vi slave/conf/mongodb.conf

dbpath=/root/mongodb/slave/datalogpath=/root/mongodb/slave/log/mongodb.logpidfilepath=/root/mongodb/slave/slave.piddirectoryperdb=truelogappend=truereplSet=testrsbind_ip=0.0.0.0port=27018oplogSize=10000fork=true

6、创立arbiter配置文件

编辑conf设置:vi arbiter/conf/mongodb.conf

dbpath=/root/mongodb/arbiter/datalogpath=/root/mongodb/arbiter/log/mongodb.logpidfilepath=/root/mongodb/arbiter/arbiter.piddirectoryperdb=truelogappend=truereplSet=testrsbind_ip=0.0.0.0port=27019oplogSize=10000fork=true

7、配置文件参数解释

dbpath:数据寄存目录logpath:日志寄存门路pidfilepath:过程文件,不便进行mongodbdirectoryperdb:为每一个数据库依照数据库名建设文件夹寄存logappend:以追加的形式记录日志replSet:replica set的名字bind_ip:mongodb所绑定的ip地址port:mongodb过程所应用的端口号,默认为27017oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘残余空间的5%fork:当前台形式运行过程noprealloc:不事后调配存储# usercenter replset masterbind_ip=#指定服务器监听的端口,默认是27017port=30010#集群名字replSet=test_set#以守护过程的形式运行MongoDBfork=true#一个数据库一个文件夹directoryperdb=true##启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里journal = true# 在收到客户数据,查看的有效性objcheck=true#操作日志大小限度2GoplogSize=2000#pidfilepidfilepath=/data/mongo_set/test_set/30010/mongo_m30010.pid#指定数据目录,默认是/data/db/。每个mongod过程都须要独立的目录,#启动mongod时就会在数据目录中创立mongod.lock文件,避免其余mongod过程应用该数据目录。dbpath=/data/mongo_set/test_set/30010#指定日志输入门路,如果不指定则会在终端输入。每次启动都会笼罩原来的日志,如果不想笼罩就要用--logappend选项logpath=/data/mongo_set/test_set/30010/mongo30010.loglogappend=true#auth=true#0:敞开,不收集任何数据。1:收集慢查问数据,默认是100毫秒。2:收集所有数据profile=2slowms=100#.禁止HTTP状态接口nohttpinterface=true#.禁止REST接口-在生产环境下倡议不要启用MongoDB的REST接口rest=false

8、启动mongodb

# 启动主节点/master/bin/mongod -f master/conf/mongodb.conf # 启动从节点./slave/bin/mongod -f slave/conf/mongodb.conf# 启动仲裁节点./arbiter/bin/mongod -f arbiter/conf/mongodb.conf

9、查看启动过程

ps -ef | grep mongodbps aux | grep -v grep | grep mongod

10、装置shell工具

因为高版本的mongodb去掉了自带的shell工具https://www.mongodb.com/try/download/shelltar -zxvf mongosh-1.6.2-linux-x64.tgz#挪动文件mv mongosh-1.6.2-linux-x64 /usr/local/mongosh#无明码连贯/usr/local/mongosh/bin/mongosh 127.0.0.1:27017 #应用账号密码登录 /usr/local/mongosh/bin/mongosh -u root -p 123456

11、配置正本集

use adminreset={_id:"testrs", members:[ {_id:0,host:'127.0.0.1:27011',priority:2}, {_id:1,host:'127.0.0.1:27012',priority:1}, {_id:2,host:'127.0.0.1:27013',arbiterOnly:true}]};rs.initiate(reset)  # 使配置失效rs.status()

最外层的_id示意replica set的名字,members里蕴含的是所有节点的地址以及优先级。优先级最高的即成为主节点,即这里的'127.0.0.1:27017'。特地留神的是,对于仲裁节点,须要有个特地的配置——arbiterOnly:true。这个千万不能少了,不然主备模式就不能失效。

配置的失效工夫依据不同的机器配置会有长有短,配置不错的话基本上十几秒内就能失效,有的配置须要一两分钟。能够依据rs.status()来查看是否失效了,如果失效会看到如下信息:

(正本集曾经配置胜利)

12、正本集设置用户名明码

db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})
权限:readWrite:容许用户读写指定数据库dbAdmin:容许用户在指定数据库中执行治理函数,如索引创立、删除,查看统计或拜访system.profileuserAdmin:容许用户向system.users汇合写入,能够找指定数据库里创立、删除和治理用户clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相干函数的管理权限。readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。root:只在admin数据库中可用。超级账号,超级权限#正本集共享秘钥(目录以本人寄存地位为准)#keyFile=/home/mongod/mongodb/keyfile#开启访问控制#auth=true