Mongodb集群搭建(副本集)
Posted 西风h
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb集群搭建(副本集)相关的知识,希望对你有一定的参考价值。
#!/bin/bash
echo "请确保文件"mongodb-linux-x86_64-rhel70-3.6.23.tgz"已上传到/root目录"
read -p "请根据实际数据挂载盘输入mongodb安装的主目录(建议/data):" maindir
ip addr
read -p "请输入当前服务器的ip:" ip
read -p "请输入端口号(默认端口是27017): " port
echo "---3台机均需执行该脚本,下面进行mongodb副本集1主2从搭建---"
if [ -f /root/mongodb-linux-x86_64-rhel70-3.6.23.tgz ];then
mkdir $maindir
tar -xvf mongodb-linux-x86_64-rhel70-3.6.23.tgz -C $maindir
cd $maindir
mv mongodb-linux-x86_64-rhel70-3.6.23 mongodb
useradd mongodb
mkdir -pv $maindir/mongodb/{log,etc,data,pid}
cat >> $maindir/mongodb/etc/mongodb_$port.conf <<EOF
logpath=$maindir/mongodb/log/mongodb_$port.log #跟端口保持一致
pidfilepath=$maindir/mongodb/pid/mongodb_$port.pid
logappend=true
bind_ip=$ip #不同节点监听的IP需要修改
port=$port
fork=true #守护进程的方式运行
replSet=osmongodb
dbpath=$maindir/mongodb/data/
oplogSize=10000
noprealloc=true #禁用预分配的数据文件
shardsvr=true #分片
directoryperdb=true #数据目录存储模式,每个数据库的文件存储在DBPATH指定目录的不同的文件夹中
#auth=true
#keyFile=$maindir/mongodb/etc/keyfile
EOF
openssl rand -base64 666 > $maindir/mongodb/etc/keyfile
chmod 600 $maindir/mongodb/etc/keyfile
chown -R mongodb.mongodb $maindir/mongodb/
su - mongodb <<EOF
$maindir/mongodb/bin/mongod -f $maindir/mongodb/etc/mongodb_$port.conf;
exit;
EOF
else
echo "请把相应的包上传到/root目录,再进行下一步!"
exit 0
fi
cat > /etc/profile.d/mongo.sh <<EOF
PATH=\\$PATH:$maindir/mongodb/bin
export PATH
EOF
source /etc/profile.d/mongo.sh
echo "集群主节点和副本节点执行完脚本后需要进行如下初始化操作 主节点操作:"
echo "$maindir/mongodb/bin/mongo --host 主节点IP --port 27017 "
echo "config = {_id:'osmongodb',members: [{_id: 0, host: '主机点IP:27017'},{_id: 1, host:'从节点1IP:27017'},{_id: 2, host:'从节点2IP:27017'}]}
rs.initiate(config) #初始化副本集(若执行失败可以先注释配置文件"auth=true,keyFile=$maindir/mongodb/etc/keyfile这两行,等初始化成功并配置好admin用户后再打开即可实现账号密码认证功能)"
rs.status() #查看副本集状态
注:从节点需要查询数据需执行:rs.secondaryOk()"
echo "创建管理用户在主节点上操作
$maindir/mongodb/bin/mongo --host 主节点IP --port 27017
use admin
admin.createUser(
{
user: "root",
pwd: "h6McjSIHR*^y30Whd",
roles: [ { role: "root", db: "admin" } ]
}
)"
use admin
db.createUser(
{
user: "app",
pwd: "h6McjSIHR*^y30Whd",
roles: [ { role: "readWriteAnyDatabase", db: "admin" }]
}
)
echo "命令关闭 $maindir/mongodb/bin/mongod --shutdown --dbpath $maindir/mongodb/data/"
以上是关于Mongodb集群搭建(副本集)的主要内容,如果未能解决你的问题,请参考以下文章