db.fsyncLock()
정의
db.fsyncLock()
보류 중인 모든 쓰기를 스토리지 계층에서 디스크로 플러시하고 서버를 잠가 잠금이 해제될 때까지 추가 쓰기를 방지합니다.
MongoDB 5.0.22 부터는
db.fsyncLock()
및db.fsyncUnlock()
메서드를mongos
에서 실행 하여 샤딩된 클러스터 를 락 해제할 수 있습니다.중요
Mongo쉬 방법
이 페이지에서는
mongosh
메서드에 대해 설명합니다. 이는 데이터베이스 명령 또는 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다.데이터베이스 명령에 대해서는
fsync
명령을 참조하십시오.MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.
서버는 fsync 잠금 횟수를 유지합니다.
fsyncLock()
메서드는 잠금 횟수를 늘리고fsyncUnlock()
메서드는 잠금 횟수를 줄입니다. 서버 또는 클러스터에서 쓰기의 잠금을 해제하려면 잠금 횟수가 0이 될 때까지fsyncUnlock()
메서드를 호출합니다.db.fsyncLock()
의 구문은 다음과 같습니다.db.fsyncLock() 이 작업은 다음 필드가 있는 문서를 반환합니다.
필드설명info
작업 상태에 대한 정보입니다.
lockCount
현재 인스턴스에 있는 잠금의 수입니다.
seeAlso
fsync
명령 문서에 대한 링크입니다.ok
상태 코드입니다.
db.fsyncLock()
는 관리 명령입니다. 백업 작업 전에 서버 또는 클러스터를 잠그려면 이 방법을 사용합니다.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
중요
이 명령은 MongoDB Atlas 클러스터에서 지원되지 않습니다. 모든 명령에 대한 Atlas 지원 에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
행동
db.fsyncLock()
는 cp
, scp
또는 tar
와 같은 낮은 수준의 백업 유틸리티를 사용하여 데이터 파일을 안전하게 복사할 수 있도록 보장합니다. 복사된 파일을 사용하여 시작된 mongod
에는 잠긴 mongod
의 사용자 작성 데이터와 구별할 수 없는 사용자 작성 데이터가 포함되어 있습니다.
잠긴 mongod
의 데이터 파일은 저널링 동기화 또는 WiredTiger 스냅샷 과 같은 작업으로 인해 변경될 수 있습니다. 논리적 데이터에는 영향을 주지 않지만(예: 클라이언트가 액세스하는 데이터), 일부 백업 유틸리티는 이러한 변경 사항을 감지하여 경고를 표시하거나 오류로 인해 실패할 수 있습니다. MongoDB- 권장 백업 유틸리티 및 절차에 대한 자세한 내용 은 자체 관리 배포서버를 위한 백업 방법을 참조하세요.
실패 후 동기화 잠금 해제
Fsync 잠금은 복제본 세트 또는 샤딩된 클러스터의 프라이머리에서 실행됩니다.
기본 서버가 다운되거나 네트워크 문제로 인해 연결할 수 없는 경우 클러스터는 사용 가능한 보조 노드에서 새 프라이머리를 선택합니다. fsync 잠금이 있는 기본값이 다운되면 새 기본값은 fsync 잠금을 유지하지 않으며 쓰기 작업을 처리할 수 있습니다. 백업 작업 중에 선택 사항이 발생하면 결과 백업이 일관되지 않거나 사용할 수 없게 될 수 있습니다.
기본 다운에서 복구하기
잠금 개수가 0이 될 때까지
db.fsyncUnlock()
메서드를 실행하여 모든 노드의 잠금을 해제합니다.db.fsyncLock()
명령을 실행하여 클러스터에서 fsync 잠금을 다시 설정합니다.백업을 다시 시작합니다.
또한 fsync 잠금은 영구적입니다. 이전 프라이머리가 다시 온라인 상태가 되면 db.fsyncUnlock()
명령을 실행하여 노드의 잠금을 해제해야 합니다.
예시
다음 작업은 db.fsyncLock()
을(를) 실행합니다.
db.fsyncLock()
이 작업은 lockCount
를 포함하는 다음 상태 문서를 반환합니다.
{ "info" : "now locked against writes, use db.fsyncUnlock() to unlock", "lockCount" : NumberLong(1), "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand", "ok" : 1 }
db.fsyncLock()
를 다시 실행하면 작업이 lockCount
을(를) 증가시킵니다.
{ "info" : "now locked against writes, use db.fsyncUnlock() to unlock", "lockCount" : NumberLong(2), "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand", "ok" : 1 }
쓰기에 대한 인스턴스의 잠금을 해제하려면 db.fsyncUnlock()
을 두 번 실행하여 lockCount
를 0으로 줄여야 합니다.