hostname | system | ip | mongodb_version | mongosh_version | cpu | memory | disk |
mongo-msc | centos7 | 192.168.44.190 | 6.0.16 | 2.3.0 | 4C | 4G | 40G |
共十个端口(38017~38026) | |
configserver | 38018-38020 |
shard | sh1(38021~38023) |
sh2(38024~38026) | |
mongos | 38017 |
mongodb下载网址:https://www.mongodb.com/try/download/community-edition/releases/archive
mongosh下载网址:MongoDB Shell Download | MongoDB
安装教程网址:http://t.csdnimg.cn/UJ3Ww
mkdir -p /mongodb/38021/{conf,data,log}
mkdir -p /mongodb/38022/{conf,data,log}
mkdir -p /mongodb/38023/{conf,data,log}
mkdir -p /mongodb/38024/{conf,data,log}
mkdir -p /mongodb/38025/{conf,data,log}
mkdir -p /mongodb/38026/{conf,data,log}
①sh1配置文件
cat > /mongodb/38021/conf/mongod.conf << EOF
systemLog:
destination: file
path: /mongodb/38021/log/mongod.log
logAppend: true
storage:
dbPath: /mongodb/38021/data
journal:
enabled: true
directoryPerDB: true
#engineConfig: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port: 38021
bindIp: 0.0.0.0
replication:
oplogSizeMB: 2048
replSetName: sh1
sharding:
clusterRole: shardsvr
EOF
cp /mongodb/38021/conf/mongod.conf /mongodb/38022/conf/
cp /mongodb/38021/conf/mongod.conf /mongodb/38023/conf/
sed -i 's/38021/38022/g' /mongodb/38022/conf/mongod.conf
sed -i 's/38021/38023/g' /mongodb/38023/conf/mongod.conf
②sh2配置文件
cat > /mongodb/38024/conf/mongod.conf << EOF
systemLog:
destination: file
path: /mongodb/38024/log/mongod.log
logAppend: true
storage:
dbPath: /mongodb/38024/data
journal:
enabled: true
directoryPerDB: true
#engineConfig: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port: 38024
bindIp: 0.0.0.0
replication:
oplogSizeMB: 2048
replSetName: sh2
sharding:
clusterRole: shardsvr
EOF
cp /mongodb/38024/conf/mongod.conf /mongodb/38025/conf/
cp /mongodb/38024/conf/mongod.conf /mongodb/38026/conf/
sed -i 's/38024/38025/g' /mongodb/38025/conf/mongod.conf
sed -i 's/38024/38026/g' /mongodb/38026/conf/mongod.conf
# 启动
mongod -f /mongodb/38021/conf/mongod.conf
mongod -f /mongodb/38022/conf/mongod.conf
mongod -f /mongodb/38023/conf/mongod.conf
mongod -f /mongodb/38024/conf/mongod.conf
mongod -f /mongodb/38025/conf/mongod.conf
mongod -f /mongodb/38026/conf/mongod.conf
# 关闭
mongod -f /mongodb/38021/conf/mongod.conf --shutdown
mongod -f /mongodb/38022/conf/mongod.conf --shutdown
mongod -f /mongodb/38023/conf/mongod.conf --shutdown
mongod -f /mongodb/38024/conf/mongod.conf --shutdown
mongod -f /mongodb/38025/conf/mongod.conf --shutdown
mongod -f /mongodb/38026/conf/mongod.conf --shutdown
①sh1搭建复制集
# 连接38021实例
mongosh --port 38021
# 搭建sh1复制集
rs.initiate({
_id: "sh1",
members: [
{ _id: 0, host: "192.168.44.190:38021" },
{ _id: 1, host: "192.168.44.190:38022" },
{ _id: 2, host: "192.168.44.190:38023" }
]
})
②sh2搭建复制集
# 连接38024实例
mongosh --port 38024
# 搭建sh2复制集
rs.initiate({
_id: "sh2",
members: [
{ _id: 0, host: "192.168.44.190:38024" },
{ _id: 1, host: "192.168.44.190:38025" },
{ _id: 2, host: "192.168.44.190:38026" }
]
})
mkdir -p /mongodb/38018/{conf,data,log}
mkdir -p /mongodb/38019/{conf,data,log}
mkdir -p /mongodb/38020/{conf,data,log}
cat > /mongodb/38018/conf/mongod.conf << EOF
systemLog:
destination: file
path: /mongodb/38018/log/mongod.log
logAppend: true
storage:
dbPath: /mongodb/38018/data
journal:
enabled: true
directoryPerDB: true
#engineConfig: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port: 38018
bindIp: 0.0.0.0
replication:
oplogSizeMB: 2048
replSetName: configReplSet
sharding:
clusterRole: configsvr
EOF
cp /mongodb/38018/conf/mongod.conf /mongodb/38019/conf/
cp /mongodb/38018/conf/mongod.conf /mongodb/38020/conf/
sed -i 's/38018/38019/g' /mongodb/38019/conf/mongod.conf
sed -i 's/38018/38020/g' /mongodb/38020/conf/mongod.conf
# 启动实例
mongod -f /mongodb/38018/conf/mongod.conf
mongod -f /mongodb/38019/conf/mongod.conf
mongod -f /mongodb/38020/conf/mongod.conf
# 关闭实例
mongod -f /mongodb/38018/conf/mongod.conf --shutdown
mongod -f /mongodb/38019/conf/mongod.conf --shutdown
mongod -f /mongodb/38020/conf/mongod.conf --shutdown
# 连接到38018实例
mongosh --port 38018
# 搭建config复制集
rs.initiate({
_id: "configReplSet",
members: [
{ _id: 0, host: "192.168.44.190:38018" },
{ _id: 1, host: "192.168.44.190:38019" },
{ _id: 2, host: "192.168.44.190:38020" }
]
})
mkdir -p /mongodb/38017/{conf,log}
cat > /mongodb/38017/conf/mongos.conf << EOF
systemLog:
destination: file
path: /mongodb/38017/log/mongod.log
logAppend: true
processManagement:
fork: true
net:
port: 38017
bindIp: 0.0.0.0
sharding:
clusterRole: configReplSet/192.168.44.190:38018,192.168.44.190:38019,192.168.44.190:38020
EOF
# 启动mongos
mongos -f /mongodb/38017/conf/mongod.conf
# 关闭mongos
mongosh --port 38017
db.shutdownServer()
mongosh --port 38017
use admin
db.runCommand({
addshard:"sh1/192.168.44.190:38021", //这里是sh1复制集的主节点
name:"sh1"
})
db.runCommand({
addshard:"sh2/192.168.44.190:38024", //这里是sh2复制集的主节点
name:"sh2"
})
# 连接到mongos的admin库
mongo --port 38017
# 查看整体状态
sh.status();
如上图所示,则恭喜你mongodb sharding cluster 搭建成功