自动安装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免费版怎么选择服务器
南沙区光纤网络技术开发推荐厂家