#!/bin/bash # #*************************************************************************** # Author: liwanggui # Email: liwanggui@163.com # Date: 2021-09-30 # FileName: mongodb.sh # Description: This is a test script # Copyright (C): 2021 All rights reserved #*************************************************************************** # SourceDir="/usr/local/src" InstallDir="/usr/local" MongoDownloadUrl="https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.23.tgz" MongoPkgName=$(basename "$MongoDownloadUrl") MongoName="${MongoPkgName%.tgz}" MongoPort=27017 # 分片 read -p "Do you want to configure a sharded cluster? [y/N] " -n 1 -r IsConfig echo if [[ "${IsConfig}" == "y" ]] || [[ "${IsConfig}" == "Y" ]]; then echo "Please select the role of the sharded cluster" select clusterRole in shardsvr configsvr do if [[ "${clusterRole}" ]]; then break fi done read -p "Please specify a replication set name:" -r replSetName else # 复制集 read -p "Do you want to configure a replication set? [y/N] " -n 1 -r IsConfig echo if [[ "${IsConfig}" == "y" ]] || [[ "${IsConfig}" == "Y" ]]; then read -p "Please specify a replication set name:" -r replSetName fi unset IsConfig fi # 错误检测 if [[ "$clusterRole" == "configsvr" ]] && [[ $replSetName != "configReplSet" ]]; then echo "The name of the mongo config replication set can only be configReplSet" echo "Set the name of the replication set to configReplSet" replSetName="configReplSet" fi if [[ "$clusterRole" == "shardsvr" ]] && [[ $replSetName == "configReplSet" ]]; then echo "The name of the shard replication set cannot be configured as configReplSet" echo "Please reset." exit fi ## 获取本地网卡 ip echo "Please select your local network interface: " select inter in $(sed -n '3,$p' /proc/net/dev | awk -F':' '{print $1}' | grep -v 'lo'); do if [[ "${inter}" ]]; then break fi done lanIP=$(ip addr show "${inter}" | grep "${inter}\$" | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -n1) echo "${inter}: $lanIP" ## 下载 MongoDB cd "$SourceDir" || exit if [[ ! -f "$MongoPkgName" ]]; then curl -o "$MongoPkgName" "$MongoDownloadUrl" fi ## 安装 if [[ ! -d "$(readlink -f ${InstallDir}/mongodb)" ]]; then tar xzf "$MongoPkgName" -C "$InstallDir" cd "$InstallDir" || exit ln -sfn "$MongoName" mongodb ln -s "${InstallDir}/mongodb/bin/*" /usr/local/bin/ fi ## 创建 mongod 用户 if ! /usr/bin/id -g mongod &>/dev/null; then /usr/sbin/groupadd -r mongod fi if ! /usr/bin/id mongod &>/dev/null; then /usr/sbin/useradd -M -r -g mongod -d /data/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 fi ## 创建相应目录 mkdir -p /etc/mongo mkdir -p /var/log/mongodb mkdir -p /var/run/mongodb mkdir -p /data/mongo/mongod chown -R mongod.mongod /var/log/mongodb chown -R mongod.mongod /var/run/mongodb chown -R mongod.mongod /data/mongo ## 生成 mongod 配置文件 cat >/etc/mongo/mongod.conf</etc/mongo/mongod.conf</etc/mongo/mongod.conf</etc/mongo/mongod.key< /usr/lib/systemd/system/mongod.service <