자체 관리형 샤드 클러스터 다시 시작
이 튜토리얼은 MongoDB 7.0에만 해당됩니다. MongoDB의 이전 버전에 대해서는 해당 버전의 MongoDB 매뉴얼을 참조하세요.
이 절차에서는 샤딩된 클러스터 를 다시 시작하기 위한 종료 및 스타트업 시퀀스를 보여줍니다. 샤딩된 클러스터 의 구성 요소를 다른 순서로 중지하거나 시작하면 멤버 간에 통신 오류가 발생할 수 있습니다. 예를 예시샤드 서버는 사용 가능한 구성 서버 가 없는 경우 중단되는 것처럼 보일 수 있습니다.
중요
이 절차는 계획된 유지보수 기간에만 수행해야 합니다. 이 기간에 애플리케이션은 잠재적인 데이터 손실 또는 오래된 데이터 읽기를 방지하기 위해 클러스터에 대한 모든 읽기 및 쓰기를 중지해야 합니다.
밸런서 비활성화
밸런서를 비활성화하여 청크 마이그레이션을 중지하고 프로세스가 완료될 때까지 메타데이터 쓰기 작업을 수행하지 마세요. 진행 중인 마이그레이션이 있다면, 밸런서는 정지하기 전에 진행 중인 마이그레이션을 완료합니다.
밸런서를 비활성화하려면 클러스터의 mongos
인스턴스 중 하나에 연결하여 다음 명령을 실행합니다: [1]
sh.stopBalancer()
밸런서 상태를 확인하려면 sh.getBalancerState()
명령을 실행합니다.
자세한 내용은 밸런서 비활성화를 참조하세요.
[1] | MongoDB에서 시작하기 6.0.3부터 자동 청크 분할이 수행되지 않습니다. 이는 밸런싱 정책 개선 때문입니다. 자동 분할 명령은 여전히 존재하지만 작업을 수행하지 않습니다. MongoDB 6.0.3 이전 버전에서 sh.stopBalancer() 는 샤딩된 클러스터에 대한 자동 분할도 비활성화합니다. |
샤딩된 클러스터 중지
mongos
라우터를 중지합니다.
각 mongos
라우터의 admin
데이터베이스에서 db.shutdownServer()
를 실행합니다:
use admin db.shutdownServer()
각 샤드 복제본 세트를 중지합니다.
각 샤드 복제본 세트 멤버의 admin
데이터베이스에서 db.shutdownServer()
를 실행하여 mongod
프로세스를 종료합니다. 각 복제본 세트의 프라이머리를 종료하기 전에 모든 세컨더리 멤버를 종료합니다.
구성 서버를 중지합니다.
각 구성 서버의 admin
데이터베이스에서 db.shutdownServer()
를 실행하여 해당 mongod
프로세스를 종료합니다. 프라이머리를 종료하기 전에 모든 세컨더리 멤버를 종료합니다.
샤딩된 클러스터 시작
구성 서버를 시작합니다.
각 mongod
를 시작할 때 구성 파일이나 명령줄을 사용하여 mongod
설정을 지정합니다. 시작 매개 변수에 대한 자세한 내용은 mongod
참조 페이지를 참조하세요.
구성 파일
구성 파일을 사용하는 경우 --config
옵션을 구성 파일 경로로 설정하여 mongod
를 시작합니다.
mongod --config <path-to-config-file>
명령줄
명령줄 옵션을 사용하는 경우 --configsvr
, --replSet
, --bind_ip
및 배포에 적합한 기타 옵션으로 mongod
를 시작합니다. 예시:
mongod --configsvr --replSet <replica set name> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>
모든 구성 서버를 시작한 후 프라이머리 mongod
에 연결하고 rs.status()
를 실행하여 각 CSRS 멤버의 상태 및 가용성을 확인합니다.
각 샤드 복제본 세트를 시작합니다.
각 mongod
를 시작할 때 구성 파일이나 명령줄을 사용하여 mongod
설정을 지정합니다.
구성 파일
구성 파일을 사용하는 경우 --config
옵션을 구성 파일 경로로 설정하여 mongod
를 시작합니다.
mongod --config <path-to-config-file>
명령줄
명령줄 옵션을 사용하는 경우 --replSet
, --shardsvr
, --bind_ip
옵션과 배포에 적합한 기타 옵션을 사용하여 mongod
를 시작합니다. 예시:
mongod --shardsvr --replSet <replSetname> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>
각 샤드의 모든 멤버를 시작한 후 각 프라이머리 mongod
에 연결하고 rs.status()
를 실행하여 각 멤버의 상태와 가용성을 확인합니다.
라우터를 mongos
시작합니다.
구성 파일 또는 명령줄 매개 변수를 사용하여 mongos
라우터를 시작하고 구성 서버를 지정합니다.
구성 파일
구성 파일을 사용하는 경우 --config
옵션과 구성 파일의 경로를 지정하여 mongos
를 시작합니다.
mongos --config <path-to-config>
구성 파일에 대한 자세한 내용은 구성 옵션을 참조하세요.
명령줄
명령줄 매개변수를 사용하는 경우 mongos
를 시작하고 --configdb
, --bind_ip
및 기타 옵션을 배포에 맞게 적절하게 지정합니다. 예시:
경고
인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.
mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>
배포서버에 적합한 다른 옵션을 포함할 수 있습니다.
밸런서 다시 활성화
청크 마이그레이션을 재개하려면 밸런서를 다시 활성화합니다.
클러스터의 mongos
인스턴스 중 하나에 연결하고 sh.startBalancer()
명령을 실행합니다: [2]
sh.startBalancer()
밸런서 상태를 확인하려면 sh.getBalancerState()
명령을 실행합니다.
자세한 내용은 밸런서 활성화를 참조하세요.
[2] | MongoDB 6.0.3부터는 밸런싱 정책의 개선으로 인해 자동 청크 분할이 수행되지 않습니다. 자동 분할 명령은 여전히 존재하지만 작업을 수행하지는 않습니다. MongoDB 6.0.3 이전 버전에서 sh.startBalancer() 는 샤딩된 클러스터에 대한 자동 분할도 활성화합니다. |
클러스터 접근성 검증
mongo
셸을 클러스터의 mongos
프로세스 중 하나에 연결합니다. sh.status()
를 사용하여 전체 클러스터 상태를 확인합니다.
모든 샤드에 액세스할 수 있고 통신할 수 있는지 확인하려면 임시 샤드 컬렉션에 테스트 데이터를 삽입합니다. 데이터가 클러스터의 각 샤드 간에 분할 및 마이그레이션되고 있는지 확인합니다. mongo
셸을 각 샤드 프라이머리에 연결하고 db.collection.find()
를 사용하여 데이터가 예상대로 샤드되었는지 확인할 수 있습니다.
중요
잠재적인 데이터 손실 또는 오래된 데이터 읽기를 방지하려면 클러스터가 정상이고 액세스할 수 있는지 확인할 때까지 클러스터에 대한 애플리케이션 읽기 및 쓰기를 시작하지 마세요.