DB 인프라 구성
단일 서버 구조 (Single Instance)
단일 물리/가상 서버에 DB 한 대만 운영하는 형태
특징
구조가 단순하고 구축 비용이 낮음
SPOF (단일 장애 지점) 존재
사용시기
개발 환경, 소규모 서비스
Master - Replica 구조 (복제 구조)
하나의 Master (Primary)가 쓰기를 담당하고, 하나 이상의 Replica (Secondary)가 읽기를 담당하는 구조
주로 읽기 성능 향상과 데이터 백업, 고가용성을 위해 사용
구성 요소 간 역할
Master: 쓰기 요청 처리, 트랜잭션 처리
Replica: Master의 데이터를 복제받아 읽기 요청 처리 (읽기 전용)
Replication Mechanism: Master의 변경 데이터를 Replica로 전달
특징
읽기와 쓰기가 분리됨
데이터 복제가 비동기 또는 동기 방식으로 이루어짐
장애 발생 시를 대비한 Master FailOver 필요
장점
읽기 처리량(Throughput) 향상
데이터 백업 용이
일부 장애 시 서비스 지속 가능
사용 시기
읽기 요청이 많은 서비스
실시간 동기화가 반드시 필요하지 않은 경우
백업과 장애 대응이 필요한 경우
Multi - Master 구조
여러 Master가 동시에 쓰기와 읽기를 처리할 수 있는 구조
데이터 동기화와 충돌 해결이 필요함
구성 요소 간 역할
Master: 모두 읽기/쓰기 가능
Conflict Resolution Mechanism: 데이터 충돌 처리
Replication: Master 간 데이터 동기화
특징
읽기/쓰기 분리 없이 분산 처리 가능
데이터 충돌 관리 필수
복잡한 네트워크 구조 필요
장점
쓰기 처리량 향상
고가용성 제공
특정 노드 장애 시에도 쓰기 가능
단점
데이터 충돌 가능성
관리 복잡
구현 비용 증가
사용 시기
글로벌 서비스 (여러 지역에서 동시 쓰기)
높은 쓰기 처리량이 필요한 경우
다운타임 없이 쓰기 가능해야하는 경우
Sharding 구조 (데이터 분할)
데이터를 여러 DB 서버에 분산 저장하여 처리하는 구조
데이터 단위를 기준으로 서버를 나누어 저장
구성 요소 간 역할
Shard Node: 데이터의 특정 범위를 저장
Router / Proxy: 요청을 적절한 Shard로 라우팅
특징
데이터를 수평적으로 분산
각 Shard는 독립적으로 읽기 / 쓰기를 처리 가능
노드의 추가와 삭제가 용이
장점
대규모 데이터 처리 가능
서버 부하 분산
확장성 (Scale out) 우수
단점
쿼리 복잡성 증가
트랜잭션 관리 어려움
노드 장애 시 일부 데이터 접근 어려움
사용 시기
데이터양이 매우 많거나 단일 DB 서버 성능으로 감당 불가능한 경우
클러스터링 구조 (Shared-Nothing / Shared-Disk)
여러 DB 노드가 하나의 DB 처럼 동작하도록 구성
구성 방법
Shared-Nothing: 각 노드가 독립적인 저장소를 사용. 노드 간 충돌이 없고 확장이 쉬움. 대규모 분산 DB에 사용
Shared-Disk: 모든 노드가 공용 스토리지 사용. 데이터 일관성 확보 쉽고 동시 접근이 가능
구성 요소 간 역할
DB nodes: 동시에 읽기/쓰기 가능
Cluster Manager: 노드 간 데이터 동기화, Failover 관리
특징
고가용성과 부하 분산
데이터 복제 및 동기화 필요
장애 대응 자동화 기능
장점
고가용성, Failover 용이
부하 분산
실시간 동기화 가능
단점
구현 복잡
비용 상승
네트워크와 스토리지 의존
사용 시기
고가용성이 필수인 금융, 쇼핑몰 등
읽기/쓰기 부하가 많은 서비스
DBMS 주요 로그 종류
- Error Log
서버 시작 / 중단
크래시 발생 원인
설정 오류
- Query Log (General)
모든 쿼리 기록
디버깅용 (운영 장기 사용 금물 / 기본적으로 기록을 안하며, 따로 기록 설정 필요)
- Slow Query Log
기준 시간 초과 쿼리 기록 (따로 설정 필요)
성능 병목 핵심 단서
- Binary Log (Replication)
복제 데이터 기록
장애 복구, 시점 복구에 필수
DBMS 모니터링
시스템 자원
CPU 사용량 (70% 이상 여부)
메모리 사용량 (Swap 사용 여부)
디스크 사용량 (IOPS / Latency)
네트워크 사용량 (패킷 Drop)
DB 지표
Connections (동시 접속)
QPS / TPS (부하)
Slow Queries (성능 / 느린 쿼리 정보)
Buffer Pool Hit (캐시 효율)
Lock (병목 여부)
Replication Delay (동기화 상태)
'Database > Database' 카테고리의 다른 글
| 개발자가 알면 좋은 Redis 꿀팁 모음 (0) | 2025.10.19 |
|---|---|
| 언제 어떤 DB를 사용해야 할까? (0) | 2025.03.18 |
| 2025년을 위한 7개의 데이터베이스 (1) | 2025.02.02 |
| 효율적인 데이터베이스 설계와 최적화 기법 (0) | 2024.08.17 |
| PostgreSQL VS MySQL (0) | 2024.07.07 |
