搭建mongodb伪集群脚本(仅供参考,因为别人可能看不懂)

#! /bin/bash
#此脚本为单机伪副本集群,用于测试mongodb 4.0以上,是否支持事务。
#mongodb下载网站 https://www.mongodb.com/download-center/community
######################################################################
# 节点名                节点用途                        节点IP          节点端口                集群名
# mongo1                主节点(PRIMARY)         .                       9927                    myrs
# mongo2                从节点(SECONDARY)       .                       9928                    myrs
# mongo3                仲裁节点(ARBITER)       .                       9929                    myrs
#外网ip
ip=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")
#mongodb三个节点的主目录
mongodbMainUrl=/usr/local/mongodbCluster
#各节点配置文件所在目录
array_configURL=('/mgrs/node1' '/mgrs/node2' '/mgrs/node3')
#各节点服务开放端口
array_port=('9927' '9928' '9929')
#各节点源码包位置
array_mongodb_source=( $mongodbMainUrl'/mongodbNodeOne' $mongodbMainUrl'/mongodbNodeTwo' $mongodbMainUrl'/mongodbNodeThree')
copyMongodb(){
        cp -a mongodb-linux-x86_64-4.0.9 $mongodbMainUrl
        mv $mongodbMainUrl/mongodb-linux-x86_64-4.0.9 $mongodbMainUrl/mongodbNodeOne
        cp -a mongodb-linux-x86_64-4.0.9 $mongodbMainUrl
        mv $mongodbMainUrl/mongodb-linux-x86_64-4.0.9 $mongodbMainUrl/mongodbNodeTwo
        cp -a mongodb-linux-x86_64-4.0.9 $mongodbMainUrl
        mv $mongodbMainUrl/mongodb-linux-x86_64-4.0.9 $mongodbMainUrl/mongodbNodeThree
}
mkNodedir(){
        mkdir -p /mgrs/node1/data
        mkdir -p /mgrs/node1/logs
        mkdir -p /mgrs/node1/conf
        mkdir -p /mgrs/node2/data
        mkdir -p /mgrs/node2/logs
        mkdir -p /mgrs/node2/conf
        mkdir -p /mgrs/node3/data
        mkdir -p /mgrs/node3/logs
        mkdir -p /mgrs/node3/conf
}
writeConfig(){
		cp ./mongod.conf $1/conf/
        mongodConfig=$1/conf/mongod.conf
        sed -i "s#nodeName#$1#g" $mongodConfig
        sed -i "s#9927#$2#g" $mongodConfig
}

################# 真正的开始############################
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz
tar -zxvf mongodb-linux-x86_64-4.0.9.tgz
if [ ! -d $mongodbMainUrl ]
        then
        mkdir -p $mongodbMainUrl
fi
#将mongodb源码发放到不同的文件夹:mongodbNodeOne、mongodbNodeTwo、mongodbNodeThree
copyMongodb
if [ ! -d /mgrs ]
       then
       mkdir -p /mgrs
fi

#创建每个节点所需要的文件夹
mkNodedir
#将配置文件写入到不同
for (( i=0;i<${#array_configURL[@]};i++ ))
do
       writeConfig ${array_configURL[i]} ${array_port[i]}
done

#生成加入集群keyfile
openssl rand -base64 756 > ${array_configURL[0]}/conf/access.key
chmod 400 ${array_configURL[0]}/conf/access.key
cp ${array_configURL[0]}/conf/access.key ${array_configURL[1]}/conf/access.key
cp ${array_configURL[0]}/conf/access.key ${array_configURL[2]}/conf/access.key

#三节点均执行  启动mongodb服务
for(( i=0;i<${#array_mongodb_source[@]};i++ ))
do
        echo ${array_mongodb_source[i]}
        echo ${array_configURL[i]}
       ${array_mongodb_source[i]}/bin/mongod -f ${array_configURL[i]}/conf/mongod.conf
done
#进入主节点控制台
#${array_mongodb_source[0]}/bin/mongo 127.0.0.1:${array_port[0]}
#生成集群配置变量
#cfg = {_id: 'myrs', members: []} 
#cfg.members.push({_id: 1, host: $ip':'${array_port[0]}}) #变量中加入节点1
#cfg.members.push({_id: 2, host: $ip':'${array_port[1]}}) #变量中加入节点1
#cfg.members.push({_id: 3, host: $ip':'${array_port[2]}, arbiterOnly: true})  #变量中加入节点3(仲裁节点)
#rs.initiate(cfg)       #根据变量配置集群
#rs.isMaster()  #查看集群是否配置成功
#rs.status()
#使用内置的admin库
#use admin
#db.createUser({user:"root",pwd:"root",roles:[{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"}]})
#db.createUser({user:"suroot",pwd:"suroot",roles:[{role:"clusterAdmin",db:"admin"},{role:"clusterManager",db:"admin"},{role:"clusterMonitor",db:"admin"}]})

猜你喜欢

转载自blog.csdn.net/qq_34934864/article/details/90080232