한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

게임 렉 백서 › L12 데이터베이스

DB 장애 전환 Database failover

원인 ID db-failover · 주 담당 인프라팀·DB 인프라 · 함께 게임개발팀·서버 개발

그림과 실험이 있는 원본 카드로 열기 →

주 DB가 죽어 예비 DB로 전환되는 동안 쓰기가 안 되고 복제되지 못한 마지막 데이터는 사라질 수 있습니다.

왜 주 DB 장애로 예비 DB가 승격 → 그러면 전환 중 수 초~몇 분 쓰기 불가, 비동기 복제라면 미복제 데이터 유실 가능 → 화면에서는 잠깐 모든 저장 실패, 아이템·경험치 롤백

증상
씹힘·롤백, 멈춤, 접속 끊김, 접속 불가·무한 로딩
요인
정체, 손실
누가 겪나
서버 전체
언제
가끔 무작위로
담당
주 담당 인프라팀·DB 인프라 · 함께 게임개발팀·서버 개발
게임개발팀 할 일
재시도 가능한 저장, 끊긴 연결을 빨리 버리고 새 주소로 다시 맺는 설정(커넥션 풀·DNS 캐시), 전환 훈련 때 재연결 확인.
인프라팀 할 일
동기·반동기 복제(쓰기 지연과 맞바꿈), 전환 훈련, 전환 시간·복제 지연 모니터링.
수치 감각
관리형 DB의 자동 전환은 보통 수십 초~2분. 비동기 복제라면 복제 지연만큼(1초 미만~수 초) 최근 저장을 잃을 수 있습니다.
그래프에서는
연결이 한꺼번에 끊김 · DB 연결 수, 쓰기 오류 수
확인할 곳
DB 쪽 장애 전환 기록(RDS는 이벤트 RDS-EVENT-0013 전환 시작·RDS-EVENT-0049 전환 완료, 직접 운영하는 DB는 승격 로그)과 게임 서버의 DB 연결 수·연결 오류 수를 한 그래프에 놓음. 비동기 복제라면 장애 직전의 복제 지연(RDS ReplicaLag, PostgreSQL pg_stat_replication의 replay_lag)도 봄
이러면 맞음
저장 실패가 한 구간에 몰리고 그 구간이 장애 전환 시작·완료 사이와 겹침. 되돌아간 양이 장애 직전 복제 지연과 비슷함. 전환이 끝난 뒤에도 오류가 이어지는 게임 서버는 옛 주소로 맺은 연결을 계속 쓰고 있는 것
이러면 아님
전환 기록이 없는 시각의 연결 끊김은 네트워크나 DB 과부하 쪽
확인 수단
인프라 도구로 확인(게임 코드 불필요)
실제 사례
Riot Games 2021: League of Legends EUW 5시간 장애: 부가 DB 하나가 서버 전체를 멈춤

출처

  1. Failing over a Multi-AZ DB instance for Amazon RDS AWS
    Multi-AZ 전환은 보통 60~120초, 전환 뒤 연결을 다시 맺어야 하고 JVM의 DNS 캐시 TTL은 60초 이하 권장
  2. High availability for Amazon Aurora AWS
    장애 중 읽기·쓰기가 실패하고 보통 60초 안(흔히 30초 안)에 복구
  3. Semisynchronous Replication MySQL
    비동기 복제는 주 DB가 죽으면 커밋한 트랜잭션이 복제본에 없을 수 있음, 반동기는 복제본 하나의 수신 확인을 기다려 줄이는 대신 지연이 늘어남
  4. Log-Shipping Standby Servers (PostgreSQL Documentation) PostgreSQL
    로그 전달은 비동기라 주 서버가 죽으면 아직 보내지 못한 트랜잭션을 잃음, 스트리밍 복제 지연은 보통 1초 미만
  5. Amazon RDS event categories and event messages AWS
    RDS-EVENT-0013: Multi-AZ 장애 전환 시작, RDS-EVENT-0049: Multi-AZ 장애 전환 완료
  6. Amazon CloudWatch metrics for Amazon RDS AWS
    ReplicaLag: 읽기 복제본이 원본보다 뒤처진 시간(초)
  7. The Cumulative Statistics System (PostgreSQL Documentation) PostgreSQL
    pg_stat_replication의 replay_lag: 주 서버가 WAL을 기록한 뒤 복제본이 적용했다고 알릴 때까지 걸린 시간

함께 보면 좋은 원인

같은 층: L12 데이터베이스

같은 증상(씹힘·롤백)의 다른 층 원인

그림과 실험이 있는 원본 카드 보기