install_MongoDB

install_MongoDB

#!/usr/bin/bash
rm -rf /root/mongodb-linux-x86_64-3.0.0 mongodb-linux-x86_64-3.0.0.tgz 
rm -rf /usr/local/mongodb
cd $home;
echo "开始下载安装包"
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.0.tgz
tar tf mongodb-linux-x86_64-3.0.0.tgz
if [ $? -eq 0  ];then
	tar -zxvf mongodb-linux-x86_64-3.0.0.tgz;
	if [ ! -d "/usr/local/mongodb/" ];then
		echo "移动文件";
		mv /root/mongodb-linux-x86_64-3.0.0 /usr/local/mongodb;
		mkdir -p /usr/local/mongodb/data /usr/local/mongodb/log;
			if [ $? -eq 0 ];then
				/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/mongodb.log --logappend --port=27017 --fork
				echo "服务已创建"
				echo "请通过/usr/local/mongodb/bin/mongo 进行访问"
			fi
	else
			echo "文件已存在"
			exit
	fi
else
	echo "文件损坏"
	exit
fi
#!/usr/bin/bash
#主要实现以下几个功能。
#1、远程主机推送公钥。
#2、拷贝文件配置mongo.conf,完成副本集群的创建
#3、配置远程主机初始化副本集群功能。
#注意,需要配置mongo从节点可写状态需要在从节点执行rs.slaveOk()命令。
#配置的mongo.conf文件中缩进应以四个空格为前提,二级缩进八个空格,不然会出现配置无法启动服务报yml错误问题
#配置的每个主机的端口不一,脚本暂时为设置port为变量需要改为一直可以全局替换
#expect send 中的"号和:号需要进行转译不然会出现报错。
#默认情况下,从节点是没有读写权限的,可以增加读的权限,但需要进行设置。
#需要登录从节点配置以下参数rs.slaveOk()
#执行后查看数据库 show dbs;不显示报错说明成功
#version v1.0 by gyx
ip='
192.168.98.157
192.168.98.158
192.168.98.159
'
#主节点ip
ip_1=192.168.98.157
#副本节点ip
ip_2=192.168.98.158
#仲裁节点ip
ip_3=192.168.98.159
password=123456
#通用passwd
mongodb_file_name='mongodb-linux-x86_64-4.0.10.tgz'

for a in $ip
do
	ping c1 -w1 $a &>/dev/null
	if [ $? -ne 0 ];then
		echo "$a 主机不通"  > ip.txt
	fi
done


for  i in $ip
do
/usr/bin/expect <<-EOF
spawn ssh-copy-id $i
expect {
	"yes/no" { send "yes\r"; exp_continue }
	"password" { send "$password/r"}
}
EOF
done

for j in $ip
do
	echo "copy fle $i "
	ssh root@$j "
rm -rf /root/$mongodb_file_name
rm -rf /usr/local/mongodb"
	scp $mongodb_file_name root@$j:/root/
ssh root@$j "tar -zxvf /root/$mongodb_file_name 
mv /root/mongodb-linux-x86_64-4.0.10 /usr/local/mongodb
"
done
#创建主节点
ssh root@$ip_1 "
mkdir -p /mongodb/replica_sets/myrs_27017/log
mkdir -p /mongodb/replica_sets/myrs_27017/data/db
cat <<EOF >/mongodb/replica_sets/myrs_27017/mongod.conf
systemLog:
    #MongoDB发送所有日志输出的目标指定为文件
    destination: file
    #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
    path: /mongodb/replica_sets/myrs_27017/log/mongod.log
    #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
    logAppend: true
storage:
    #mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
    dbPath: /mongodb/replica_sets/myrs_27017/data/db
    journal:
        #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
        enabled: true
processManagement:
    #启用在后台运行mongos或mongod进程的守护进程模式。
    fork: true
    #指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
    pidFilePath: /mongodb/replica_sets/myrs_27017/log/mongod.pid
net:
    #服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
    #bindIpAll: true
    #服务实例绑定的IP
    bindIp: localhost,$ip_1
    #bindIp
    #绑定的端口
    port: 27017
replication:
    #副本集的名称
    replSetName: myrs
EOF
/usr/local/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27017/mongod.conf >/root/log.txt
cat <<EOF >/root/mongo_start.sh
#!/usr/bin/bash
/usr/local/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27017/mongod.conf 
EOF
"

#创建副本节点
ssh root@$ip_2 "
mkdir -p /mongodb/replica_sets/myrs_27018/log 
mkdir -p /mongodb/replica_sets/myrs_27018/data/db
cat <<EOF >/mongodb/replica_sets/myrs_27018/mongod.conf
systemLog:
    #MongoDB发送所有日志输出的目标指定为文件
    destination: file
    #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
    path: /mongodb/replica_sets/myrs_27018/log/mongod.log
    #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
    logAppend: true
storage:
    #mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
    dbPath: /mongodb/replica_sets/myrs_27018/data/db
    journal:
        #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
        enabled: true
processManagement:
    #启用在后台运行mongos或mongod进程的守护进程模式。
    fork: true
    #指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
    pidFilePath: /mongodb/replica_sets/myrs_27018/log/mongod.pid
net:
    #服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
    #bindIpAll: true
    #服务实例绑定的IP
    bindIp: localhost,$ip_2
    #bindIp
    #绑定的端口
    port: 27018
replication:
    #副本集的名称
    replSetName: myrs
EOF
/usr/local/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27018/mongod.conf >/root/log.txt
cat <<EOF >/root/mongo_start.sh
#!/usr/bin/bash
/usr/local/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27018/mongod.conf 
EOF
"


#创建仲裁节点
ssh root@$ip_3 "
mkdir -p /mongodb/replica_sets/myrs_27019/log
mkdir -p /mongodb/replica_sets/myrs_27019/data/db
cat <<EOF >/mongodb/replica_sets/myrs_27019/mongod.conf
systemLog:
    #MongoDB发送所有日志输出的目标指定为文件
    destination: file
    #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
    path: /mongodb/replica_sets/myrs_27019/log/mongod.log
    #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
    logAppend: true
storage:
    #mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
    dbPath: /mongodb/replica_sets/myrs_27019/data/db
    journal:
    #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
        enabled: true
processManagement:
    #启用在后台运行mongos或mongod进程的守护进程模式。
    fork: true
    #指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
    pidFilePath: /mongodb/replica_sets/myrs_27019/log/mongod.pid
net:
    #服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
    #bindIpAll: true
    #服务实例绑定的IP
    bindIp: localhost,$ip_3
    #bindIp
    #绑定的端口
    port: 27019
replication:
    #副本集的名称
    replSetName: myrs
EOF
/usr/local/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27019/mongod.conf >/root/log.txt
cat <<EOF >/root/mongo_start.sh
#!/usr/bin/bash
/usr/local/mongodb/bin/mongod -f /mongodb/replica_sets/myrs_27019/mongod.conf
EOF
"
#检查服务
for  g in $ip
do
	ssh root@$g ps -ef|grep mongo
	if [ $? -eq 0 ];then
		echo " $g install success"
	else
		echo "$g install fail"
		echo "服务未启动成功脚本将无法配置mongo副本模式。程序退出。。。"
		exit
	fi
done

#自动配置副本集模式
#"rs.initiate()" 节点初始化
#rs.add(\"192.168.98.158\:27018\" 增加副本节点
#rs.addArb(\"192.168.98.159\:27019\") 增加仲裁节点
/usr/bin/expect <<-EOF  
        spawn ssh root@$ip_1
        expect "#*"
        send "/usr/local/mongodb/bin/mongo --host=$ip_1 --port=27017 \n"
        expect "#*"
        send "rs.initiate() \n"
        expect "#*"
        send "rs.add(\"$ip_2\:27018\") \n"
        expect "#*"
        send "rs.addArb(\"$ip_3\:27019\") \n"
        expect "#*"
        send "exit \n"
        expect eof
EOF

echo "进入mongo主节点输入rs.status() 在配置有刚才配置的三个ip及副本创建成功"
echo "登录命令参照    /usr/local/mongodb/bin/mongo --host=$ip_1 --port=27017"

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注