自动安装MongoDB Master, Slave, Arbiter脚本
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,发现有人抄袭我的文章,竟然不写出处,想想也挺开心的,还会被抄袭,以前上初中的时候都是抄袭别人的作业。这篇文章我都改动过好多次了,那哥们抄袭的还是之前有点bug的代码。望他看到后,重新抄一遍,免得误人子
千家信息网最后更新 2026年10月31日自动安装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安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
博彦科技互联网金融
互联网科技产业
湖南永感互联网科技有限公司
重生之互联网科技帝国
北京互联网科技公司
嘟嘟瓜互联网科技
互联网科技媒体
融贸通互联网科技
郑州华宇互联网科技
齐家互联网科技有限公司
哈尔滨新华互联网科技
互联网教育科技公司vipkid
宁夏科技产业互联网案例
坤平互联网科技
互联网科技人工智能实验室
互联网科技创新的路径
爱医互联网络科技
互联网科技年终奖
互联网科技收购价值
西安纸贵互联网科技有限公司
互联网扶贫科技
科技信息互联网
互联网 视角下的科技创新
上海亿帐通互联网科技
重庆科技学院互联网
现代互联网科技股
广州燕处互联网科技有限公司
福建互联网展示科技馆设计
互联网科技企业商标注意事项