共计 4658 个字符,预计需要花费 12 分钟才能阅读完成。
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 |