转载请注明出处:https://blog.csdn.net/qq_36358787/article/details/85063483
环境说明
- mongo版本:4.0.4
- 系统环境: centos 7 64位
- 安装目录 /data/mongodb
- 服务器信息
mongo-shard1: 10.100.101.202
mongo-shard2: 10.100.101.218
mongo-shard3: 10.100.101.217
mongo-shard1 | mongo-shard2 | mongo-shard3 |
---|---|---|
mongos | mongos | mongos |
Config Server | Config Server | Config Server |
Shard1 主节点 | Shard1 副节点 | Shard1 仲裁节点 |
Shard2 仲裁节点 | Shard2 主节点 | Shard2 副节点 |
Shard3 副节点 | Shard3 仲裁节点 | Shard3 主节点 |
端口:
mongos: 27050
mongo_config: 27010
mongo_shard1: 27101
mongo_shard2: 27102
mongo_shard3: 27103
创建所需目录 - 三台机器都需要
mkdir -p /data/mongodb/config
mkdir -p /data/mongodb/data
mkdir -p /data/mongodb/data/config/data
mkdir -p /data/mongodb/data/config/log
mkdir -p /data/mongodb/data/mongos/log
mkdir -p /data/mongodb/data/shard1/log
mkdir -p /data/mongodb/data/shard1/data
mkdir -p /data/mongodb/data/shard2/log
mkdir -p /data/mongodb/data/shard2/data
mkdir -p /data/mongodb/data/shard3/log
mkdir -p /data/mongodb/data/shard3/data
配置文件
mongo_config.conf
systemLog:
destination: file
###日志存储位置
path: /data/mongodb/data/config/log/mongodb.log
logAppend: true
storage:
##journal配置
journal:
enabled: true
##数据文件存储位置
dbPath: /data/mongodb/data/config/data
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置
collectionConfig:
blockCompressor: zlib
##索引配置
indexConfig:
prefixCompression: true
processManagement:
fork: true
##端口配置
net:
port: 27010
bindIp: 0.0.0.0
##权限
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /data/mongodb/config/mongodb-keyfile
##分片设置
sharding:
clusterRole: configsvr
replication:
replSetName: lashouwan
mongos.conf
systemLog:
destination: file
###日志存储位置
path: /data/mongodb/data/mongos/log/mongodb.log
logAppend: true
net:
port: 27050
bindIp: 0.0.0.0
##权限
security:
clusterAuthMode: keyFile
keyFile: /data/mongodb/config/mongodb-keyfile
sharding:
configDB: lashouwan/10.100.101.202:27010,10.100.101.218:27010,10.100.101.217:27010
processManagement:
fork: true
mongo_shard1.conf
systemLog:
destination: file
###日志存储位置
path: /data/mongodb/data/shard1/log/mongodb.log
logAppend: true
storage:
##journal配置
journal:
enabled: true
##数据文件存储位置
dbPath: /data/mongodb/data/shard1/data
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置
collectionConfig:
blockCompressor: zlib
##索引配置
indexConfig:
prefixCompression: true
processManagement:
fork: true
##端口配置
net:
port: 27101
bindIp: 0.0.0.0
##权限
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /data/mongodb/config/mongodb-keyfile
sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
mongo_shard2.conf
systemLog:
destination: file
###日志存储位置
path: /data/mongodb/data/shard2/log/mongodb.log
logAppend: true
storage:
##journal配置
journal:
enabled: true
##数据文件存储位置
dbPath: /data/mongodb/data/shard2/data
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置
collectionConfig:
blockCompressor: zlib
##索引配置
indexConfig:
prefixCompression: true
processManagement:
fork: true
##端口配置
net:
port: 27102
bindIp: 0.0.0.0
##权限
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /data/mongodb/config/mongodb-keyfile
sharding:
clusterRole: shardsvr
replication:
replSetName: shard2
mongo_shard3.conf
systemLog:
destination: file
###日志存储位置
path: /data/mongodb/data/shard3/log/mongodb.log
logAppend: true
storage:
##journal配置
journal:
enabled: true
##数据文件存储位置
dbPath: /data/mongodb/data/shard3/data
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置
collectionConfig:
blockCompressor: zlib
##索引配置
indexConfig:
prefixCompression: true
processManagement:
fork: true
##端口配置
net:
port: 27103
bindIp: 0.0.0.0
##权限
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /data/mongodb/config/mongodb-keyfile
sharding:
clusterRole: shardsvr
replication:
replSetName: shard3
以上配置文件 放到三台服务器 /data/mongodb/conf 根据自己需求自行修改
操作 mongo-shard1: 10.100.101.202
生成 keyfile
cd /data/mongodb/config
openssl rand -base64 741 > mongodb-keyfile
chmod 400 mongodb-keyfile
将mongodb-keyfile 拷贝到其他两台服务器上
/data/mongodb/config 应该有一下几个文件
mongodb-keyfile
mongos.conf
mongo_config.conf
mongo_shard1.conf
mongo_shard2.conf
mongo_shard3.conf
---------------开始设置分片
配置config
启动
在三台机器上都需要执行
mongod -f /data/mongodb/config/mongo_config.conf
如果没有mongod命令 执行下边
ln -s /data/mongodb/bin/* /usr/bin/
进入mongo-shard1: 10.100.101.202 mongo config
mongo 127.0.0.1:27010
进入之后在mongo里执行(这个只在一台服务器上执行就可以)
config = {
_id : "lashouwan",
members : [
{_id : 0, host : "10.100.101.202:27010" },
{_id : 1, host : "10.100.101.218:27010" },
{_id : 2, host : "10.100.101.217:27010" }
]
}
rs.initiate(config);
创建账号密码
use admin
db.createUser({
user: "root",
pwd: "root",
roles: [{
role: "root",
db: "admin"
}]
})
启动并配置副本集
启动 - 三台服务器上分别启动shard1 shard2 shard3
mongod -f /data/mongodb/config/mongo_shard1.conf
mongod -f /data/mongodb/config/mongo_shard2.conf
mongod -f /data/mongodb/config/mongo_shard3.conf
配置 shard1
进入 mongo-shard1: 10.100.101.202 的 MongoShard1
mongo 127.0.0.1:27101
config={
_id:"shard1",
members:[
{_id:0,host:"10.100.101.202:27101"},
{_id:1,host:"10.100.101.218:27101"},
{_id:2,host:"10.100.101.217:27101",arbiterOnly:true}
]
}
rs.initiate(config)
设置密码 - 不退出mongo执行
use admin
db.createUser({
user: "root",
pwd: "root",
roles: [{
role: "root",
db: "admin"
}]
})
配置shard2
进入 mongo-shard2: 10.100.101.218 的 MongoShard2
mongo 127.0.0.1:27102
config={
_id:"shard2",
members:[
{_id:0,host:"10.100.101.202:27102",arbiterOnly:true},
{_id:1,host:"10.100.101.218:27102"},
{_id:2,host:"10.100.101.217:27102"}
]
}
rs.initiate(config)
设置密码 - 不退出mongo执行
use admin
db.createUser({
user: "root",
pwd: "root",
roles: [{
role: "root",
db: "admin"
}]
})
配置shard3
进入 mongo-shard3: 10.100.101.217 的 MongoShard2
mongo 127.0.0.1:27103
config={
_id:"shard3",
members:[
{_id:0,host:"10.100.101.202:27103"},
{_id:1,host:"10.100.101.218:27103",arbiterOnly:true},
{_id:2,host:"10.100.101.217:27103"}
]
}
rs.initiate(config)
设置密码 - 不退出mongo执行
use admin
db.createUser({
user: "root",
pwd: "root",
roles: [{
role: "root",
db: "admin"
}]
})
配置mongos
启动 三台都需要启动
mongos -f /data/mongodb/config/mongos.conf
进入某一台 mongos
mongo 127.0.0.1:27050
执行
use admin
db.runCommand({addshard:"shard1/10.100.101.202:27101,10.100.101.218:27101,10.100.101.217:27101",name:"shard1"})
db.runCommand({addshard:"shard2/10.100.101.202:27102,10.100.101.218:27102,10.100.101.217:27102",name:"shard2"})
db.runCommand({addshard:"shard3/10.100.101.202:27103,10.100.101.218:27103,10.100.101.217:27103",name:"shard3"})
db.runCommand( { enablesharding : "shard1" } );
db.runCommand( { enablesharding : "shard2" } );
db.runCommand( { enablesharding : "shard3" } );
设置密码 - 不退出mongo执行
use admin
db.createUser({
user: "root",
pwd: "root",
roles: [{
role: "root",
db: "admin"
}]
})