Mongodb集群搭建(副本集)

#!/bin/bash
echo "请确保文件"mongodb-linux-x86_64-rhel70-3.6.23.tgz"已上传到/root目录"
read -p "请根据实际数据挂载盘输入mongodb安装的主目录(建议/data):" maindir
ip addr
read -p "请输入当前服务器的ip:" ip
read -p "请输入端口号(默认端口是27017): " port
echo "---3台机均需执行该脚本,下面进行mongodb副本集1主2从搭建---"
if [ -f /root/mongodb-linux-x86_64-rhel70-3.6.23.tgz ];then
mkdir $maindir
tar -xvf mongodb-linux-x86_64-rhel70-3.6.23.tgz -C $maindir
cd $maindir
mv mongodb-linux-x86_64-rhel70-3.6.23 mongodb
useradd mongodb
mkdir -pv $maindir/mongodb/{log,etc,data,pid}
cat >> $maindir/mongodb/etc/mongodb_$port.conf <<EOF
logpath=$maindir/mongodb/log/mongodb_$port.log 	#跟端口保持一致
pidfilepath=$maindir/mongodb/pid/mongodb_$port.pid
logappend=true
bind_ip=$ip  #不同节点监听的IP需要修改
port=$port
fork=true   #守护进程的方式运行
replSet=osmongodb
dbpath=$maindir/mongodb/data/
oplogSize=10000
noprealloc=true  #禁用预分配的数据文件
shardsvr=true   #分片
directoryperdb=true #数据目录存储模式,每个数据库的文件存储在DBPATH指定目录的不同的文件夹中
#auth=true
#keyFile=$maindir/mongodb/etc/keyfile
EOF
openssl rand -base64 666 > $maindir/mongodb/etc/keyfile
chmod 600 $maindir/mongodb/etc/keyfile
chown -R mongodb.mongodb $maindir/mongodb/
su - mongodb <<EOF
$maindir/mongodb/bin/mongod -f $maindir/mongodb/etc/mongodb_$port.conf;
exit;
EOF
else
echo "请把相应的包上传到/root目录,再进行下一步!"
exit 0
fi
cat > /etc/profile.d/mongo.sh <<EOF
PATH=\$PATH:$maindir/mongodb/bin
export PATH
EOF
source /etc/profile.d/mongo.sh
echo "集群主节点和副本节点执行完脚本后需要进行如下初始化操作 主节点操作:"
echo "$maindir/mongodb/bin/mongo --host 主节点IP --port 27017 " 
echo "config = {_id:'osmongodb',members: [{_id: 0, host: '主机点IP:27017'},{_id: 1, host:'从节点1IP:27017'},{_id: 2, host:'从节点2IP:27017'}]} 
      rs.initiate(config) #初始化副本集(若执行失败可以先注释配置文件"auth=true,keyFile=$maindir/mongodb/etc/keyfile这两行,等初始化成功并配置好admin用户后再打开即可实现账号密码认证功能)"
      rs.status() #查看副本集状态  
      注:从节点需要查询数据需执行:rs.secondaryOk()"
  


echo "创建管理用户在主节点上操作
$maindir/mongodb/bin/mongo --host 主节点IP --port 27017
use admin
admin.createUser(
      {
        user: "root",
        pwd: "h6McjSIHR*^y30Whd",
        roles: [ { role: "root", db: "admin" } ]
      }
)"
use admin
db.createUser(
  {
    user: "app",
    pwd: "h6McjSIHR*^y30Whd",
    roles: [ { role: "readWriteAnyDatabase", db: "admin" }]
  }
)

echo "命令关闭 $maindir/mongodb/bin/mongod --shutdown --dbpath $maindir/mongodb/data/"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值