정의
db.fsyncLock()보류 중인 모든 쓰기를 스토리지 계층에서 디스크로 플러시하고 서버를 잠가 잠금이 해제될 때까지 추가 쓰기를 방지합니다.
MongoDB 7.0.2 부터 시작 ( 6.0.11 및 5.0.22 부터 사용 가능)
db.fsyncLock()및db.fsyncUnlock()메서드는mongos에서 실행되어 샤드 클러스터를 잠그고 잠금 해제할 수 있습니다.중요
Mongo쉬 방법
이 페이지에서는
mongosh메서드를 설명합니다. 이는 데이터베이스 명령이나 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다.데이터베이스 명령에 대해서는
fsync명령을 참조하십시오.MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.
서버는 fsync 락 횟수를 유지합니다.
fsyncLock()메서드는 락 횟수를 늘리고 메서드는 잠금fsyncUnlock()횟수를 줄입니다. 서버 또는 클러스터fsyncUnlock()에서 쓰기의 잠금을 해제하려면 락 횟수가 0이 될 때까지 메서드를 호출합니다.db.fsyncLock()의 구문은 다음과 같습니다.db.fsyncLock() 이 작업은 다음 필드가 있는 문서를 반환합니다.
필드설명info작업 상태에 대한 정보입니다.
lockCount현재 인스턴스에 있는 잠금의 수입니다.
seeAlsofsync명령 문서에 대한 링크입니다.ok상태 코드입니다.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
중요
이 명령은 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" : Long(1), "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand", "ok" : 1 }
를 db.fsyncLock() 다시 실행 하면 작업이 을(를) 증가시킵니다.lockCount
{ "info" : "now locked against writes, use db.fsyncUnlock() to unlock", "lockCount" : Long(2), "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand", "ok" : 1 }
쓰기에 대한 인스턴스의 잠금을 해제하려면 db.fsyncUnlock()을 두 번 실행하여 lockCount를 0으로 줄여야 합니다.