mongoDB集群安装

概念名词解释

  1. Query Router(mongos) 转发客户端请求到正确分片服务上,多个router分担请求压力
  2. Config Servers 存储分片数据的元数据信息
  3. Shards(Replica set) 存储实际数据

服务规划

集群规划

安装过程

  1. 拉取Ubuntu镜像,选择版本18.04
docker pull ubuntu:18.04
  1. 运行三个Ubuntu主机容器
主机1
 docker run -it --name ubuntu-21 -d ubuntu:18.04
主机2
 docker run -it --name ubuntu-2 -d ubuntu:18.04
主机3
 docker run -it --name ubuntu-3 -d ubuntu:18.04
  1. 分别进入三台容器主机安装mongodb

docker exec -it 容器id  /bin/bash

更新安装源
apt-get update

安装mongodb
apt-get install mongodb

  1. 所有主机,启动configServer
mongod --configsvr --replSet c0 --dbpath ./data/configdb --bind_ip_all --port 27018 >> /dev/null 2>&1
  1. 连接其中任一主机,将configServer 添加同意分组
 mongo --host 172.17.0.4  --port 27018
 
 rs.initiate(
{
_id: "c0",
configsvr: true,
members: [
{ _id : 0, host : "172.17.0.3:27018" },
{ _id : 1, host : "172.17.0.4:27018" },
{ _id : 2, host : "172.17.0.5:27018" }
]})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yMuzO4Ot-1614321155649)(https://img.coder.date/images/mongodb0d867a2055c336e1.png)]

  1. 所有主机,启动shard服务
#创建数据文件夹
mkdir -p ./data/db
mkdir -p ./data/db1

mongod --shardsvr --replSet rs0  --dbpath ./data/db --bind_ip_all --port 27019 >>/dev/null 2>&1 &
mongod --shardsvr --replSet rs1  --dbpath ./data/db1 --bind_ip_all --port 27020 >>/dev/null 2>&1 &
  1. 连接其中主机,将副本集归为同一分组
mongo --host 172.17.0.3 --port 27019
rs.initiate(
{
_id : 'rs0',
members: [
{ _id : 0, host : "172.17.0.3:27019" },
{ _id : 1, host : "172.17.0.4:27019" },
{ _id : 2, host : "172.17.0.5:27019" }
]})


mongo --host 172.17.0.3 --port 27020

rs.initiate(
{
_id : 'rs1',
members: [
{ _id : 0, host : "172.17.0.3:27020" },
{ _id : 1, host : "172.17.0.4:27020" },
{ _id : 2, host : "172.17.0.5:27020" }
]})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-akc5RYEo-1614321155652)(https://img.coder.date/images/mongodb.png)]

  1. 启动路由服务,并添加分片信息
mongos --configdb c0/172.17.0.3:27018,172.17.0.4:27018,172.17.0.5:27018 --port 37017  >>/dev/null 2>&1 &

mongo --host 172.17.0.3 --port 37017

sh.addShard('rs0/172.17.0.3:27019')
sh.addShard('rs0/172.17.0.4:27019')
sh.addShard('rs0/172.17.0.5:27019')
sh.addShard('rs1/172.17.0.3.137:27020’)
sh.addShard('rs1/172.17.0.4.138:27020')
sh.addShard('rs1/172.17.0.5.139:27020')


检查分片状态
db.runCommand({listshards:1})

状态查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QMRaU7g8-1614321155654)(https://img.coder.date/images/mongo.png)]

  1. 测试安装情况
sh.enableSharding(‘persondb’)
sh.shardCollection(“persondb.person”,{_id:”hashed”})
use persondb
for(var i=0;i<10;i++){db.person.insert({name:”aaa”+i});}
if the id(key) is range based :
sh.shardCollection(“persondb.id”,{id:1},true)
# 确认插入结果
db.person.stats()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HswRnSNA-1614321155656)(https://img.coder.date/images/count10.png)]

其他命令

开启平衡

sh.enableBalancing(“persondb.person”)
sh.stopBalancer()
sh.getBalancerState()
sh.startBalancer()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值