文章目录
MongoDB 分片集群搭建
MongoDB分片集群介绍
集群规划
MongoDB职责 | 服务器 | 端口 | 数据目录 | 配置文件目录 | 日志目录 |
---|---|---|---|---|---|
路由节点 | mongodb1 | 27017 | /home/mongo/27017/data | /home/mongo/27017/config | /home/mongo/27017/logs/mongod.log |
配置节点1 | mongodb2 | 27017 | /home/mongo/27017/data | /home/mongo/27017/config | /home/mongo/27017/logs/mongod.log |
配置节点2 | mongodb3 | 27017 | /home/mongo/27017/data | /home/mongo/27017/config | /home/mongo/27017/logs/mongod.log |
配置节点3 | mongodb4 | 27017 | /home/mongo/27017/data | /home/mongo/27017/config | /home/mongo/27017/logs/mongod.log |
分片1-节点1 | mongodb2 | 27018 | /home/mongo/27018/data | /home/mongo/27018/config | /home/mongo/27018/logs/mongod.log |
分片1-节点2 | mongodb3 | 27018 | /home/mongo/27018/data | /home/mongo/27018/config | /home/mongo/27018/logs/mongod.log |
分片1-节点3 | mongodb4 | 27018 | /home/mongo/27018/data | /home/mongo/27018/config | /home/mongo/27018/logs/mongod.log |
分片2-节点1 | mongodb2 | 27019 | /home/mongo/27019/data | /home/mongo/27019/config | /home/mongo/27019/logs/mongod.log |
分片2-节点2 | mongodb3 | 27019 | /home/mongo/27019/data | /home/mongo/27019/config | /home/mongo/27019/logs/mongod.log |
分片2-节点3 | mongodb4 | 27019 | /home/mongo/27019/data | /home/mongo/27019/config | /home/mongo/27019/logs/mongod.log |
创建mongo用户
useradd mongo
passwd mongo
1759840027
安装(使用root用户)
# 解压安装包
tar -zxvf mongodb-linux-x86_64-rhel80-6.0.6.tgz
# 将mongo路径软连接到 /usr/bin 路径(root用户)
ln -s /home/mongo/mongodb-linux-x86_64-rhel80-6.0.6/bin/* /usr/bin/
# 安装mongo工具
tar -zxvf mongodb-database-tools-rhel80-x86_64-100.7.0.tgz
ln -s /home/mongo/mongodb-database-tools-rhel80-x86_64-100.7.0/bin/* /usr/bin/
# 安装mongosh
rpm -ivh mongodb-mongosh-shared-openssl11-1.9.0.x86_64.rpm
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
分片1安装(副本集)
安装节点(执行主机:mongodb-2、mongodb-3、mongodb-4)
mkdir -p /home/mongo/27018/data /home/mongo/27018/config /home/mongo/27018/logs
vi /home/mongo/27018/config/mongod.conf
systemLog:
destination: file
path: /home/mongo/27018/logs/mongod.log
logAppend: false
storage:
dbPath: /home/mongo/27018/data/
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
journal:
enabled: true
net:
port: 27021
bindIp: 0.0.0.0
maxIncomingConnections: 65535
processManagement:
fork: true
pidFilePath: /home/mongo/27018/mongod.pid
replication:
oplogSizeMB: 50
replSetName: shard1
sharding:
clusterRole: shardsvr
启动节点
mongod --config /home/mongo/27018/config/mongod.conf
初始化分片1
## 可以连接副本集中的任意节点
mongosh --port=27018
## 切换到admin数据库
> use admin
## 初始化集群节点
> rs.initiate({
_id: "shard1",
members: [
{_id:0,host:"mongodb-2:27018"},
{_id:1,host:"mongodb-3:27018"},
{_id:2,host:"mongodb-4:27018",arbiterOnly: true},
]
})
## 查看集群状态
> rs.status()
分片2安装(副本集)
安装节点(执行主机:mongodb-2、mongodb-3、mongodb-4)
mkdir -p /home/mongo/27019/config /home/mongo/27019/data /home/mongo/27019/logs
vi /home/mongo/27019/config/mongod.conf
systemLog:
destination: file
path: /home/mongo/27019/logs/mongod.log
logAppend: false
storage:
dbPath: /home/mongo/27019/data/
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
journal:
enabled: true
net:
port: 27019
bindIp: 0.0.0.0
maxIncomingConnections: 65535
processManagement:
fork: true
pidFilePath: /home/mongo/27019/mongod.pid
replication:
oplogSizeMB: 50
replSetName: shard2
sharding:
clusterRole: shardsvr
启动节点
mongod --config /home/mongo/27019/config/mongod.conf
初始化分片2
## 可以连接副本集中的任意节点
mongosh --port=27019
## 切换到admin数据库
> use admin
## 初始化集群节点
> rs.initiate({
_id: "shard2",
members: [
{_id:0,host:"mongodb-2:27019"},
{_id:1,host:"mongodb-3:27019"},
{_id:2,host:"mongodb-4:27019",arbiterOnly: true},
]
})
## 查看集群状态
> rs.status()
配置集群安装(副本集)
安装节点(执行主机:mongodb-2、mongodb-3、mongodb-4)
mkdir -p /home/mongo/27017/config /home/mongo/27017/data /home/mongo/27017/logs
vi /home/mongo/27017/config/mongod.conf
systemLog:
destination: file
path: /home/mongo/27017/logs/mongod.log
logAppend: false
storage:
dbPath: /home/mongo/27017/data/
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
journal:
enabled: true
net:
port: 27017
bindIp: 0.0.0.0
maxIncomingConnections: 65535
processManagement:
fork: true
pidFilePath: /home/mongo/27017/mongod.pid
replication:
oplogSizeMB: 50
replSetName: config
sharding:
clusterRole: configsvr
启动节点
mongod --config /home/mongo/27017/config/mongod.conf
初始化分片
## 可以连接副本集中的任意节点
mongosh --port=27017
## 切换到admin数据库
> use admin
## 初始化集群节点
> rs.initiate({
_id: "config",
members: [
{_id:0,host:"mongodb-2:27017"},
{_id:1,host:"mongodb-3:27017"},
{_id:2,host:"mongodb-4:27017"},
]
})
## 查看集群状态
> rs.status()
路由节点安装(执行主机:mongodb-1)
mkdir -p /home/mongo/27017/config /home/mongo/27017/data /home/mongo/27017/logs
vi /home/mongo/27017/config/mongod.conf
systemLog:
destination: file
path: /home/mongo/27017/logs/mongod.log
logAppend: false
net:
port: 27017
bindIp: 0.0.0.0
maxIncomingConnections: 65535
processManagement:
fork: true
pidFilePath: /home/mongo/27017/mongod.pid
sharding:
# 设置配置集群地址
configDB: config/mongodb-2:27017,mongodb-3:27017,mongodb-4:27017
启动节点
mongos --config /home/mongo/27017/config/mongod.conf
添加分片
# 连接路由节点
mongosh --port=27017
# 添加分片
> sh.addShard("shard1/mongodb-2:27018")
> sh.addShard("shard2/mongodb-2:27019")
初始化用户
mongosh --port=27017
> use admin
> db.createUser({
user: 'admin', // 用户名
pwd: '1759840027', // 密码
roles:[{
role: 'root', // 角色
db: 'admin' // 数据库
}]
})
> db.createUser({
user: 'mongo', // 用户名
pwd: '1759840027', // 密码
roles:[{
role: 'root', // 角色
db: 'admin' // 数据库
}]
})
MongoDB 启动停止命令汇总
## 启动命令
mongos --config /home/mongo/27017/config/mongod.conf
mongod --config /home/mongo/27017/config/mongod.conf
## 停止命令
mongos --shutdown --config /home/mongo/27017/config/mongod.conf
MongoDB Compass 连接
mongodb://192.168.25.130:27017/?readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false