몽고DB 튜토리얼login
몽고DB 튜토리얼
작가:php.cn  업데이트 시간:2022-04-21 17:49:03

MongoDB 샤딩



샤딩

MongoDB에는 또 다른 유형의 클러스터가 있는데, 이는 MongoDB의 엄청난 데이터 볼륨 증가 요구를 충족할 수 있는 샤딩 기술입니다.

MongoDB가 막대한 양의 데이터를 저장하는 경우 한 대의 머신으로는 데이터를 저장하거나 허용 가능한 읽기 및 쓰기 처리량을 제공하기에 충분하지 않을 수 있습니다. 이때 데이터베이스 시스템이 더 많은 데이터를 저장하고 처리할 수 있도록 데이터를 여러 시스템에 분할할 수 있습니다.


샤딩을 사용하는 이유

  • 모든 쓰기 작업을 기본 노드에 복사

  • 지연된 민감한 데이터에 대한 쿼리 마스터 노드

  • 단일 복제본 세트는 12개 노드로 제한됩니다

  • 요청량이 많으면 메모리가 부족해집니다.

  • 로컬 디스크 부족

  • 수직 확장은 비용이 많이 듭니다


MongoDB 샤딩

다음 그림은 MongoDB의 샤딩 클러스터 구조 분포를 보여줍니다.

위 그림에는 세 가지 주요 구성 요소가 있습니다.

  • 샤드:

    는 실제 데이터 블록을 저장하는 데 사용됩니다. 실제 생산 환경에서는 여러 머신과 하나의 유물 세트가 샤드 서버 역할을 수행할 수 있습니다. 호스트 실패

  • Config Server:

    청크 정보를 포함하여 전체 ClusterMetadata를 저장하는 mongod 인스턴스입니다.

  • 쿼리 라우터:

    프런트 엔드 라우팅, 클라이언트가 여기에서 액세스하고 전체 클러스터를 단일 데이터베이스처럼 보이게 하며, 프런트엔드 애플리케이션은 투명하게 사용할 수 있습니다.


샤드 인스턴스

샤딩 구조 포트 분포는 다음과 같습니다.

Shard Server 1:27020
Shard Server 2:27021
Shard Server 3:27022
Shard Server 4:27023
Config Server :27100
Route Process:40000

1단계: 샤드 서버 시작

[root@100 /]# mkdir -p /www/mongoDB/shard/s0
[root@100 /]# mkdir -p /www/mongoDB/shard/s1
[root@100 /]# mkdir -p /www/mongoDB/shard/s2
[root@100 /]# mkdir -p /www/mongoDB/shard/s3
[root@100 /]# mkdir -p /www/mongoDB/shard/log
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork
....
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork

2단계: 구성 서버 시작

[root@100 /]# mkdir -p /www/mongoDB/shard/config
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork

참고: 여기서 --shardsvr 및 configsvr 매개변수를 추가하지 않고도 일반 mongodb 서비스를 시작하는 것과 똑같이 시작할 수 있습니다. 이 두 매개변수의 기능은 시작 포트를 변경하는 것이므로 포트를 직접 지정할 수 있습니다.

3단계: 경로 프로세스 시작

/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500

mongos 시작 매개변수에서 ChunkSize 항목은 청크의 크기를 지정하는 데 사용됩니다. 단위는 MB입니다.

4단계: 샤딩 구성

다음으로 MongoDB Shell을 사용하여 mongos에 로그인하고 샤드 노드를 추가합니다

[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000
MongoDB shell version: 2.0.7
connecting to: 127.0.0.1:40000/admin
mongos> db.runCommand({ addshard:"localhost:27020" })
{ "shardAdded" : "shard0000", "ok" : 1 }
......
mongos> db.runCommand({ addshard:"localhost:27029" })
{ "shardAdded" : "shard0009", "ok" : 1 }
mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库
{ "ok" : 1 }
mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}})
{ "collectionsharded" : "test.log", "ok" : 1 }

5단계: 프로그램 코드를 크게 변경할 필요는 없습니다. 일반 mongo 데이터베이스에 연결하는 것처럼 데이터베이스를 인터페이스 40000

에 연결하기만 하면 됩니다.

PHP 중국어 웹사이트