自动安装MongoDB Master, Slave, Arbiter脚本
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,发现有人抄袭我的文章,竟然不写出处,想想也挺开心的,还会被抄袭,以前上初中的时候都是抄袭别人的作业。这篇文章我都改动过好多次了,那哥们抄袭的还是之前有点bug的代码。望他看到后,重新抄一遍,免得误人子
千家信息网最后更新 2025年01月20日自动安装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安全错误
数据库的锁怎样保障安全
近两年出现的互联网黑科技
多功能网络技术
郑州软件开发驻场报价
网络安全从业人员能
模仿软件开发
数据库重接
一恒优选服务器异常怎么回事
富士康服务器管理是什么工作
uml属于数据库吗
vs2010数据库编程
网络安全理念技术并行
我的世界服务器账号被封了
张店crm软件开发服务
软件开发者的岗位说明
宝山区个人软件开发诚信为本
数据库是否删除约束
道乐科技互联网
sql数据库日志文件满了
五华服务器建设
光明区网络技术转移五星服务
提高让网络安全
企业微信服务器异常20110
核心数据库调用
asp数据库搜索源文件
ibm服务器 dasd
路洋互联网科技有限公司
中国负责网络安全部门
java定时刷新数据库
考研考网络安全怎么样
以下哪些不属于万方数据库