部署monggodb单节点分片集群

        分片技术,可以满足MongoDB数据量大量增长的需求。当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

上图中主要有如下所述三个主要组件:

Shard:用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障

Config Server:mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。

Query Routers:前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

部署monggodb三节点分片集群

首先修改主机名

192.168.197.136    hostnamectl set-hostname monggodb-1

192.168.197.137    hostnamectl set-hostname monggodb-2

192.168.197.138   hostnamectl set-hostname monggodb-3

安装monggodb(三个节点都做)

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.18.tgz --no-check-certificate

tar -zxvf mongodb-linux-x86_64-rhel70-5.0.18.tgz  解压安装包

mv mongodb-linux-x86_64-rhel70-5.0.18 /data/mongodb  移动到指定目录

配置环境变量

vim /etc/profile    最底部添加

MONGODB_HOME=/data/mongodb

export PATH=$PATH:$MONGODB_HOME/bin

source /etc/profile

创建数据库目录

mkdir /data/mongodb/{data,log,config}   数据存储目录,日志存储目录,confi server目录

部署config server(三台机器都操作)

启动config serve

mongod --bind_ip localhost,192.168.197.136 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

mongod --bind_ip localhost,192.168.197.137 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

mongod --bind_ip localhost,192.168.197.138 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

--configsvr 这个参数指定了该实例是一个配置服务器

--replSet config  这个参数指定了配置服务器的副本集名称为 config

mongo --host 192.168.197.136 --port 27000   登录到136创建config的副本集

rs.initiate( { _id: "config", configsvr: true, members: [ { _id : 0, host : "192.168.197.136:27000" }, { _id : 1, host : "192.168.197.137:27000" }, { _id : 2, host : "192.168.197.138:27000" } ] } )

创建完成后查看一下副本集状态    rs.status()

可以看到stateStr状态栏有1个 PRIMARY角色 和 2个 SECONDARY角色集群创建正常,如果是三个SECONDARY角色可以退出mongo重新登录在查看一下。

启动分片集群实例(三个节点都操作)

136节点操作

mongod --bind_ip localhost,192.168.197.136 --shardsvr --replSet mongodb-1 --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

--shardsvr 这个参数指示 MongoDB 服务器将作为一个分片服务器运行。

mongo --host 192.168.197.136 --port 27027

rs.initiate( { _id: "mongodb-1", members: [{_id:0, host : "192.168.197.136:27027" }]})

137节点操作

mongod --bind_ip localhost,192.168.197.137 --shardsvr --replSet mongodb-2 --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

mongo --host 192.168.197.137 --port 27027

rs.initiate( { _id: "mongodb-2", members: [{_id:0, host : "192.168.197.137:27027" }]})

138节点操作

mongod --bind_ip localhost,192.168.197.138 --shardsvr --replSet mongodb-3 --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

mongo --host 192.168.197.138 --port 27027

rs.initiate( { _id: "mongodb-3", members: [{_id:0, host : "192.168.197.138:27027" }]})

为分片集群启动mongos(在136节点操作

mkdir mongos   创建数据存储目录

vim /data/mongodb/mongos/mongod.conf  创建monggodb的配置文件添加一些参数

net:

  port: 27017 #monggodb使用的端口

  bindIp: 0.0.0.0 #支持任意ipv4地址访问

  ipv6: true #开启ipv6

启动 mongos 指定之前部署的 config 副本集

mongos --configdb config/192.168.197.136:27000,192.168.197.137:27000,192.168.197.138:27000 --config /data/mongodb/mongos/mongod.conf  --logpath /data/mongodb/log/mongos.log --fork --port 27017

连接分片集群  mongo --host 192.168.197.136 --port 27017

将分片添加到集群

sh.addShard( "mongodb-1/192.168.197.136:27027")

sh.addShard( "mongodb-2/192.168.197.137:27027")

sh.addShard( "mongodb-3/192.168.197.138:27027")

如果有多个分片可以重复此步骤

删除分片的命令 sh.removeShard("mongodb-1")

use test

sh.enableSharding("test")    给test库启动分片

sh.shardCollection("test.userid", {_id: "hashed" } )   根据"_id"字段做 hash 分片 

sh.status();     查看分片详情

database._id 表示开启分片的库。

database.primary 表示主 shard。

database.partitioned 表示这个库是否开启分片,true 表示开启。

collections 中表示分片的表。

collections.shardKey 表示分片健。

collections.balancing 为 true 表示平衡。

collections.chunks 数据分布情况。

use test      测试插入数据

for (var i=1; i<=10; i++ ) db.userid.save({userid:i,username:'a'});

插入完数据后到三个节点查看一下数据是否已经分片存储

mongo --host 192.168.197.136 --port 27027

db.the_exam_history_detail_1.find().pretty()  整齐的显示内容

mongo --host 192.168.197.137 --port 27027

mongo --host 192.168.197.138 --port 27027

可以看到输入的数据分别存储到了三个分片当中,到这里我们的单节点分片集群就做好了。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
部署 MongoDB 分片集群,需要按照以下步骤进行操作: 1. 安装 MongoDB:在每个分片服务器和配置服务器上安装 MongoDB。可以从 MongoDB 官方网站(https://www.mongodb.com/try/download/community)下载最新的 MongoDB 版本,并按照官方文档提供的说明进行安装。 2. 配置配置服务器(config server):选择三个服务器作为配置服务器的节点。在每个节点上创建一个配置服务器实例,并将它们配置为副本。详细的配置步骤可以参考 MongoDB 官方文档中的 "Deploy a Config Server Replica Set" 部分。 3. 启动配置服务器副本:启动配置服务器副本,确保副本中的每个节点都正常运行,并且选举了一个主节点。 4. 启动分片服务器(shard server):选择多个服务器作为分片服务器的节点。在每个节点上创建一个 mongod 实例,并将其配置为副本。详细的配置步骤可以参考 MongoDB 官方文档中的 "Deploy a Sharded Cluster" 部分。 5. 向分片集群添加分片:将分片服务器添加到分片集群中。你可以使用 `mongos` 实例连接到任意一个分片服务器,然后使用 `sh.addShard()` 命令将分片服务器添加到集群中。详细的操作步骤可以参考 MongoDB 官方文档中的 "Add Shards to a Cluster" 部分。 6. 定义分片键和路由规则:在集群中定义分片键,并根据分片键的取值范围定义路由规则。这样 `mongos` 实例就能根据分片键将数据路由到正确的分片服务器上。你可以使用 `sh.shardCollection()` 命令来定义分片键和路由规则。详细的操作步骤可以参考 MongoDB 官方文档中的 "Shard a Collection" 部分。 7. 验证和测试:最后,确保整个分片集群正常运行。你可以插入测试数据并查询数据,以确保数据正确地分布在不同的分片服务器上。 请注意,在部署 MongoDB 分片集群时,需要仔细阅读 MongoDB 官方文档并按照其中的说明进行操作。这样可以确保正确配置和部署分片集群,并获得最佳性能和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值