Mongodb 一口气安装执行脚本

主要参考:MongoDB 4.4.4分片集群配置全流程_richie696的专栏-CSDN博客_mongodb 分片集群配置

前面虽然参考了很多文档,但真正配置起来,踩坑真是无数

这边将conf配置文件和安装脚本分享一下,减少其他人继续踩坑

链接:https://pan.baidu.com/s/1akpNNfiiceyTXP7BVA_qfw 
提取码:va0c

在第一台服务器上生成一个key文件后,然后拷贝到各台服务器目录中去使用

openssl rand -base64 756 > /opt/mongodb/sharding-sync-key.file
chmod 600 /opt/mongodb/sharding-sync-key.file

#-----------------------------------------<1>在三台服务器上初始化配置-----------------------------------------#
#!/bin/bash
MONGO_DAT_HOME=/opt/mongodb
MONGO_APP_HOME=/opt/mongodb-4.4.4

#强制杀掉启动的进程
ps aux | grep /opt/mongodb |  awk '{print $2}' | xargs kill -9

#删除mongodb数据
sudo rm -r $MONGO_DAT_HOME/config
sudo rm -r $MONGO_DAT_HOME/data
sudo rm -r $MONGO_DAT_HOME/logs

#创建目录
sudo mkdir -p $MONGO_APP_HOME
sudo mkdir -p $MONGO_DAT_HOME/conf
sudo mkdir -p $MONGO_DAT_HOME/config
sudo mkdir -p $MONGO_DAT_HOME/data/27017
sudo mkdir -p $MONGO_DAT_HOME/data/27018
sudo mkdir -p $MONGO_DAT_HOME/data/27019
sudo mkdir -p $MONGO_DAT_HOME/logs

#调整各个文件和目录的文件权限
chmod 755 $MONGO_APP_HOME/bin/*
chmod 755 $MONGO_DAT_HOME/conf/*
chmod 600 $MONGO_DAT_HOME/sharding-sync-key.file

#将各conf文件内容中的authorization设置为disable
cd $MONGO_DAT_HOME/conf
find -name '*.conf' | xargs perl -pi -e 's|authorization: enabled|authorization: disabled|g'


#运行分片实例、配置实例
$MONGO_APP_HOME/bin/mongod --config=$MONGO_DAT_HOME/conf/mongo-shard-27017.conf --fork 
$MONGO_APP_HOME/bin/mongod --config=$MONGO_DAT_HOME/conf/mongo-shard-27018.conf --fork 
$MONGO_APP_HOME/bin/mongod --config=$MONGO_DAT_HOME/conf/mongo-shard-27019.conf --fork 
$MONGO_APP_HOME/bin/mongod --config=$MONGO_DAT_HOME/conf/mongo-config-27010.conf --fork 

# 在三台服务器上:连接默认的primary分片节点(27017)
$MONGO_APP_HOME/bin/mongo

#-----------------------------------------<1>在三台服务器上初始化配置-----------------------------------------#


#-----------------------------------------<2>在三台服务器上进行分片配置---------------------------------------#
#说明:告知各台服务器的第一个shard,整个shard集合的各shard所在位置,然后各shard会自动协商

#在各服务器进行分片上配置:配置内容见参考
#分别server-1节点的的配置
#>var config = {"_id":"shard1","protocolVersion":1,"members":[{"_id":1,"host":"192.168.88.129:27017","priority":10},{"_id":2,"host":"192.168.88.129:27018"},{"_id":3,"host":"192.168.88.129:27019","arbiterOnly":true}]}
#分别server-2节点的的配置
#>var config = {"_id":"shard2","protocolVersion":1,"members":[{"_id":1,"host":"192.168.88.130:27017","priority":10},{"_id":2,"host":"192.168.88.130:27018"},{"_id":3,"host":"192.168.88.130:27019","arbiterOnly":true}]}
#分别server-3节点的的配置
#>var config = {"_id":"shard3","protocolVersion":1,"members":[{"_id":1,"host":"192.168.88.131:27017","priority":10},{"_id":2,"host":"192.168.88.131:27018"},{"_id":3,"host":"192.168.88.131:27019","arbiterOnly":true}]}

#>rs.initiate(config)
#>rs.status()
#>exit
#-----------------------------------------<2>在三台服务器上进行分片配置---------------------------------------#


#-----------------------------------------<3>在第一台服务器上进行配置服务器配置-------------------------------#
#说明:告知第一台服务器的congfig,整个集群的各congfig所在位置,然后各congfig会自动协商

#在第一台服务器上:连接config节点
#$MONGO_APP_HOME/bin/mongo --port 27010
#配置内容见参考
#>var config = {"_id":"configsvr","members":[{"_id":1,"host":"192.168.88.129:27010","priority":10},{"_id":2,"host":"192.168.88.130:27010"},{"_id":3,"host":"192.168.88.131:27010"}]}
#>rs.initiate(config)
#>rs.status()
#>exit
#-----------------------------------------<3>在第一台服务器上进行配置服务器配置-------------------------------#

#-----------------------------------------<4>在第一台服务器上进行路由服务器配置-------------------------------#
#说明:告知第一台服务器的router,整个集群的各shard1集合分布在哪些位置,然后各congfig会跟Shard集自动协商

#在第一台服务器上:运行路由服务
#$MONGO_APP_HOME/bin/mongos --config=$MONGO_DAT_HOME/conf/mongo-router-27000.conf --fork 

#在第一台服务器上:连接router节点
#$MONGO_APP_HOME/bin/mongo --port 27000
#配置内容见参考
#> sh.addShard("shard1/192.168.88.129:27017,192.168.88.129:27018,192.168.88.129:27019");
#> sh.addShard("shard2/192.168.88.130:27017,192.168.88.130:27018,192.168.88.130:27019");
#> sh.addShard("shard3/192.168.88.131:27017,192.168.88.131:27018,192.168.88.131:27019");

#创建root用户
#>use admin
#>db.createUser({user:"root",pwd:passwordPrompt(),roles:[{role:"root",db:"admin"},{role:"clusterAdmin",db:"admin"}]})
#>db.auth('root','12345678');
#-----------------------------------------<4>在第一台服务器上进行路由服务器配置-------------------------------#

#-----------------------------------------<5>在三台服务器上安全关闭各进程-------------------------------------#
#3个服务器上,安全退出各进程
ps aux | grep /opt/mongodb |  awk '{print $2}' | xargs kill 
#不断使用该命令,检查是否退出完毕,进程退出完毕可能要1分钟
ps -aux|grep mongo
#-----------------------------------------<5>在三台服务器上安全关闭各进程-------------------------------------#

#-----------------------------------------<6>在三台服务器上打开权限配置开关-----------------------------------#
#说明:修改为权限工作方式,各服务器/各shard/config,会按权限方式进行彼此协商。

#在3个服务器上,打开权限配置开关
cd $MONGO_DAT_HOME/conf
find -name '*.conf' | xargs perl -pi -e 's|authorization: disabled|authorization: enabled|g'

#在3个服务器要同时启动分片/配置/路由服务
#注意:3个服务器之间,它们之间是会互相通信的,确定彼此是否启动完毕,才会进行下一条命令,否则你以为是卡死了
# 前面总以为程序死掉了,原来是互相检查,真是无力吐槽
$MONGO_APP_HOME/bin/mongod --config=$MONGO_DAT_HOME/conf/mongo-config-27010.conf --fork 
$MONGO_APP_HOME/bin/mongod --config=$MONGO_DAT_HOME/conf/mongo-shard-27017.conf --fork 
$MONGO_APP_HOME/bin/mongod --config=$MONGO_DAT_HOME/conf/mongo-shard-27018.conf --fork 
$MONGO_APP_HOME/bin/mongod --config=$MONGO_DAT_HOME/conf/mongo-shard-27019.conf --fork 
$MONGO_APP_HOME/bin/mongos --config=$MONGO_DAT_HOME/conf/mongo-router-27000.conf --fork 

ps -aux|grep mongo

#-----------------------------------------<6>在三台服务器上打开权限配置开关-----------------------------------#

#-----------------------------------------<7>在第一台服务器上测试一下各种操作吧-------------------------------#
#从路由服务登录
$MONGO_APP_HOME/bin/mongo --port 27000

#切换到admin数据库
>use admin
#输入账号/密码
>db.auth('root','12345678');
#创建一个数据库(分片)demo
>sh.enableSharding("demo")
#在demo数据库(分片)中创建一个数据表(集合)account
>sh.shardCollection("demo.account", {"name": "hashed"})
#切换数据库demo
>use demo
#account表插入一条记录
>db.account.insert({"name":"菜鸟教程"})
#在account表中查询数据
>db.getCollection('account').find({})
#-----------------------------------------<7>在第一台服务器上测试一下各种操作吧-------------------------------#