千家信息网

自动安装MongoDB Master, Slave, Arbiter脚本

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,发现有人抄袭我的文章,竟然不写出处,想想也挺开心的,还会被抄袭,以前上初中的时候都是抄袭别人的作业。这篇文章我都改动过好多次了,那哥们抄袭的还是之前有点bug的代码。望他看到后,重新抄一遍,免得误人子
千家信息网最后更新 2025年11月07日自动安装MongoDB Master, Slave, Arbiter脚本

发现有人抄袭我的文章,竟然不写出处,想想也挺开心的,还会被抄袭,以前上初中的时候都是抄袭别人的作业。这篇文章我都改动过好多次了,那哥们抄袭的还是之前有点bug的代码。望他看到后,重新抄一遍,免得误人子弟了。



最近有一个新项目需要用到MongoDB的Master,Slave,Arbiter的架构,去官网翻了一下文档,写了一个简陋的脚本。脚本可以在我的github上找到https://github.com/sangrealest。

安装之前确保已经提前设置好dns,或者hosts文件已经设置好。防火墙做好相应的规则,或者关闭防火墙。


首先生成mongodb的证书文件,然后copy到Master, Slave, Arbiter目录下,并添加到配置文件里面。

openss rand -base64 741 >/etc/mongodb.keychmod 600 /etc/mongodb.key
#!/bin/bash#Author:Shanker#set -x#set -o nounsetsource ./mongo_configfunction createConfig(){    role=$1    mongoConfig="./mongod-$role"    if [ ! -f "$mongoConfig" ]    then        echo "dbpath=/var/lib/mongodb-$role" >>$mongoConfig        echo "logpath=/var/log/mongodb-$role/mongodb.log" >>$mongoConfig        echo "logappend=true" >>$mongoConfig        echo "keyFile=$MongoKeyFile" >>$mongoConfig        if [ "$role" == "master" ]        then            echo "port=$MasterMongoPort" >>$mongoConfig        elif [ "$role" == "slave" ]        then            echo "port=$SlaveMongoPort" >>$mongoConfig        elif [ "$role" == "arbiter" ]        then            echo "port=$ArbiterMongoPort" >>$mongoConfig        fi        echo "nohttpinterface=true" >>$mongoConfig        echo "nojournal=true" >>$mongoConfig        echo "replSet=rs0" >>$mongoConfig        cp $mongoConfig /etc/        chmod 644 /etc/$mongoConfig    fi}function installMongoService(){        echo "installing mongoserver"    if [ ! -f "/usr/bin/mongo" ]    then        tar zxvf ./mongodb-linux-x86_64-2.4.9.tgz        cd ./mongodb-linux-x86_64-2.4.9/bin/        cp * /usr/bin        cd ../..    else        echo "mongo server file already exist"    fi    cp mongod-$1.sh /etc/init.d/    chmod 755 /etc/init.d/mongod-$1.sh    /etc/init.d/mongod-$1.sh start    i=1    until ((i=="0"))    do        /bin/cat /var/log/mongodb-$1/mongodb.log | grep "waiting for connection"        i=$?        sleep 3        echo "waiting for mongodb ready"    done    echo "mongodb is ready"    sleep 4}function setupReplSet(){    echo "setup mongodb replicationset"    member="$SlaveName:$SlaveMongoPort"    echo "rs.initiate()" | /usr/bin/mongo $MasterName:$MasterMongoPort    sleep 3    echo "rs.add(\"$count\")" | /usr/bin/mongo $MasterName:$MasterMongoPort    sleep 3    echo "rs.addArb(\"$ArbiterName:$ArbiterMongoPort\")"|/usr/bin/mongo $MasterName:$MasterMongoPort    echo "rs.status()"|/usr/bin/mongo $MasterName:$MasterMongoPort}case $1 in    "master"|"Master")        createConfig "master"        installMongoService "master"        setupReplSet         ;;    "slave"|"Slave")        createConfig "slave"        installMongoService "slave"        ;;    "arbiter"|"Arbiter")        createConfig "arbiter"        installMongoService "arbiter"        ;;    "uninstall"|"Uninstall")        echo "this will remove all mongo files!!!"        if [ -f "/usr/bin/pkill" ]        then             pkill -9 mongod        else            kill -9 `ps aux | grep mongo | grep -v grep | awk -F" " '{print $2}'`        fi        rm -rf /etc/mongo*        rm -rf /etc/init.d/mongo*        rm -rf /var/lib/mongo*        rm -rf /var/log/mongo*        rm -rf /usr/bin/mongo*        rm -rf /var/run/mongo*        ;;    *)        echo "Please inpute $0 Master, slave or ARBITER"        exit 0         ;;esac


$ cat mongo_config SlaveIP='10.128.129.45'SlaveName='Databse-Slave'SlaveMongoPort='27017'ArbiterIP='10.128.129.46'ArbiterName='Database-Arbiter'ArbiterMongoPort='27017'MasterIP='10.128.129.44'MasterName='Database-Master'MasterMongoPort='27017'#Mongos configMongosPort='27015'#Mongo COnfig Server ConfigMongoConfigIP='127.0.0.1'MongoConfigName='Database-Config'MongoConfigDBPath='/var/lib/mongodc'MongoConfiglogpath='/var/log/mongodc'MongoConfigPort='27014'MongoKeyFile='/etc/mongodb.key'



$ cat mongod-master.sh #!/bin/bash#source /etc/mongod-start.confDBLocation='/var/lib/mongodb-master/'LogFolder='/var/log/mongodb-master/'StartProcess='/usr/bin/mongod -f /etc/mongod-master'PidFile='/var/lib/mongodb-master/mongod-master.lock'uid=`id | cut -d\( -f1 | cut -d= -f2`if [ ! -d "$DBLocation" ];thenmkdir $DBLocationfi if [ ! -d "$LogFolder" ];thenmkdir $LogFolderfi if [ ! -f "$PidFile" ];thentouch $PidFilefi PidFileNum=`/bin/cat $PidFile`CurrentPid=`ps aux|grep "$StartProcess"|grep -v "grep"|awk -F" " '{print $2}'`ProcessStart(){        if [ "x$CurrentPid" != "x" ];then                echo "mongod process already runing!! PID is $CurrentPid. "        else                exec $StartProcess &  sleep 2                NewPidNum=`ps aux|grep "$StartProcess"|grep -v "grep"|awk -F" " '{print $2}'`                echo "mongod process is running, pid is $NewPidNum"                #PidFileNum=`/bin/cat $PidFile`                #                #if [ $NewPidNum != $PidFileNum ];then                #       echo "Process is runing, but pid number is not match the pid file."                #       echo "pid number is $NewPidNum"                #fi        fi}ProcessStop(){        if [ "x$CurrentPid" == "x" ];then                echo "mongod process already Stop!! "        else                kill -15 $CurrentPid                sleep 3                NewPidNum=`ps aux|grep "\"$StartProcess\""|grep -v "grep"|awk -F" " '{print $2}'`                if [ "x$NewPidNum" == "x" ];then                        echo "mongod process is stop."                else                        kill -9 $NewPidNum                        if [ "x$NewPidNum" != "x" ];then                                echo "Can't kill mongod process, please call system administrator."                        else                                echo "mongod is stop."                        fi                fi        fi}ProcessStatus(){        if [ "x$CurrentPid" != "x" ];then                echo "mongod process is runing!! PID is $CurrentPid. "        else                echo "mongod not running."        fi}case "$1" in  start)        ProcessStart        ;;  stop)        ProcessStop        ;;  restart)        ProcessStop        CurrentPid=''        ProcessStart        ;;  status)        ProcessStatus        ;;  *)        echo $"Usage: mongod {start|stop|status|restart}"        RETVAL=2        ;;esac


抄袭 文件 脚本 防火墙 防火 简陋 误人子弟 代码 初中 哥们 文档 文章 新项目 时候 架构 目录 篇文章 规则 证书 还是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全的手抄报最简单漂亮 无服务器架构系列 计算机网络技术提取音频 网络安全机制制度 天津智能软件开发要多少钱 软件开发成功案例及其原因分析 dbcp数据库连接频率 山东口碑好的浪潮服务器销售电话 海底世界服务器进不去 苹果服务器推送消息是什么意思 车辆管理系统软件开发实训作业 从数据库导出的csv都是乱码 正规网络技术开发范围 as是那个服务器 深圳市一橙网络技术 软件开发工具自考时间 数据库设计由谁来做 网络安全零容忍概念 怎么判断软件开发好坏 吉林现代软件开发产业 思科网络技术做什么 岳阳快速软件开发哪家好 海阔天空吉他谱软件开发 软件开发税率是13还是6 规格化数据库坐标系优点 软件开发商英文缩写 华图在线服务器崩溃 jdbc多次连接数据库 大话2免费版怎么选择服务器 南沙区光纤网络技术开发推荐厂家
0