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

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

#!/bin/bash
#Author:Shanker
#Time:2016/03/04

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 config
MongosPort=‘27015‘
#Mongo COnfig Server Config
MongoConfigIP=‘127.0.0.1‘
MongoConfigName=‘Database-Config‘
MongoConfigDBPath=‘/var/lib/mongodc‘
MongoConfiglogpath=‘/var/log/mongodc‘
MongoConfigPort=‘27014‘

function createConfig(){
#    read -p "please inpute role name(master/slave/arbiter)" role
    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
        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 "replSet = rs0" >>$mongoConfig
        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"
    case $1 in
        master|Master|MASTER)
            member=("$MasterName:$MasterMongoPort" "$SlaveName:$SlaveMongoPort")
            echo "rs.initiate()" | /usr/bin/mongo $MasterName:$MasterMongoPort
            sleep 3
            for count in ${member[@]}
            do
                echo "rs.add(\"$count\")" | /usr/bin/mongo $MasterName:$MasterMongoPort
                sleep 3
            done
            echo "rs.addArb(\"$ArbiterName:$ArbiterMongoPort\")"|/usr/bin/mongo $MasterName:$MasterMongoPort
            echo "rs.status()"|/usr/bin/mongo $MasterName:$MasterMongoPort
        ;;
        
        *)
        exit 0
        ;;
    esac
}
case $1 in
    master|Master|MASTER)
        createConfig "master"
        installMongoService "master"
        setupReplSet "master"
    ;;
    slave|Slave|SLAVE)
        createConfig "slave"
        installMongoService "slave"
        setupReplSet "slave"
    ;;
    arbiter|Arbiter|ARBITER)
        createConfig "arbiter"
        installMongoService "arbiter"
        setupReplSet "arbiter"
    ;;

    all|All|ALL)
        #Install Slave
        createConfig "slave"
        installMongoService "slave"
        setupReplSet "slave"
        #install Arbiter
        createConfig "arbiter"
        installMongoService "arbiter"
        setupReplSet "arbiter"
        #Install Master
        createConfig "master"
        installMongoService "master"
        setupReplSet "master"
    ;;
    uninstall|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}‘`
            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*
        fi
    ;;
    *)
        echo "Please inpute $0 Master, slave or ARBITER"
        exit 0
    ;;
    esac
时间: 2024-10-12 13:02:43

自动安装MongoDB Master, Slave, Arbiter脚本的相关文章

全自动安装mongoDB数据库的shell脚本

最近在研究mongoDB数据库,写了个全自动安装mongoDB数据库的shell脚本,仅供参考,欢迎拍砖,内容如下: #!/bin/bash # shell的执行选项: # -n 只读取shell脚本,但不实际执行 # -x 进入跟踪方式,显示所执行的每一条命令 # -c "string" 从strings中读取命令 # 下载目录 downloadsDir=/root/Downloads # 安装目录 appDir=/usr/local/mongodb # 判断备份目录是否存在,不存时

[nosql]通过YUM库自动安装Mongodb

1.1查看操作系统版本 1.2验证当前yum库是否包含mongodb 1.3配置包含mongodb的yum源 1.4再次验证YUM库中的mongodb 1.5 yum库安装mongodb 为方便观察,我们把上面图片放大: 在此输入y: 从上面的图中可以看到下载的时候报出了[Errno 4] Socket Error: timed out,我们把图片放大: 上图报出错误是由于我们的网络异常,导致下载终结: 我们再次执行安装:yum install mongo-10gen-server 从上图中可到

Ubuntu 14.04 下自动安装mongodb shell 脚本

vim mongodb_install.sh #!/bin/bash cd /opt/ echo "Download mongdb software..." wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.0.4.tgz echo " mongdb software..." tar -zxf mongodb-linux*.tgz mkdir software mv mon

一个自动安装LNMP的简洁Shell脚本

此脚本在生产服务器上使用了一年多,本脚本崇尚简单唯美,只需要一个脚本就可以在任何一台有网络的服务器上自动配置LNMP.本脚本会在脚本执行目录下,建packages目录用于存放LNMP所需要的软件.大家安装完可以删除该目录. 使用方法:1.把shell脚本的内容保存为nginx_php2.root权限下运行:chmod u+x nginx_php; ./nginx_php init; ./nginx_php ins_mysql-server; ./nginx_php ins_mysql-clien

自动安装Zabbix Agent的linux 脚本

安装Zabbix代理的脚本: #!/bin/bash #the zabbix path you want to install PREFIX="/usr/local/zabbix"  ConfigFile="/etc/zabbix/zabbix_agentd.conf" # List of comma delimited IP addresses (or hostnames) of Zabbix servers. Server="serverName&qu

一个自动安装lnmp环境的shell脚本

#/bin/bash #定义nginx源码包版本,脚本会根据版本名称和后缀检查文件是否在当前目录如果你需要安装不同版本的nginx可以修改这两个变量 nginx_version=nginx-1.8.0 format1=tar.gz #定义php-fpm安装包的文件名,如果你需要安装其他版本可以更改这个变量 php_fpm_package_name=php-fpm-5.4.16-36.el7_1.x86_64.rpm #判断系统语言是不是中文是返回0不是返回1 language(){ echo $

自动安装zabbix agent的shell脚本

#!/bin/bash #install the zabbix agent #Create by ShiYong id zabbix &> /dev/null || useradd -s /sbin/nologin zabbix mkdir /etc/zabbix /var/log/zabbix chown zabbix.zabbix /var/log/zabbix/ tar zxf zabbix-2.0.12.tar.gz -C /usr/src/ cd /usr/src/zabbix-2

自动安装keepalived、inotify-tools与检测

下面是我写的在linux5.6下自动安装keepalived.inotify-tools的脚本文件,里面添加了检测功能,脚本名称取名为task_install.sh,keepalived的版本为keepalived-1.1.20.tar.gz,inotify-tools的版本为inotify-tools-3.14.tar.gz.下面是脚本源文件: #!/bin/bash touch /etc/yum.repos.d/dvd.repo echo "[cd]" > /etc/yum.

如何在linux平台上安装redis(附自动安装脚本)

1.Redis的简单介绍 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这被称为"半持久化模式");也可以把每一次数据变化都写到一个append onlyfile(aof)里