확장 가능한 MongoDB 데이터베이스 설정 방법

확장 가능한 MongoDB 데이터베이스 설정 방법

2022-06-01 last update

5 minutes reading NoSQL Scaling MongoDB
MongoDB는 NoSQL 데이터베이스로 내장된 복제와 슬라이싱 등 강력한 기능을 제공합니다.이렇게 하면 서버 간에 컨텐츠를 배포하여 데이터베이스를 여러 서버로 확장할 수 있습니다.
MongoDB와 관련된 모든 것을 설치하기 전에 하드웨어의 선택이 정확하고 소프트웨어가 미세한 조정을 거쳤는지 확인해야 합니다.

1. 하드 드라이브


사용할 하드 드라이브를 선택할 수 있는 경우 RAID1의 엔터프라이즈급 듀얼 SSD 드라이브를 선택합니다.앞서 언급한 바와 같이, 그것들의 성능은 매우 좋으며, 실제로는 당신을 위해 자금을 절약할 수 있습니다.
Linux에서/etc/fstab 파일을 편집하고 MongoDB에서 사용할 마운트에 대한 액세스 시간 로깅을 비활성화합니다.4열에 noatime 추가하기

파티션 다시 마운트:
[[email protected]~]#마운트 - o 다시 마운트/
새 설정이 적용되는지 확인합니다.
[[email protected]~]#마운트
/dev/sda on/type ext4(rw,noatime)

2, CPU 및 메모리


MongoDB를 VM 모니터로 설정하면 나중에 RAM 및 CPU 코어를 확장할 수 있습니다.할당해야 할 CPU 코어 및 RAM 수는 인프라 요구 사항 및 예산에 따라 달라집니다.

3. 최적화


가장 유용한 팁은 데이터베이스 쿼리를 최적화하는 것입니다.
  • 자주 사용하는 검색 또는 정렬 검색에 색인을 추가합니다.
  • MongoDB의 explain() 명령을 사용합니다.
  • 반환 중인 검색 결과 및 제한 필드를 제한합니다.
  • 테스트 목적으로 우리는 3개의 액적을 회전할 것이다.

    설치


    이 과정은 몬godb1, 몬godb2와 몬godb3에서 같다.CentOS에 MongoDB를 설치하는 것은 매우 간단합니다.편집을 통해 다음 저장소 추가
    백승.환매 협의d/10인치.되팔다
    [10개]
    이름 = 10gen
    baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
    gpgcheck=0
    활성화됨 = 1
    패키지를 설치하려면 다음과 같이 하십시오.
    [[email protected]~] #yum-y mongo-10gen mongo-10gen-server 설치
    MongoDB를 재부팅할 때 시작하고 서비스를 시작할 수 있습니다.
    [[email protected]~] #chkconfig monod on & 서비스 monod 시작
    시작 mongod: 갈라짐 프로세스: 1387
    모든 출력은/var/log/mongo/mongod로 넘어갑니다.로그
    하위 프로세스가 성공적으로 시작되었습니다. 부모 프로세스가 종료되고 있습니다.
    [확인]
    지금 보실 수 있을 거예요.http://SERVER:28017/

    마스터 복사본 세트 설정


    우리는 몬godb1을 메인 서버로 지정할 것입니다./etc/mongod에 "master=true"를 추가합니다.conf 및 do
    서비스 몬god 리셋

    몬godb2와 몬godb3는 종속으로 설정됩니다.
    /etc/mongod에'slave=true','source=mongodb1'을 추가합니다.conf 및 do
    서비스 몬god 리셋

    이제 암호를 사용하여 데이터베이스를 보호하거나 포트 27017(MongoDB)과 28017(Web 인터페이스)에 iptables 규칙을 추가해야 합니다.
    암호를 사용하여 사용자를 만들려면 다음과 같이 하십시오.
    > 테스트 사용
    > 데이터베이스.addUser('admin','password');
    {
    “user”:“admin”,
    읽기 전용: false,
    “pwd”:“90f500568434c37b61c8c1ce05fdf3ae”,
    “\u id”:ObjectId(“50eaae88790af41ffffdcc58”)
    }
    또한 다른 MongoDB 서버, IP 및 스토리지를 제한하기 위해 방화벽 규칙을 추가해야 합니다.
    [[email protected]~]#iptables-N MongoDB
    [[email protected]~] #iptables-I 입력-s 0/0-p tcp-dport 27017-j MongoDB
    [[email protected]~]#iptables-I 입력-s 0/0-p tcp-dport 28017-j MongoDB
    [[email protected]~]#iptables-I MongoDB-s 127.0.0.1-j ACCEPT
    [[email protected]~]#iptables-I MongoDB-s 192.34.57.64-j ACCEPT
    [[email protected]~]#iptables-I MongoDB-s 192.34.56.123-j ACCEPT
    [[email protected]~]#iptables-I MongoDB-s 192.34.57.162-j ACCEPT
    [[email protected]~] #iptables-A MongoDB-s 0/0-j 드래그
    [[email protected]~]\/etc/init.d/iptables 저장
    iptables: 방화벽 규칙을/etc/sysconfig/iptables: [확인]
    다른 MongoDB 서버(mongodb2, mongodb3)에서 이 과정을 반복합니다.
    프런트엔드에서 PHP를 사용하는 경우 MongoDB module for PHP를 설치해야 합니다.
    [[email protected]~] #pecl mongo 설치
    [[email protected]~]#echo extension=mongo.그래서 >>`php-i | grep/php.ini | awk {5달러 인쇄}`
    [[email protected]~]# 서비스 httpd 재시작

    데이터로 데이터베이스 채우기


    이제 우리는 우리의 새로운 설정을 테스트하기 시작할 수 있다.명령 셸에서 mongo를 입력하여 데이터베이스에 액세스할 수 있습니다.
    [[email protected]~]#mongo
    MongoDB 셸 버전: 2.2.2
    연결: 테스트
    뉴욕타임스 베스트셀러 목록을 데이터베이스에 입력하여 테스트해 보겠습니다.
    > 데이터베이스.서적저장({제목:'안전항', 저자:'니콜라스 스파크스'})
    > 데이터베이스.서적저장({제목:"Gone Girl", 작성자:"Gillian Flynn")
    > 데이터베이스.서적저장({제목: "Callie와 Kayden의 우연", 저자: "Jessica Sorensen")
    > 데이터베이스.서적저장({제목: "50가지 회색", 저자: "E.L.James")
    > 데이터베이스.서적저장({제목:'무망', 저자:'콜린 호버'})
    모든 결과를 표시하려면 다음과 같이 하십시오.
    > 데이터베이스.서적찾기 ()
    {"\uid": ObjectId("50eaa4b633625147f205994"), "title": "안전항", "author": "Nicholas Sparks"}
    {“\u id”:ObjectId(“50eaaa62633625147f205995”),“title”:“Gone Girl”,“author”:“Gillian Flynn”}
    {"\uid": Objectid("50EAA8D63365147F205996"), "title": "Callie와 Kayden의 우연", "author": "제시카 Sorensen"}
    {"\uid": Objectid("50eaaaa0633625147f205997"), "title": "50가지 회색", "author": "E.L.James"}
    {"\uid": ObjectId("50eaaab3625147f205998"), "title": "절망", "author": "ColleenHoover"}
    복사본이기 때문에 몬godb2와 몬godb3에서 같은 항목을 볼 수 있어야 합니다.

    출판사 이름, ISBN 번호, 평균 고객 평가, 서면 언어 등 다양한 값을 입력할 수 있습니다.그러나 검색을 최적화하기 위해서는 결과의 수량과 되돌아오는 필드의 수량을 제한하는 것이 좋다.
    예를 들어, 결과를 두 개만 되돌리려면 끝에 limit () 를 사용합니다.
    > 데이터베이스.서적찾기({}, {제목: 1, 저자: 1}).정렬({타임 스탬프:-1}).제한 (2)
    {"\uid": ObjectId("50eaa4b633625147f205994"), "title": "안전항", "author": "Nicholas Sparks"}
    {“\u id”:ObjectId(“50eaaa62633625147f205995”),“title”:“Gone Girl”,“author”:“Gillian Flynn”}
    현재 설정된 최대 용량에 도달하면 데이터베이스 분할을 시작할 수 있습니다.우리는 앞으로의 게시물에서 이 점을 소개할 것이다.
    브라트 하미토프