자체 관리 복제본 세트 멤버의 Oplog 크기 변경
이 페이지의 내용
경고
local.oplog.rs
컬렉션 을 삭제할 수 없습니다. 이 제한에 대한 자세한 내용은 oplog 컬렉션 동작을 참조하세요.
이 절차는 replSetResizeOplog
명령을 사용하여 복제본 세트의 각 멤버에 대한 oplog[1]의 크기를 변경하며, 이때 프라이머리 멤버로 진행하기 전에 세컨더리 멤버부터 시작합니다.
먼저 각 세컨더리 복제본 세트 멤버에 대해 이 단계를 수행합니다. 모든 세컨더리 멤버의 oplog 크기를 변경한 후에는 프라이머리 멤버에 대해 이 단계를 수행합니다.
A. 복제본 세트 멤버에 연결
mongosh
를 사용하여 복제본 세트 구성원에 연결합니다.
mongosh --host <hostname>:<port>
참고
복제본 세트에서 인증을 적용하는 경우, clusterManager
또는 clusterAdmin
역할과 같이 local
데이터베이스를 수정할 수 있는 권한이 있는 사용자로 인증해야 합니다.
B. (선택 사항) oplog의 현재 크기 확인
oplog의 현재 크기를 보려면 local
데이터베이스로 전환하고 oplog.rs
컬렉션에 대해 db.collection.stats()
를 실행합니다. stats()
는 oplog 크기를 maxSize
로 표시합니다.
use local db.oplog.rs.stats().maxSize
maxSize
필드는 컬렉션 크기를 바이트 단위로 표시합니다.
C. 복제본 세트 멤버의 oplog 크기 변경
replSetResizeOplog
명령을 사용하여 oplog의 크기를 조정합니다. size
는 double이며 990
MB보다 커야 합니다. mongosh
에서 oplog size
를 명시적으로 캐스팅하려면 Double()
생성자를 사용합니다.
다음 작업은 복제본 세트 멤버의 oplog 크기를 16GB 또는 16,000MB로 변경합니다.
db.adminCommand({replSetResizeOplog: 1, size: Double(16000)})
[1] | 2}가 삭제되는 것을 방지하기 위해 oplog가 구성된 크기 제한을 초과하여 커질 수 majority commit point 있습니다. |
D. (선택 사항) oplog.rs
를 압축하여 디스크 공간 확보
oplog의 크기를 줄여도 원래 oplog 크기에 할당된 디스크 공간이 자동으로 회수되지는 않습니다 . 디스크 공간을 다시 확보하려면 local
데이터베이스의 oplog.rs
컬렉션에 대해 compact
를 실행해야 합니다. oplog 크기를 늘린 후 oplog.rs
컬렉션에서 compact
를 실행해도 아무런 이점이 없습니다.
중요
복제본 세트 구성원은 compact
작업이 진행되는 동안 oplog 항목을 복제할 수 있습니다. 그 결과, 압축하는 동안 oplog 복제가 정상적으로 계속될 수 있으므로 더 이상 oplog의 압축 작업을 유지 관리 기간으로 제한할 필요가 없습니다.
프라이머리 복제본 세트 멤버에 대해 compact
를 실행하지 마세요. mongo
셸을 (복제본 세트가 아니라) 프라이머리에 직접 연결하고 rs.stepDown()
을 실행합니다. 성공하면 프라이머리가 강등됩니다. mongo
셸에서 이제 세컨더리 멤버가 된 멤버에 대해 compact
명령을 실행합니다.
다음 작업은 oplog.rs
컬렉션에서 compact
명령을 실행합니다.
use local db.runCommand({ "compact" : "oplog.rs" } )
인증을 적용하는 클러스터의 경우, local
데이터베이스 및 oplog.rs
컬렉션에서 compact
권한 작업을 가진 사용자로 인증해야 합니다. compact
인증 요구 사항에 관한 전체 문서는 compact
필수 권한에서 확인하세요.