바이너리 로그(Binary Log) 저장 방식

Kkd·2025년 1월 2일
0

매일메일 개념정리

목록 보기
50/93

바이너리 로그(Binary Log) 저장 방식

바이너리 로그(Binary Log)는 데이터베이스 시스템(예: MySQL)에서 데이터 변경 내역을 기록하는 파일입니다. 주로 복제(Replication)데이터 복구(Recovery)에 사용됩니다. 이 로그는 데이터 변경 작업(쓰기, 업데이트, 삭제 등)만 기록하며, 읽기 작업은 포함되지 않습니다.


Binary Log 저장 방식

  1. 파일 형태로 저장:

    • 바이너리 로그는 파일로 저장됩니다.
    • MySQL에서는 기본적으로 mysql-bin.000001, mysql-bin.000002와 같은 순차적인 파일로 저장됩니다.
    • 로그 파일은 최대 크기(max_binlog_size)에 도달하면 새 파일로 전환됩니다(롤오버).
  2. 시퀀스 번호:

    • 로그 파일 이름은 순차적인 시퀀스 번호로 구분됩니다.
    • 예: mysql-bin.000001, mysql-bin.000002 등.
  3. 로그 포지션(Log Position):

    • 각 바이너리 로그 파일은 포지션(Position) 정보를 포함합니다.
    • 포지션은 파일 내에서 각 이벤트의 위치를 나타내며, 복제나 데이터 복구 시 중요한 역할을 합니다.
  4. 이벤트 기반 기록(Event-Based Logging):

    • 바이너리 로그는 SQL 문장이 아니라, 데이터베이스에서 발생한 변경 작업을 이벤트(event)로 기록합니다.
    • 주요 이벤트:
      • Query Event: INSERT, UPDATE, DELETE와 같은 SQL 쿼리 기록.
      • Transaction Event: 트랜잭션 시작/종료(BEGIN, COMMIT, ROLLBACK) 기록.
      • DDL Event: 테이블 생성/삭제, 스키마 변경 등.
  5. 로그 파일 경로:

    • 기본적으로 MySQL 데이터 디렉토리에 저장됩니다.
    • my.cnf 파일에서 경로를 설정할 수 있습니다.
      log_bin = /var/log/mysql/mysql-bin.log

Binary Log 기록 방식

  1. ROW-Based Logging (행 기반 로깅)

    • 변경된 데이터 행 자체를 기록.
    • 예: UPDATE 명령으로 특정 행의 값을 바꾼 경우, 해당 행의 이전 값과 변경된 값을 기록.
    • 장점: 정확하고 일관된 복제 가능.
    • 단점: 큰 데이터 변경 시 로그 크기가 커질 수 있음.
  2. STATEMENT-Based Logging (문장 기반 로깅)

    • 실행된 SQL 문장을 기록.
    • 예: UPDATE employees SET salary = 5000 WHERE id = 1;
    • 장점: 로그 크기가 작음.
    • 단점: 특정 SQL 문장(비결정적 함수 사용 등)이 복제에서 일관성을 보장하지 못할 수 있음.
  3. MIXED-Based Logging (혼합 기반 로깅)

    • 기본적으로 STATEMENT 기반으로 기록하되, 필요한 경우 ROW 기반으로 전환.
    • 복제에서 일관성과 성능을 모두 고려.

Binary Log 활용 사례

  1. Replication(복제):

    • 마스터 DB의 변경 사항이 바이너리 로그에 기록되고, 슬레이브 DB는 이를 읽어와 데이터를 동기화.
    • 슬레이브 설정 시 로그 파일 이름과 포지션 정보 지정:
      CHANGE MASTER TO
          MASTER_LOG_FILE='mysql-bin.000001',
          MASTER_LOG_POS=107;
      START SLAVE;
  2. Point-In-Time Recovery:

    • 특정 시점까지 데이터를 복구하기 위해 바이너리 로그 사용.
    • 예: 데이터베이스 백업 이후의 변경 사항만 복구.
  3. Audit 및 변경 추적:

    • 데이터 변경 내역을 추적하거나, 데이터 무결성 검사를 위해 활용.

Binary Log의 장점

  • 데이터 복구 가능: 바이너리 로그를 이용해 손실된 데이터를 복구.
  • 복제 지원: 마스터-슬레이브 복제를 위한 변경 사항 전달.
  • 효율적인 저장: 변경 작업만 기록하여 공간 절약.

Binary Log 관리

  1. 로그 보존 기간 설정:

    • 오래된 로그를 자동 삭제:
      expire_logs_days = 7
    • 7은 로그를 7일간 보관.
  2. 로그 크기 제한:

    • 로그 파일 크기 제한:
      max_binlog_size = 100M
    • 기본값은 1GB.
  3. 로그 삭제:

    • 수동으로 로그 삭제:
      PURGE BINARY LOGS TO 'mysql-bin.000010';
    • 특정 시점 이후의 로그를 유지:
      PURGE BINARY LOGS BEFORE '2024-01-01 00:00:00';

결론

바이너리 로그는 데이터베이스 변경 사항을 효율적으로 저장하고, 복제와 복구를 지원하는 핵심적인 로그 파일입니다. 데이터 무결성을 유지하며, 로그를 적절히 관리하여 시스템 성능과 안정성을 보장할 수 있습니다.

profile
🌱

0개의 댓글