MySQL의 세 가지 로그 종류: Binlog, Redo Log, Undo Log의 차이점

세 가지의 차이점

Binlog, Redo Log 및 Undo Log는 데이터베이스 시스템의 중요한 로그 구성 요소이며 각각 다른 문제를 해결하는 데 사용됩니다.

  1. Binlog(바이너리 로그):
    • 차이점: Binlog는 MySQL 데이터베이스의 로그로, INSERT, UPDATE, DELETE 문 등과 같은 데이터베이스의 논리적 변경 작업을 기록하는 데 사용됩니다. 바이너리 형식으로 기록되며 데이터 복구, 데이터베이스 복제 및 데이터 동기화에 사용됩니다.
    • 해결된 문제: Binlog는 주로 데이터 복구 및 데이터베이스 복제에 사용됩니다. 논리적 연산을 기록함으로써 장애 발생 시 손실된 데이터를 복구할 수 있으며, 마스터-슬레이브 복제 시 데이터 동기화가 지원됩니다.
  2. 재실행 로그(재실행 로그):
    • 차이점: Redo Log는 데이터베이스 엔진의 로그로, 데이터 페이지 수정 등 데이터베이스의 물리적 변경 작업을 기록하는 데 사용됩니다. 일반적으로 디스크의 로그 파일에 추가되는 순차적 방식으로 로그인합니다.
    • 해결된 문제: Redo Log는 주로 데이터베이스 트랜잭션 지속성과 충돌 복구를 보장하는 데 사용됩니다. Redo Log에 물리적 작업을 기록하면 데이터베이스가 충돌하더라도 Redo 로그 재생을 통해 커밋된 트랜잭션을 복구하고 데이터 일관성을 보장할 수 있습니다.
  3. 실행 취소 로그:
    • 차이점: Undo Log는 데이터베이스 엔진의 로그로 트랜잭션의 롤백 정보를 기록하는 데 사용됩니다. 즉, 커밋된 트랜잭션에 의해 수행된 수정 작업을 취소하는 데 사용됩니다. 트랜잭션 롤백 작업을 지원하기 위해 트랜잭션 실행 중 이전 값의 백업을 기록합니다.
    • 문제 해결: Undo Log는 주로 트랜잭션 롤백 및 동시성 제어에 사용됩니다. 트랜잭션을 롤백해야 하는 경우 Undo Log에 저장된 이전 값을 사용하여 트랜잭션이 시작되기 전의 상태로 데이터를 복원할 수 있습니다. 또한 Undo Log는 MVCC(다중 버전 동시성 제어)에서도 사용되어 트랜잭션 격리 및 동시 액세스의 일관성을 제공합니다.

요약하다:

  • Binlog는 데이터 복구 및 데이터베이스 복제를 위한 논리적 변경 작업을 기록합니다.
  • Redo Log는 물리적 변경 작업을 기록하여 트랜잭션 지속성과 충돌 복구를 보장합니다.
  • Undo Log는 트랜잭션 롤백 및 동시성 제어를 위한 트랜잭션 롤백 정보를 기록합니다.

크기와 저장

Binlog, Redo Log, Undo Log는 크기와 저장 방식에서 다음과 같은 차이점이 있습니다.

  1. 크기:
    • Binlog 크기: Binlog의 크기는 데이터베이스 작업의 유형과 빈도에 따라 다릅니다. 데이터베이스의 논리적 변경 작업을 기록하므로 그 크기는 실행된 SQL 문 수 및 데이터 수정량과 관련이 있습니다.
    • 리두 로그 크기: 리두 로그의 크기는 트랜잭션 수와 크기, 데이터베이스 쓰기 작업 빈도에 따라 달라집니다. 데이터베이스의 물리적 변경 작업을 기록하므로 크기는 트랜잭션의 커밋 빈도 및 데이터 수정 양과 관련됩니다.
    • 실행 취소 로그 크기: 실행 취소 로그의 크기는 데이터베이스의 활성 트랜잭션 수와 각 트랜잭션의 크기에 따라 달라집니다. 트랜잭션의 롤백 정보를 기록하므로 그 크기는 트랜잭션 수 및 수정된 데이터의 양과 관련이 있습니다.
  2. 저장 방법:
    • Binlog 저장 방식: Binlog는 일반적으로 바이너리 파일 형태로 파일 시스템에 저장되며, 저장 위치와 보존 시간을 구성할 수 있습니다. 데이터베이스 서버에 로컬로 저장하거나 복제 및 데이터 동기화를 위해 네트워크를 통해 다른 서버로 전송할 수 있습니다.
    • Redo Log 저장 방법: Redo Log는 일반적으로 전용 디스크 공간에 순환 쓰기 방식으로 저장되는데, 이를 Redo Log 파일 그룹이라고 합니다. 데이터베이스 엔진은 지속성과 충돌 복구를 보장하기 위해 Redo 로그를 Redo 로그 파일에 추가합니다.
    • Undo Log 저장 방법: Undo Log는 일반적으로 데이터 페이지나 롤백 세그먼트 형태로 데이터베이스의 데이터 파일에 저장됩니다. 데이터베이스 엔진은 트랜잭션의 롤백 정보를 기록하기 위해 트랜잭션별로 Undo Log 공간을 할당하고, 이전 버전의 데이터를 롤백하거나 읽어야 할 때 사용한다.

데이터베이스 엔진에 따라 구체적인 크기와 저장 방식이 달라질 수 있다는 점 참고하시기 바랍니다. 위 내용은 일반적인 특성 및 동작이지만 구체적인 구현은 데이터베이스 시스템 및 구성에 따라 다를 수 있습니다.

트리거 타이밍

데이터베이스 작업 중 Binlog, Redo Log, Undo Log가 트리거되는 시점은 다음과 같습니다.

  1. Binlog 트리거 타이밍:
    • 트랜잭션이 커밋되면 Binlog는 트랜잭션의 논리적 변경 작업을 기록합니다. 트랜잭션 커밋은 문에 의해 명시적으로 트리거될 수 있으며 COMMIT, 자동 커밋 모드에서는 각 개별 SQL 문이 실행 후 트랜잭션 커밋을 트리거합니다.
  2. 리두 로그 트리거 타이밍:
    • 트랜잭션이 실행되는 동안 Redo Log는 트랜잭션으로 인해 발생한 물리적 변경 사항을 데이터베이스에 기록합니다. 이러한 변경 작업은 Redo Log 버퍼에 기록됩니다.
    • 트랜잭션이 커밋되기 전이나 트랜잭션이 충돌할 때 Redo 로그 버퍼의 로그는 디스크의 Redo 로그 파일로 플러시됩니다.
  3. 실행 취소 로그 트리거 타이밍:
    • Undo Log는 트랜잭션이 실행되는 동안 해당 트랜잭션이 수행한 수정 작업에 대한 Undo 정보를 데이터베이스에 기록하며, 이는 트랜잭션 롤백 및 동시성 제어(예: 다중 버전 동시성 제어)를 구현하는 데 사용됩니다.
    • 트랜잭션 실행 중에 데이터가 수정되면 해당 실행 취소 로그 레코드가 실행 취소 로그 버퍼에 기록되거나 실행 취소 로그 파일에 직접 기록됩니다.

구체적인 트리거 타이밍은 데이터베이스 엔진 및 구성에 따라 달라질 수 있다는 점에 유의해야 합니다. 그러나 일반적으로 이러한 로그 구성 요소는 트랜잭션 실행 중 다양한 목적과 요구 사항에 따라 트리거되고 기록됩니다.

Guess you like

Origin blog.csdn.net/a772304419/article/details/132457623