Mongodb 클러스터 구축
서버 1: 10.2.4.214
서버 2: 10.2.4.215
1. 먼저 서버 2대의 프로필을 작성하고 프로필의 경로 폴더를 설정합니다
214 라우팅 프로파일 mongodb_rout.conf:
net:
port: 5000
ipv6: true
systemLog:
destination: file
path: "/data/mongodb/formal_5000/log/route.log"
logAppend: true
processManagement:
fork: true
sharding:
configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
...
214의 구성 프로파일 mongodb_cfg.conf:
net:
port: 5100
ipv6: true
storage:
dbPath: "/data/mongodb/formal_5000/data/config"
directoryPerDB: true
systemLog:
destination: file
path: "/data/mongodb/formal_5000/log/config.log"
logAppend: true
storage:
journal:
enabled: true
processManagement:
fork: true
sharding:
clusterRole: configsvr
replication:
replSetName: rsConf
...
214의 조각 구성 파일 mongodb_s0.conf:
storage:
dbPath: "/data/mongodb/formal_5000/data/s0"
directoryPerDB: true
systemLog:
destination: file
path: "/data/mongodb/formal_5000/log/s0.log"
logAppend: true
net:
port: 5010
ipv6: true
processManagement:
fork: true
storage:
journal:
enabled: true
replication:
replSetName: rsShardA
sharding:
clusterRole: shardsvr
...
215 라우팅 프로파일 mongodb_rout.conf:
net:
port: 5000
ipv6: true
systemLog:
destination: file
path: "/data/mongodb/formal_5000/log/route.log"
logAppend: true
processManagement:
fork: true
sharding:
configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
...
215 구성 프로파일 mongodb_cfg.conf:
net:
port: 5100
ipv6: true
storage:
dbPath: "/data/mongodb/formal_5000/data/config"
directoryPerDB: true
systemLog:
destination: file
path: "/data/mongodb/formal_5000/log/config.log"
logAppend: true
storage:
journal:
enabled: true
processManagement:
fork: true
sharding:
clusterRole: configsvr
replication:
replSetName: rsConf
...
215의 조각 구성 파일 mongodb_s0.conf:
storage:
dbPath: "/data/mongodb/formal_5000/data/s0"
directoryPerDB: true
systemLog:
destination: file
path: "/data/mongodb/formal_5000/log/s0.log"
logAppend: true
net:
port: 5010
ipv6: true
processManagement:
fork: true
storage:
journal:
enabled: true
replication:
replSetName: rsShardB
sharding:
clusterRole: shardsvr
...
두 서버에서 다음 명령을 실행하여 폴더를 만듭니다. 그렇지 않으면mongodb를 시작할 수 없습니다.
mkdir -p /data/mongodb/formal_5000/log/
mkdir -p /data/mongodb/formal_5000/data/config/
mkdir -p /data/mongodb/formal_5000/data/s0
2. 구성 서비스 2대를 시작하고 복제본으로 구성
# 2
numactl --interleave=all mongod -f /etc/mongodb/formal_5000/mongodb_cfg.conf
#
mongo --port 5100
config={_id:"rsConf",members:[
{_id:0,host:"10.2.4.214:5100"},
{_id:1,host:"10.2.4.215:5100"}
]}
rs.initiate(config)
#
rs.status()
3. 분할 및 라우팅 서비스 2대 시작 및 구성
# 2
numactl --interleave=all mongod -f /etc/mongodb/formal_5000/mongodb_s0.conf
# 2
numactl --interleave=all mongos -f /etc/mongodb/formal_5000/mongodb_rout.conf
# 214 primary
mongo --port 5010
config={_id:"rsShardA",members:[
{_id:0,host:"10.2.4.214:5010"}
]}
rs.initiate(config)
# 215 primary
mongo --port 5010
config={_id:"rsShardB",members:[
{_id:0,host:"10.2.4.215:5010"}
]}
rs.initiate(config)
#
mongo --port 5000
use admin
db.runCommand({addshard:"rsShardA/10.2.4.214:5010",name:"shard_0",maxSize:0})
db.runCommand({addshard:"rsShardB/10.2.4.215:5010",name:"shard_1",maxSize:0})
#
sh.status()
4. 모니터 설정_센터 분할 가능
use monitor_center
use admin
db.runCommand({enablesharding:"monitor_center"})
5. Studio-3T를 사용하여 라우팅, 구성 및 슬라이스를 연결하고 사용자를 만듭니다.
6. 데이터베이스 닫기
# , 2
mongo --port 5000
use admin
db.shutdownServer()
# , 2
mongo --port 5010
use admin
db.shutdownServer({force:true})
# , 2
mongo --port 5100
use admin
db.shutdownServer()
7. keyfile을 두 서버의 라우팅, 구성, 슬라이스 구성 파일의 마지막 줄에 추가합니다. 아래와 같습니다.
214 라우팅 프로파일 mongodb_rout.conf:
net:
port: 5000
ipv6: true
systemLog:
destination: file
path: "/data/mongodb/formal_5000/log/route.log"
logAppend: true
processManagement:
fork: true
sharding:
configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
security:
keyFile: "/data/mongodb/formal_5000/key/mongodb_key"
...
다른 프로필과 유사합니다. 키 파일을 추가해야 합니다.
# keyFile
mkdir -p /data/mongodb/formal_5000/key/
cd /data/mongodb/formal_5000/key
echo -e "formal mongodb keyFile" > mongodb_key
chmod 600 /data/mongodb/formal_5000/key/mongodb_key
8. 마지막으로 구성, 분할, 라우팅 순서대로 시작
numactl --interleave=all mongod -f /etc/mongodb/formal_5000/mongodb_cfg.conf
numactl --interleave=all mongod -f /etc/mongodb/formal_5000/mongodb_s0.conf
numactl --interleave=all mongos -f /etc/mongodb/formal_5000/mongodb_rout.conf
PS:
1. 평형기
sh.setBalancerState(true) #
sh.setBalancerState(false) #
sh.getBalancerState() #
sh.isBalancerRunning() #
# ,
db.settings.update({ _id: "balancer" },{ $set: { activeWindow : { start : "21:00", stop : "08:00" } } },{ upsert: true })
#
db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })
2.건표
use monitor_center
db.createCollection("origdata_20171024") #
db.origdata_20171024.createIndex({ mac: 1, time: 1},{ background: true}) #
use admin
db.runCommand({shardcollection:"monitor_center.origdata_20171024",key:{mac:1,time:1}}) #
db.runCommand({moveChunk:"monitor_center.origdata_20171024",bounds:[{mac:MinKey,time:MinKey},{mac:MaxKey,time:MaxKey}],to:"shard_1"}) # 1
3. 표의 이동
sh.enableBalancing("monitor_center.origdata_20171024") #
sh.disableBalancing("monitor_center.origdata_20171024") #
db.getSiblingDB("config").collections.findOne({_id : "monitor_center.origdata_20171024"}).noBalance #
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.