mongodb副本集

参考
https://blog.csdn.net/fanxb92/article/details/106918371/

https://blog.csdn.net/pengjunlee/article/details/84101732

mongodb图形工具
https://www.nosqlbooster.com/

192.168.66.28
192.168.66.81
192.168.66.178

关掉大内存页

vim /etc/rc.local

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then  
   echo never > /sys/kernel/mm/transparent_hugepage/enabled  
fi  
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then  
   echo never > /sys/kernel/mm/transparent_hugepage/defrag  
fi
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never >  /sys/kernel/mm/transparent_hugepage/defrag

下载

https://www.mongodb.com/download-center/community/releases/archive

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.3.tgz

创建数据和日志存储目录

mkdir -pv /data/mongodb/{data,logs}

安装

tar xf mongodb-linux-x86_64-rhel70-3.6.3.tgz -C /usr/local/
cd /usr/local
mv mongodb-linux-x86_64-rhel70-3.6.3 mongodb

配置环境变量

vim /etc/profile

export MONGODB_HOME=/usr/local/mongodb/
export PATH=$PATH:$MONGODB_HOME/bin

创建配置文件

vim /usr/local/mongodb/mongodb.conf

dbpath = /data/mongodb/data/
logpath = /data/mongodb/logs/mongodb.log
port = 27017
fork =true
directoryperdb=true
bind_ip=192.168.66.178
logappend = true
replSet = mongorepl
pidfilepath=/usr/local/mongodb/mongodb.pid

systemd管理

vim /usr/lib/systemd/system/mongodb.service

[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongodb.conf
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target
chmod 754 /usr/lib/systemd/system/mongodb.service
systemctl daemon-reload

启动服务

systemctl start mongodb

副本集

任选一个节点登录,配置副本集

mongo --host 192.168.66.28 --port 27017 admin
config={_id:"mongorepl",members:[{_id:0,host:"192.168.66.28:27017"},{_id:1,host:"192.168.66.81:27017"},{_id:2,host:"192.168.66.178:27017"}]}

//with arbiter
config={_id:"mongorepl",members:[{_id:0,host:"192.168.66.28:27017"},{_id:1,host:"192.168.66.81:27017"},{_id:2,host:"192.168.66.178:27017", arbiterOnly:true}]}

rs.initiate(config)

查看集群状态

rs.status()

SECONDARY是不允许读写的,执行以下语句即可

:SECONDARY> rs.slaveOk();
:SECONDARY> rs.secondaryOk();  #mongodb4.x版本

开启安全认证

创建超级管理员,管理所有数据库

1、先use admin;
2,roles中的db必须是admin;
3、创建完用户后必须在登录时就指定验证数据库为admin
4、配置完成用户后要在配置文件中打开验证功能

role:root, readWrite,read

创建用户

登录 PRIMARY节点创建用户

use admin
db.createUser(
{
  user: "root",
  pwd: "root123",
  roles: [ { role: "root", db: "admin" } ]
}
)

验证用户

db.auth('root','root123')

创建keyFile文件

先停掉所有SECONDARY节点的MongoDB服务,然后再停掉PRIMARY节点的MongoDB服务,并在PRIMARY节点所在服务器上创建keyFile文件

openssl rand -base64 666 > /usr/local/mongodb/keyfile
chmod 600 /usr/local/mongodb/keyfile

将生成的keyFile文件拷贝到其他节点服务器上,并修改文件的操作权限为 600

更新启动配置文件

修改各节点的 mongodb.conf 文件,增加如下内容

auth=true
oplogSize=100
keyFile=/usr/local/mongodb/keyfile

启动副本集

先启动PRIMARY节点

再启动SECONDARY节点

用户认证登录

mongo --host 192.168.66.28 --port 27017  -uroot -proot123 admin

查看用户

db.system.users.find().pretty()

附:副本集操作

查看配置

rs.conf()

向副本集中添加成员

rs.add("172.16.250.240:27017")

从副本集中删除成员

rs.remove("172.16.250.240:27017")

向副本集中添加仲裁

rs.addArb("172.16.250.240:27017")

向副本集中添加备份节点

rs.add({"_id":3,"host":"172.16.250.240:27017","priority":0,"hidden":true})

reconfig

replset:SECONDARY> cfg = rs.conf()
replset:SECONDARY> conf = {_id:cfg._id,version: cfg.version,members: [ cfg.members[0] ]}
replset:SECONDARY> rs.reconfig(conf,{force:true})

mongodb副本集切换

config=rs.conf()
config.members[0].priority=2
rs.reconfig(config)

#优先级调整,主从会切换

mongodb同步状态查看

db.printSlaveReplicationInfo()
db.printSecondaryReplicationInfo()

应用连接mongodb副本集

mongodb://username:password@192.168.59.135:27017,192.168.59.136:27017,192.168.59.137:27017/库名?replicaSet=mongorepl&readPreference=secondaryPreferred&connectTimeoutMS=300000&authSource=admin
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuxingge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值