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、conf
mkdir -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、conf
mkdir -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、conf
mkdir -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/data
logpath=/root/mongodb/master/log/mongodb.log
pidfilepath=/root/mongodb/master/master.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27017
oplogSize=10000
fork=true
5、创立 slave 配置文件
编辑 conf 设置:vi slave/conf/mongodb.conf
dbpath=/root/mongodb/slave/data
logpath=/root/mongodb/slave/log/mongodb.log
pidfilepath=/root/mongodb/slave/slave.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27018
oplogSize=10000
fork=true
6、创立 arbiter 配置文件
编辑 conf 设置:vi arbiter/conf/mongodb.conf
dbpath=/root/mongodb/arbiter/data
logpath=/root/mongodb/arbiter/log/mongodb.log
pidfilepath=/root/mongodb/arbiter/arbiter.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27019
oplogSize=10000
fork=true
7、配置文件参数解释
dbpath:数据寄存目录
logpath:日志寄存门路
pidfilepath:过程文件,不便进行 mongodb
directoryperdb:为每一个数据库依照数据库名建设文件夹寄存
logappend:以追加的形式记录日志
replSet:replica set 的名字
bind_ip:mongodb 所绑定的 ip 地址
port:mongodb 过程所应用的端口号,默认为 27017
oplogSize:mongodb 操作日志文件的最大大小。单位为 Mb,默认为硬盘残余空间的 5%
fork:当前台形式运行过程
noprealloc:不事后调配存储
# usercenter replset master
bind_ip=
#指定服务器监听的端口,默认是 27017
port=30010
#集群名字
replSet=test_set
#以守护过程的形式运行 MongoDB
fork=true
#一个数据库一个文件夹
directoryperdb=true
## 启用日志选项,MongoDB 的数据操作将会写入到 journal 文件夹的文件里
journal = true
# 在收到客户数据, 查看的有效性
objcheck=true
#操作日志大小限度 2G
oplogSize=2000
#pidfile
pidfilepath=/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.log
logappend=true
#auth=true
#0:敞开,不收集任何数据。1:收集慢查问数据,默认是 100 毫秒。2:收集所有数据
profile=2
slowms=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 mongodb
ps aux | grep -v grep | grep mongod
10、装置 shell 工具
因为高版本的 mongodb 去掉了自带的 shell 工具
https://www.mongodb.com/try/download/shell
tar -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 admin
reset={_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.profile
userAdmin:容许用户向 system.users 汇合写入,能够找指定数据库里创立、删除和治理用户
clusterAdmin:只在 admin 数据库中可用,赋予用户所有分片和复制集相干函数的管理权限。readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限
dbAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限。root:只在 admin 数据库中可用。超级账号,超级权限
#正本集共享秘钥 (目录以本人寄存地位为准)
#keyFile=/home/mongod/mongodb/keyfile
#开启访问控制
#auth=true