MongoDB에서 Oplog 사이즈 확인하는 법
MongoDB의 oplog(Operation Log, 작업 로그)는 MongoDB 복제(replication)에서 사용되는 특별한 컬렉션으로, 변경 사항을 기록하는 역할.
📦 oplog란?
• oplog(rs.oplog)는 MongoDB 복제 세트(replica set)에서 Primary 노드의 데이터 변경 사항을 기록하는 컬렉션입니다.
• Secondary 노드는 Primary의 oplog를 읽고 동일한 작업을 수행하여 데이터를 동기화함.
• 컬렉션 이름: local.oplog.rs
- Capped Collection(고정 크기 컬렉션)으로 동작하며, 일정 크기가 차면 가장 오래된 데이터부터 삭제!
📦 oplog의 동작 방식
1. Primary 노드에서 변경 발생
• insert, update, delete 작업이 수행될 때, oplog에 기록됨.
2. Secondary 노드가 oplog를 읽음
• Secondary 노드는 Primary의 oplog를 주기적으로 읽어 적용함.
3. 동기화 유지
- Primary에서 발생한 변경 사항을 Secondary가 동일하게 수행하여 데이터 일관성을 유지.
📦 oplog 확인 방법
MongoDB에서 oplog를 직접 확인하려면 아래 명령을 실행
use local
db.oplog.rs.find().limit(10).pretty()
- local 데이터베이스에 oplog.rs 컬렉션이 저장.
- 위 명령을 실행하면 최근 10개의 oplog 항목을 확인가능.
📦 oplog 항목 예시
{
"ts" : Timestamp(1712432874, 1),
"t" : NumberLong(2),
"h" : NumberLong("890273918273918273"),
"v" : 2,
"op" : "i",
"ns" : "mydb.users",
"o" : {
"_id" : ObjectId("65f3b69ad2b3e6b5d3a6f6d1"),
"name" : "Alice",
"age" : 28
}
}
- “op”: 작업 유형 (“i”: insert, “u”: update, “d”: delete)
- “ns”: 네임스페이스(데이터베이스 및 컬렉션 정보)
- “o”: 변경된 문서 내용.
📦 oplog의 크기 확인 및 조정
- oplog의 크기를 확인
db.getReplicationInfo()
- oplog 크기를 늘리려면 (예: 10GB)
db.adminCommand({ replSetResizeOplog: 1, size: 10240 })
🚀 정리.
- oplog는 MongoDB 복제(replication)에서 Primary의 변경 사항을 기록하는 로그
- Secondary 노드는 oplog를 읽고 동일한 작업을 수행하여 데이터 일관성을 유지
- oplog 크기가 고정되어 있으며, 오래된 로그는 자동으로 삭제


