目录

【记录】使用 Docker 搭建 MongoDB 分布

创建docker网络

bash 复制代码
docker network create mongo_cluster_net
bash 复制代码
docker pull mongo:3.6

https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-enterprise-with-docker/

https://www.mongodb.com/zh-cn/docs/manual/reference/configuration-file-settings-command-line-options-mapping/#std-label-conf-file-command-line-mapping

name port1 port2 port3
shard1 27001 28001 29001
shard2 27002 28002 29002
shard3 27012 28012 29012
configserver 27003 28003 29003
mongos 27004 - -
bash 复制代码
su
bash 复制代码
mkdir -p /mnt/mongo/data/
mkdir -p /mnt/mongo/log/
bash 复制代码
ll /mnt/mongo

期间失败可能会用到

停止全部容器

bash 复制代码
docker stop $(docker ps -q)

删除全部容器

bash 复制代码
docker container prune
name port1 port2 port3
shard1 27001 28001 29001
bash 复制代码
docker run -d -p 27001:27018 \
-v /mnt/mongo/data/shard10/:/data/db/ \
-v /mnt/mongo/log/shard10/:/data/configdb/ \
--network mongo_cluster_net \
--name shard10 mongo:3.6 \
mongod --shardsvr --replSet shard1 --logpath=/data/configdb/shard1.log

docker run -d -p 28001:27018 \
-v /mnt/mongo/data/shard11/:/data/db/ \
-v /mnt/mongo/log/shard11/:/data/configdb/ \
--network mongo_cluster_net \
--name shard11 mongo:3.6 \
mongod --shardsvr --replSet shard1 --logpath=/data/configdb/shard1.log

docker run -d -p 29001:27018 \
-v /mnt/mongo/data/shard12/:/data/db/ \
-v /mnt/mongo/log/shard12/:/data/configdb/ \
--network mongo_cluster_net \
--name shard12 mongo:3.6 \
mongod --shardsvr --replSet shard1 --logpath=/data/configdb/shard1.log
name port1 port2 port3
shard2 27002 28002 29002
bash 复制代码
docker run -d -p 27002:27018 \
-v /mnt/mongo/data/shard20/:/data/db/ \
-v /mnt/mongo/log/shard20/:/data/configdb/ \
--network mongo_cluster_net \
--name shard20 mongo:3.6 \
mongod --shardsvr --replSet shard2 --logpath=/data/configdb/shard2.log

docker run -d -p 28002:27018 \
-v /mnt/mongo/data/shard21/:/data/db/ \
-v /mnt/mongo/log/shard21/:/data/configdb/ \
--network mongo_cluster_net \
--name shard21 mongo:3.6 \
mongod --shardsvr --replSet shard2 --logpath=/data/configdb/shard2.log

docker run -d -p 29002:27018 \
-v /mnt/mongo/data/shard22/:/data/db/ \
-v /mnt/mongo/log/shard22/:/data/configdb/ \
--network mongo_cluster_net \
--name shard22 mongo:3.6 \
mongod --shardsvr --replSet shard2 --logpath=/data/configdb/shard2.log
name port1 port2 port3
shard3 27012 28012 29012
bash 复制代码
docker run -d -p 27012:27018 \
-v /mnt/mongo/data/shard30/:/data/db/ \
-v /mnt/mongo/log/shard30/:/data/configdb/ \
--network mongo_cluster_net \
--name shard30 mongo:3.6 \
mongod --shardsvr --replSet shard3 --logpath=/data/configdb/shard3.log

docker run -d -p 28012:27018 \
-v /mnt/mongo/data/shard31/:/data/db/ \
-v /mnt/mongo/log/shard31/:/data/configdb/ \
--network mongo_cluster_net \
--name shard31 mongo:3.6 \
mongod --shardsvr --replSet shard3 --logpath=/data/configdb/shard3.log

docker run -d -p 29012:27018 \
-v /mnt/mongo/data/shard32/:/data/db/ \
-v /mnt/mongo/log/shard32/:/data/configdb/ \
--network mongo_cluster_net \
--name shard32 mongo:3.6 \
mongod --shardsvr --replSet shard3 --logpath=/data/configdb/shard3.log
name port1 port2 port3
configserver 27003 28003 29003
bash 复制代码
docker run -d -p 27003:27003 --name confsvr1 \
-v /mnt/mongo/data/cfgsvr1/:/data/db/ \
mongo:3.6 --configsvr --dbpath /data/db --replSet crs --port 27003

docker run -d -p 28003:27003 --name confsvr2 \
-v /mnt/mongo/data/cfgsvr2/:/data/db/ \
mongo:3.6 --configsvr --dbpath /data/db --replSet crs --port 27003

docker run -d -p 29003:27003 --name confsvr3 \
-v /mnt/mongo/data/cfgsvr3/:/data/db/ \
mongo:3.6 --configsvr --dbpath /data/db --replSet crs --port 27003

shard1

bash 复制代码
docker exec -it shard11 mongo 192.168.142.130:27001
bash 复制代码
rs.initiate({ _id:"shard1", members:[
		{_id:0,host:"192.168.142.130:27001"},
		{_id:1,host:"192.168.142.130:28001",arbiterOnly:true},
		{_id:2,host:"192.168.142.130:29001"}
	]
})

rs.conf()

exit

shard2

bash 复制代码
docker exec -it shard21 mongo 192.168.142.130:27002
bash 复制代码
rs.initiate({ _id:"shard2", members:[
		{_id:0,host:"192.168.142.130:27002"},
		{_id:1,host:"192.168.142.130:28002",arbiterOnly:true},
		{_id:2,host:"192.168.142.130:29002"}
	]
})

rs.conf()

exit

shard3

bash 复制代码
docker exec -it shard31 mongo 192.168.142.130:27012
bash 复制代码
rs.initiate({ _id:"shard3", members:[
		{_id:0,host:"192.168.142.130:27012"},
		{_id:1,host:"192.168.142.130:28012",arbiterOnly:true},
		{_id:2,host:"192.168.142.130:29012"}
	]
})

rs.conf()

exit

config-svr

bash 复制代码
docker exec -it confsvr1 mongo 192.168.142.130:27003
bash 复制代码
rs.initiate({ _id:"crs",configsvr:true, members:[
		{_id:0,host:"192.168.142.130:27003"},
		{_id:1,host:"192.168.142.130:28003"},
		{_id:2,host:"192.168.142.130:29003"}
	]
})

rs.conf()

exit

mongos

name port1 port2 port3
mongos 27004 - -
bash 复制代码
docker run -d -p 27004:27017 \
-v /mnt/mongo/log/mongos1/:/var/log/mongodb/ \
--network mongo_cluster_net \
--name mongos1 \
mongo:3.6 mongos --bind_ip_all --port 27017 --configdb crs/192.168.142.130:27003,192.168.142.130:28003,192.168.142.130:29003
bash 复制代码
docker exec -it mongos1 mongo 192.168.142.130:27004
bash 复制代码
use admin

db.runCommand({addshard:"shard1/192.168.142.130:27001,192.168.142.130:28001,192.168.142.130:29001"})
db.runCommand({addshard:"shard2/192.168.142.130:27002,192.168.142.130:28002,192.168.142.130:29002"})
db.runCommand({addshard:"shard3/192.168.142.130:27012,192.168.142.130:28012,192.168.142.130:29012"})

db.runCommand({listshards:1})
bash 复制代码
db.runCommand({enablesharding:"test"})
db.runCommand({shardcollection:"test.kpl",key:{id:"hashed"}})
bash 复制代码
use test
bash 复制代码
show collections
bash 复制代码
db.stats()

kpl collection

bash 复制代码
{
	"_id": , 
	"id": , 
	"name": , 
	"age": , 
	"english": , 
	"math": , 
	"chinese": ,
	"geography": , 
	"music": , "love": 
}
bash 复制代码
var before = new Date()

for(var i = 1; i <= 100000; i++){
	db.kpl.insert({
		id: i,
		name: i,
		english: Math.round(Math.random() * 100),
		math: Math.round(Math.random() * 100),
		chinese: Math.round(Math.random() * 100),
		geography: Math.round(Math.random() * 100),
		music: Math.round(Math.random() * 100),
		love: Math.round(Math.random() * 100)
	})
	
	print(i)
}

var after = new Date()
execution_mills = after - before

print(execution_mills)
bash 复制代码
top



本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
zybishe2 分钟前
免费送源码:Java+springboot+MySQL 房屋租赁系统小程序的设计与实现 计算机毕业设计原创定制
android·java·spring boot·mysql·docker·zookeeper·小程序
LCY13313 分钟前
k8s的核心组件整理
云原生·容器·kubernetes
咯拉咯啦1 小时前
Docker 安装 Mysql
mysql·docker
Spike()2 小时前
Rocky9.5基于sealos快速部署k8s集群
云原生·容器·kubernetes
十夫长2 小时前
docker速通
运维·docker·容器
mask哥3 小时前
系统架构设计知识体系总结
java·后端·docker·云原生·系统架构·kubernetes·devops
基哥的奋斗历程4 小时前
kubernetes pod控制器 DaemonSet
云原生·容器·kubernetes
qq_413691354 小时前
CI/CD(三) 安装nfs并指定k8s默认storageClass
ci/cd·docker·kubernetes·storageclass·nfs
Steps-of-time5 小时前
Docker镜像创建
运维·docker·容器
川石课堂软件测试6 小时前
涨薪技术|Kubernetes(k8s)之yaml语法大全
功能测试·docker·云原生·容器·kubernetes·单元测试