MongoDB副本集
1.下载mongodb安装包
直接上官网下载https://www.mongodb.com/
我选择企业版
单机版安装请看 http://blog.****.net/qq_23731295/article/details/79470185
2.搭建复制集
复制集我使用3台机器,开启多台虚拟机机器卡,也不方便,所以我在一台机器上搭建复制集
1.解压mongodb到/usr/local目录下
tar -zxvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz -C /usr/local
创建link
ln -s /usr/local/mongodb-linux-x86_64-enterprise-rhel70-3.6.2/ mongodb
2.进入mongodb安装目录 cd /usr/local/mongodb
mkdir replset
创建数据目录
mkdir replset/data01
mkdir replset/data02
mkdir replset/data03
创建日志目录
mkdir replset/logs01
mkdir replset/logs02
mkdir replset/logs03
3.编写配置文件
进入复制集目录 cd replset
vim mongod01.conf 将下面内容复制其中
#/** 加入相关配置 **/
#端口号
port = 10001
#绑定ip
bind_ip=127.0.0.1,10.35.90.40
#数据目录
dbpath = /usr/local/mongodb/replset/data01
#日志目录
logpath = /usr/local/mongodb/replset/logs01/mongodb.log
#设置后台运行
fork = true
#日志输出方式
logappend = true
#开启认证
auth = false
#秘钥
#keyFile= /usr/local/mongodb/mongodb-linux-x86_64-enterprise-rhel70-3.6.2/data/scf/sc.dat
#复制集名称
replSet= xfq
auth是单机版认证,复制集不需要故设置为false, 我们使用keyFile做集群验证,先屏蔽,复制集完成之后再开启验证
replSet= xfq 复制集的名称,3个配置文件必须一样
配置文件编写完成之后
cp mongod01.conf mongod02.conf
cp mongod01.conf mongod03.conf
编辑文件 mongod02.conf mongod03.conf
将端口号分别改为10002 10003
数据目录 日志目录分别改为02,03的目录
3个配置文件如下
4.启动3台mongodb
cd /usr/local/mongodb
bin/mongod -f replset/mongod01.conf
bin/mongod -f replset/mongod02.conf
bin/mongod -f replset/mongod03.conf
5.初始化复制集
登录任意一台shell
bin/mongo --host 127.0.0.1:10001
执行命令
rs.initiate({"_id":"xfq",members:[{"_id":0,host:"10.35.90.40:10001"}]});
"_id":xfq 必须为复制集的名称
执行rs.status()查看复制集的状态
通过信息可以看到只有primary没有slave和arbiter(仲裁节点)
创建超级用户管理集群
use admin
db.createUser({user:"admin",pwd:"123",roles:["root"]})
增加slave
rs.add("10.35.90.40:10002");
增加arbiter
rs.addArb("10.35.90.40:10003");
通过rs.status() 查看复制集的状态,复制集搭建完成
3.开启集群验证
1.创建keyFile
mkdir /usr/local/mongodb/replset/scf
openssl rand -base64 256 > /usr/local/mongodb/replset/scf/sc.dat
2.关闭集群
先关闭arbiter,再关闭主从 ,db.shutdownServer() 或者 kill -15 端口号(不要使用-9)
3.将秘钥放开重启复制集,管理员用户在初始化复制集我已经创建了
keyFile= /usr/local/mongodb/replset/scf/sc.dat
重启复制集 先启动arbiter,再启动主从,验证就开启了,操作数据库将需要认证。