정의
- 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으로 줄여야 합니다.