바이너리 로그(Binary Log)는 데이터베이스 시스템(예: MySQL)에서 데이터 변경 내역을 기록하는 파일입니다. 주로 복제(Replication) 및 데이터 복구(Recovery)에 사용됩니다. 이 로그는 데이터 변경 작업(쓰기, 업데이트, 삭제 등)만 기록하며, 읽기 작업은 포함되지 않습니다.
파일 형태로 저장:
mysql-bin.000001
, mysql-bin.000002
와 같은 순차적인 파일로 저장됩니다.max_binlog_size
)에 도달하면 새 파일로 전환됩니다(롤오버).시퀀스 번호:
mysql-bin.000001
, mysql-bin.000002
등.로그 포지션(Log Position):
이벤트 기반 기록(Event-Based Logging):
BEGIN
, COMMIT
, ROLLBACK
) 기록.로그 파일 경로:
my.cnf
파일에서 경로를 설정할 수 있습니다.log_bin = /var/log/mysql/mysql-bin.log
ROW-Based Logging (행 기반 로깅)
UPDATE
명령으로 특정 행의 값을 바꾼 경우, 해당 행의 이전 값과 변경된 값을 기록.STATEMENT-Based Logging (문장 기반 로깅)
UPDATE employees SET salary = 5000 WHERE id = 1;
MIXED-Based Logging (혼합 기반 로깅)
Replication(복제):
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
Point-In-Time Recovery:
Audit 및 변경 추적:
로그 보존 기간 설정:
expire_logs_days = 7
7
은 로그를 7일간 보관.로그 크기 제한:
max_binlog_size = 100M
로그 삭제:
PURGE BINARY LOGS TO 'mysql-bin.000010';
PURGE BINARY LOGS BEFORE '2024-01-01 00:00:00';
바이너리 로그는 데이터베이스 변경 사항을 효율적으로 저장하고, 복제와 복구를 지원하는 핵심적인 로그 파일입니다. 데이터 무결성을 유지하며, 로그를 적절히 관리하여 시스템 성능과 안정성을 보장할 수 있습니다.