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集群搭建(副本集)的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb 副本集+分片集群搭建

mongodb3.6集群搭建:分片+副本集

mongodb 3.4 集群搭建:分片+副本集

高可用MongoDB集群部署详解——搭建MongoDB副本集

Replica Set副本集方式的mongodb集群搭建

mongodb 集群搭建 分片+副本集