#!/bin/bash
processExist=`ps aux|grep mongo|grep -v "grep" `
MONGODB_PATH="/opt/mongodb/mongos"
MONGODB_DATA="/opt/mongodb"
mongod_lock=$MONGODB_DATA/data/configsvr/mongod.lock
shard1_lock=$MONGODB_DATA/data/shard1/mongod.lock
shard2_lock=$MONGODB_DATA/data/shard2/mongod.lock
shard3_lock=$MONGODB_DATA/data/shard3/mongod.lock
echo "------------------------关闭mongodb的所有进程start-------------------------"
mongoProesses=` ps -A |grep "mongo"| awk '{if($0!~/mongodb-run/) print $1}' `
for proess in ${mongoProesses}; do
kill -9 $proess
done
echo "------------------------关闭mongodb的所有进程end-------------------------"
echo "----------------删除mongodb异常关闭的锁文件start-------------------------"
if [ -f "$mongod_lock" ]; then
rm -rf $mongod_lock
fi
if [ -f "$shard1_lock" ]; then
rm -rf $shard1_lock
fi
if [ -f "$shard2_lock" ]; then
rm -rf $shard2_lock
fi
if [ -f "$shard3_lock" ]; then
rm -rf $shard3_lock
fi
echo "----------------删除mongodb异常关闭的锁文件end-------------------------"
#以下配置我参考了
http://www.csdn.net/article/2014-04-24/2819492-2819221-build-high-avialable-mongodb-cluster-part-2/2#0-tsina-1-78606-397232819ff9a47a7b7e80a40613cfe1
echo "-------------------------configsvr------------------------------"
$MONGODB_PATH/bin/mongod --configsvr --port 21000 --dbpath $MONGODB_DATA/data/configsvr --logpath $MONGODB_DATA/log/configsvr/configsvr.log --fork
echo "-------------------------mongos------------------------------"
$MONGODB_PATH/bin/mongos -configdb 10.100.112.155:21000 -port 20000 -logpath $MONGODB_DATA/log/mongos.log -logappend -fork
echo "-------------------------shard1------------------------------"
$MONGODB_PATH/bin/mongod --shardsvr --replSet shard1 --port 22001 --dbpath $MONGODB_DATA/data/shard1 --logpath $MONGODB_DATA/log/shard1/shard1.log --fork --nojournal --oplogSize 10
echo "-------------------------shard2------------------------------"
$MONGODB_PATH/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath $MONGODB_DATA/data/shard2 --logpath $MONGODB_DATA/log/shard2/shard2.log --fork --nojournal --oplogSize 10
echo "-------------------------shard3------------------------------"
$MONGODB_PATH/bin/mongod --shardsvr --replSet shard3 --port 22003 --dbpath $MONGODB_DATA/data/shard3 --logpath $MONGODB_DATA/log/shard3/shard3.log --fork --nojournal --oplogSize 10
echo "-------------------------end------------------------------"
$MONGODB_PATH/bin/mongo 127.0.0.1:22001 <<EOF
use admin
config = { _id:"shard1", members:[ {_id:0,host:"10.100.112.155:22001"} ] };
rs.initiate(config);
EOF
$MONGODB_PATH/bin/mongo 127.0.0.1:22002 <<EOF
use admin
config = { _id:"shard2", members:[ {_id:0,host:"10.100.112.155:22002"} ] };
rs.initiate(config);
EOF
$MONGODB_PATH/bin/mongo 127.0.0.1:22003 <<EOF
use admin
config = { _id:"shard3", members:[ {_id:0,host:"10.100.112.155:22003"} ] };
rs.initiate(config);
EOF
$MONGODB_PATH/bin/mongo 127.0.0.1:20000 <<EOF
use admin
db.runCommand( { addshard : "shard1/10.100.112.155:22001"});
db.runCommand( { addshard : "shard1/10.100.112.155:22002"});
db.runCommand( { addshard : "shard1/10.100.112.155:22003"});
db.runCommand( { listshards : 1 } );
EOF
#这两个配置是一定要的,不然插入数据时,数据只会到shard1,这些业务逻辑操作,可以写另外一个shell文件导入。
#最后要分片的数据库一定要执行
db.runCommand( { enablesharding :"testdb"});
#指定数据库里需要分片的集合和片键
#db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )
#hashed:均匀分布数据
db.runCommand( { shardcollection : "testdb.table1",key : {id:'hashed' } } )
#再介绍工作时使用的mongodb可视化工具:MongoVUE,可以分别连进去20000,22001,22002,22003查看配置,插入切片数据的分布。
分享到:
相关推荐
在K8s集群中部署的MongoDB Sharded集群 用于Shard和Config服务器的Pod的部署: 此处,分片副本集存储实际数据或块(文档集合),而配置服务器副本集存储mongodb集群的元数据和配置信息。 在k8s集群中,我们创建了...
- **步骤3**:启动MongoDB服务。 ```bash /etc/init.d/mongodb_master start /etc/init.d/mongodb_slave start /etc/init.d/mongodb_arbiter start ``` **2. Mongod创建单个分片的副本集** 接下来需要配置一...
MongoDB 集群部署是实现高可用性和可扩展性的关键步骤,特别是在处理大量数据时。MongoDB 提供了一种名为分片集群(Sharding Cluster)的架构,它允许通过水平扩展来处理海量数据,避免单点故障,并提供数据冗余。 ...
- **路由(mongos)**:应用程序通过它访问MongoDB集群。 - **配置服务器(config server)**:存储数据库元信息,并与mongos同步。 - **分片(shard)**:存储实际数据的服务器。 - **副本集**:为分片提供高可用性...
1. **Mongo进程**(mongo):这是MongoDB的shell客户端,用户可以通过它与集群交互,执行各种数据库操作。 2. **Mongos进程**(mongos):作为路由进程,mongos是客户端与数据存储之间的桥梁。它接收客户端的请求,...
kubernetes-mongodb分片 在kubernetes上部署mongodb分片集群。... kubectl用于确定集群中的节点数,提供的shell脚本src/generate.sh为每个节点创建一个kubernetes yaml文件以及必要的js配置脚本。 最后,通过执行
MongoDB 是一个高性能、开源、无模式的分布式文档数据库,被广泛用于开发现代Web和移动应用程序,特别是需要处理大量实时数据的应用。MongoDB 集群的搭建是提高其可用性和扩展性的关键步骤,可以实现数据的高可用性...
5. **设置开机启动**:使用`sudo systemctl enable mongod`命令使MongoDB在系统启动时自动启动。 6. **验证安装**:运行`mongo`命令进入MongoDB shell,然后执行`db.runCommand({connectionStatus : 1})`来检查...
在MongoDB中,分片允许我们将数据分散到多个物理节点上,每个节点称为一个分片(Shard)。这有助于水平扩展数据库,提高读写性能,同时通过负载均衡降低单个节点的压力。 配置MongoDB分片集群主要包括以下几个步骤...
MongoDB 是一个高性能、分布式文档型数据库,常用于构建可扩展的应用程序。本文将详细介绍如何进行MongoDB的一键化部署,特别关注`autoClusterIndex.sh`脚本在配置集群过程中的作用。 首先,MongoDB的节点分配规划...
4. **配置Sharding**:在MongoDB shell中,连接到`mongos`,然后添加Shard节点到集群,并启用分片功能。这通常包括向集群注册Shard Server,然后选择一个集合并指定分片键。 分片集群的配置完成后,就可以开始使用...
`shell` 目录下的 `singleStartUp.sh` 脚本通常包含启动 MongoDB 服务的命令,这里的 Path 指向 MongoDB 的安装位置。 接下来,开始安装 MMS 监控工具。下载并解压对应版本的 MMS 包(在这个例子中是 4.0.5.50245)...
在上述配置方案中,我们看到一个由三个服务器组成的MongoDB集群,其中包含了两个分片(shard1和shard2)和一个配置服务器(config server),以及路由服务器(mongos)。每个分片都是一个副本集,这样既能实现数据...
- **Config Server**: 用于存储分片集群的元数据,启动`mongod`进程时加上`--configsvr`参数。若不是独立服务器,应指定独立的`--dbpath`。 - **Mongos Router**: 负责路由查询,连接客户端和分片,启动`mongos`时...
Shard节点负责存储实际数据,Config Server负责存储集群的元数据,Mongos Server作为路由器,负责将客户端的请求路由到正确的Shard节点上。在本例中,我们将配置三个节点:192.168.100.247和192.168.100.213作为...
在Linux环境下,特别是RHEL 7.0(Red Hat Enterprise Linux 7.0)系统上安装MongoDB 4.2.18版本,是为构建高效能的数据库集群做准备。以下是对MongoDB 4.2.18在RHEL 7.0上安装及配置分片和副本集的详细过程。 1. **...
分片通过Shard Key来分配数据,可以根据业务需求动态调整分片策略,构建大规模数据库集群。 #### 十、数据库基本操作 包括增(Insert)、查(Query)、删(Remove)、改(Update)等操作,MongoDB提供了丰富的API...