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"