MongoDB: MongoDB에서 Oplog 사이즈 확인하는 법
·
📊DB/MongoDB
MongoDB에서 Oplog 사이즈 확인하는 법MongoDB의 oplog(Operation Log, 작업 로그)는 MongoDB 복제(replication)에서 사용되는 특별한 컬렉션으로, 변경 사항을 기록하는 역할.📦 oplog란?• oplog(rs.oplog)는 MongoDB 복제 세트(replica set)에서 Primary 노드의 데이터 변경 사항을 기록하는 컬렉션입니다.• Secondary 노드는 Primary의 oplog를 읽고 동일한 작업을 수행하여 데이터를 동기화함.• 컬렉션 이름: local.oplog.rsCapped Collection(고정 크기 컬렉션)으로 동작하며, 일정 크기가 차면 가장 오래된 데이터부터 삭제!📦 oplog의 동작 방식1. Primary 노드에서 변경 발생• i..
MongoDB: MongoDB 설치한 OS 에서 “Too many open files” 에러 발생 시 해결 가이드
·
📊DB/MongoDB
MongoDB 설치한 OS 에서 “Too many open files” 에러 발생 시 해결 가이드Linux 서버(여기선 AWS EC2)를 운영하다보면 어제만해도 잘 돌아가던 서버 어플리케이션이 “Too many open files” 에러를 뱉고 죽는 현상이 발생함.이런 오류가 생기는 이유는 프로세스가 OS에 요청할수 있는 리소스의 개수/양 (여기서는 NOFILE 이라 불리는 최대 Open 가능한 파일 개수)에 Limit가 있고, 프로세스가 그 제한을 넘었기 때문이다.해결방법각 프로세스의 Limit는 그 프로세스가 실행되는 계정의 Limit를 바탕으로 만들어지므로 프로세스의 Limit를 올려준다고 해서 문제가 해결되진 않는다. 계정과 프로세스 모두 변경해 주어야 그 프로세스를 다시 시작했을때에도 같은 문제..
MongoDB: Replica Set Secondary Node 동기화 시간 확인하는 방법
·
📊DB/MongoDB
MongoDB 에서 Replica Set Secondary Node 동기화 시간 확인하는 방법몽고디비 레플리카 셋으로 구축 되어 있을 때 secondary node가 primary node를 어느정도 동기화 하고 있는지, 알아 볼 수 있다.use admindb.auth({...})rs.printSecondaryReplicationInfo()나오는 시간이 Primary Node에 대해 동기화 하는 정도까지의 지연시간이다.
MongoDB: DB 다운 시 재가동 방법
·
📊DB/MongoDB
MongoDB DB 다운 시 재가동 방법mongoDB가 어떤 이유로 인해 DB 프로세스가 다운될 수 있다. 이유는 log를 살펴봐야한다. 보통 /var/log/mongodb/ 쪽에 기록되어 있다. 실제로 root로 접속 후, mongo가 죽었는지 확인해봐야 한다.mongo다시 살리는 code# root 권한으로.mongod --config /etc/mongod.conf만약에 다시 살리지 못하면, 백업 시켜둔 파일을 교체해서 다시 기동해야 한다./var/lib/ 폴더를 봐야 한다.rm -rf mongo # 기존 파일 지우기.mv mongo.203.20240505 mongo # 파일 교체.그 다음, 재기동 해보자# root 권한으로.mongod --config /etc/mongod.conf그럼, 보통 재기동..
MongoDB: wiredTiger engine 파일 찾는 법
·
📊DB/MongoDB
MongoDB 에서 wiredTiger engine 파일 찾는 법찾게 된 이유 : 몽고디비에서 CRUD를 할때 checksum이 match가 되지 않는 오류 발생 => 몽고디비 다운으로 이어졌다.log를 찾아보면, collection-218–4990451227493674325.wt 식의 파일 이름들이 보임.해당 wt파일이 어떤 database의 collection인지 찾아 볼 수 있음.from pymongo import MongoClientconn = MongoClient(host='host', port=port, username='username', password='password')databases = conn.list_database_names()# 몽고디비에서 wt파일 찾는 법.for db_na..
MongoDB: TooManyLogicalSessions 에러
·
📊DB/MongoDB
ERROR Casepymongo.errors.OperationFailure: cannot add session into the cache, full error: {‘operationTime’: Timestamp(1714353661, 2), ‘ok’: 0.0, ‘errmsg’: ‘cannot add session into the cache’, ‘code’: 261, ‘codeName’: ‘TooManyLogicalSessions’, ‘$clusterTime’: {‘clusterTime’: Timestamp(1714353661, 2), ‘signature’: {‘hash’: b’\x81\xd5\x8f0[\x82\xcb{\xd8]\xd4\xba\x97\xc4\x0f+R \x88"’, ‘keyId’: 73174..
MongoDB: 레플리카 셋 구축 가이드
·
📊DB/MongoDB
MongoDB 레플리카 셋 구축 가이드몽고디비 레플리카 셋 구축.ON-premise 서버 교체로 인해 몽고디비 레플리카셋 테스트의 기록몽고디비를 같은 버전으로 설치sudo vi /etc/yum.repos.d/mongodb-org-4.0.repo---[mongodb-org-4.0]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc몽고디비 4.0.28 버전 설치sudo yum install -y mongodb-org-4.0.28설치되는 것들• m..
MongoDB: Logical Session vs 일반 Session
·
📊DB/MongoDB
몽고디비에서는 일반적으로 사용되는 세션과 Logical Session 두 가지 유형의 세션이 있습니다.일반 세션(Session):이전 버전의 MongoDB에서 사용되는 일반적인 세션입니다.클라이언트가 데이터베이스와 상호 작용할 때 일반 세션을 사용하여 트랜잭션을 관리합니다.클라이언트가 데이터를 변경할 때 해당 변경 사항을 확정(commit)하거나 취소(abort)할 수 있습니다.Logical Session (논리적 세션):MongoDB 4.0부터 도입된 개념으로, 클라이언트와 서버 간의 통신을 추적하는 데 사용됩니다.Logical Session은 트랜잭션을 실행하거나 관리하는 것이 아니라, 클라이언트와 데이터베이스 간의 일관된 상태를 유지하기 위해 사용됩니다.Logical Session은 일련의 연속적인..