OSS의 인스턴스 실행에 관해

Gunju Kim·2025년 7월 9일

work

목록 보기
2/3

✅ 왜 InfluxDB는 두 인스턴스를 동시에 실행하면 충돌이 나는가?

🔧 기본 원리

InfluxDB는 하나의 서버가 "데이터를 안전하게 저장하고 읽는 것" 을 책임지는 시스템입니다.
이를 위해 index 파일, WAL 파일, TSM 데이터 파일, meta 정보 등을 디스크 상의 물리적 파일들로 관리합니다.

📚 교과서적 비유: "도서관 사서 시스템"

생각해봅시다.

🏛️ 1. 데이터베이스 = 도서관
책들이 = 실제 데이터 파일들 (.tsm)

책을 빌리고 기록하는 장부 = 메타 정보 (meta.db)

빌리기 전 임시 메모장 = WAL (Write Ahead Log)

책 위치 색인 카드 = index

🧍‍♂️ 2. InfluxDB 인스턴스 = 도서관 사서
InfluxDB가 하나의 인스턴스로 실행되면,

마치 한 명의 사서가 도서관의 모든 책과 기록을 정확히 알고 관리하는 상황이에요.

사서는:

  • 책을 대출하면 기록을 남기고

  • 책을 정리하면서 색인(index) 도 갱신하고

  • 임시 메모장(WAL) 에 적었다가 나중에 정식 기록부에 옮기기도 하죠

💥 그런데, 사서가 두 명이라면?
두 명의 사서가 동시에 같은 도서관 장부를 들고, 서로 모르게 작업을 시작하면 어떤 일이 벌어질까요?

상황문제점
두 사서가 같은 책을 동시에 빌려준다고 기록함→ 중복되거나 충돌된 기록
한 명은 색인을 업데이트하고, 다른 한 명은 옛날 색인으로 찾음→ 데이터 일관성 오류
동시에 메모장을 바꾸다가 서로 내용 덮어씀→ WAL 손상 및 복구 실패
누가 언제 무엇을 기록했는지 알 수 없게 됨→ 시스템이 무너짐

⚠️ InfluxDB 입장에서 보면?

InfluxDB는 내부적으로 다음을 전제로 설계되어 있습니다:

  • "이 데이터 디렉토리는 나 혼자만 사용한다"

  • 그래서 락 파일(LOCK)을 만들어 두고, 다른 인스턴스는 접근하지 못하게 해야 정상

하지만 두 인스턴스를 강제로 실행하면 락이 무시되거나 공유 자원에 대한 충돌이 생기게 되고,

index 깨짐, WAL flush 충돌, meta.db 손상 등으로 이어져
데이터가 영구적으로 망가질 수 있습니다.

✅ 요약 정리

항목설명
InfluxDB는 파일 기반의 DB내부 파일 시스템을 신뢰성 있게 관리함
동시에 두 인스턴스가 실행되면같은 파일을 두 개의 손이 덮어쓰는 꼴
결과index 오염, WAL 꼬임, meta 손상 → 데이터 파괴
해결한 번에 하나의 인스턴스만 실행, 테스트는 디렉토리 복사로 나눠서 실행
profile
처음이라서 그래 가본적 없던 길에

0개의 댓글