MySQL에서 바이너리 로그(Binary Log)는 데이터 변경 사항을 기록하는 중요한 기능입니다. 마스터-슬레이브 복제(Replication) 설정에서 사용되거나, 데이터 변경 내역을 추적하는 데 활용됩니다. 그러나 시간이 지나면 로그 파일이 쌓여 디스크 공간을 차지하고 성능에 영향을 줄 수 있습니다.
MySQL PURGE BINARY LOGS란?
PURGE BINARY LOGS 명령어는 MySQL의 오래된 바이너리 로그를 정리하여 디스크 공간을 확보하는 기능을 합니다.
바이너리 로그가 불필요하게 많아지면 서버의 성능 저하, 디스크 용량 부족, 백업 속도 저하 등의 문제가 발생할 수 있으므로 주기적인 정리가 필요합니다.
PURGE BINARY LOGS의 주요 기능
- 불필요한 바이너리 로그 정리
- 설정된 보관 기간이 지난 오래된 바이너리 로그를 삭제하여 디스크 공간을 확보
- 마스터-슬레이브 복제 환경에서 활용
- 슬레이브가 읽은 로그만 삭제하여 복제 환경을 유지하면서 정리 가능
- 서버 성능 최적화
- 불필요한 로그 파일을 줄여 서버 성능을 향상
- 특정 시점 이전의 로그만 삭제 가능
- 특정 로그 파일 이전까지만 삭제하여 안전하게 정리 가능
MySQL PURGE BINARY LOGS 기본 문법
PURGE BINARY LOGS TO 'mysql-bin.000012';
또는
PURGE BINARY LOGS BEFORE '2024-02-01 00:00:00';
PURGE BINARY LOGS 사용 예제
1. 특정 바이너리 로그까지 삭제
현재 MySQL 서버에서 바이너리 로그 목록을 확인합니다.
SHOW BINARY LOGS;
예제 실행 결과:
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000010 | 150MB |
| mysql-bin.000011 | 200MB |
| mysql-bin.000012 | 180MB |
| mysql-bin.000013 | 220MB |
+------------------+-----------+
여기서 mysql-bin.000011까지의 로그를 삭제하려면 다음 명령어를 실행합니다.
PURGE BINARY LOGS TO 'mysql-bin.000012';
이 명령어를 실행하면 mysql-bin.000011까지의 바이너리 로그가 삭제되고, mysql-bin.000012부터 유지됩니다.
2. 특정 날짜 이전의 로그 삭제
바이너리 로그를 특정 날짜 이전까지 삭제하려면 BEFORE 옵션을 사용합니다.
PURGE BINARY LOGS BEFORE '2024-02-01 00:00:00';
이렇게 하면 2024년 2월 1일 이전에 생성된 모든 바이너리 로그가 삭제됩니다.
3. 슬레이브 복제 환경에서 안전하게 삭제
마스터-슬레이브 복제 환경에서는 바이너리 로그를 삭제하기 전에 슬레이브가 어느 지점까지 읽었는지 확인해야 합니다.
슬레이브가 마지막으로 읽은 로그 파일을 확인하는 방법:
SHOW SLAVE STATUS\G;
출력 예제:
Relay_Master_Log_File: mysql-bin.000012
Exec_Master_Log_Pos: 3456789
이 경우 mysql-bin.000012 이후의 로그가 아직 사용되고 있으므로 mysql-bin.000011까지의 로그만 삭제해야 합니다.
PURGE BINARY LOGS TO 'mysql-bin.000012';
4. 바이너리 로그 삭제 후 로그 목록 확인
SHOW BINARY LOGS;
이 명령어를 실행하면 삭제 후 남아 있는 바이너리 로그 목록을 확인할 수 있습니다.
PURGE BINARY LOGS 활용 시 주의할 점
1. SUPER 권한 필요
- PURGE BINARY LOGS를 실행하려면 SUPER 권한이 필요합니다.
- 권한이 부족하면 ERROR 1227 (42000): Access denied 오류가 발생할 수 있습니다.
- 해결 방법:
GRANT SUPER ON *.* TO 'admin_user'@'%';
FLUSH PRIVILEGES;
2. 삭제된 로그는 복구할 수 없음
- PURGE BINARY LOGS를 실행하면 해당 로그는 복구할 수 없으므로, 필요한 경우 백업 후 삭제해야 합니다.
- 로그 백업 예제:
cp /var/lib/mysql/mysql-bin.000010 /backup/
3. 슬레이브 복제 환경에서는 주의 필요
- 슬레이브가 아직 읽지 않은 로그를 삭제하면 복제 오류가 발생할 수 있으므로 주의해야 합니다.
- SHOW SLAVE STATUS\G;로 슬레이브 상태를 먼저 확인하는 것이 중요합니다.
4. 자동 로그 정리 설정 가능
- MySQL에서는 자동으로 일정 기간이 지난 로그를 정리할 수 있도록 설정할 수 있습니다.
SET GLOBAL expire_logs_days = 7;
이 설정을 하면 7일이 지난 바이너리 로그는 자동으로 삭제됩니다.
결론
MySQL PURGE BINARY LOGS 명령어는 오래된 바이너리 로그를 삭제하여 디스크 공간을 확보하고 서버 성능을 최적화하는 기능을 제공합니다.
특히 마스터-슬레이브 복제 환경에서 로그를 안전하게 정리하려면 주의해야 하며, 필요 시 자동 삭제 설정을 활용하는 것도 좋은 방법입니다.
로그 삭제 전에 SUPER 권한을 확인하고, 필요 시 로그 백업을 수행하는 것이 중요합니다.
참고 자료
공식 가이드 문서: https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html
'DB' 카테고리의 다른 글
[MySQL] CREATE SPATIAL INDEX 완벽 가이드 사용법(공간 데이터 검색을 위한 고성능 인덱스) (0) | 2025.02.20 |
---|---|
[MySQL] SET DEFAULT ROLE 완벽 가이드 사용법(사용자 권한 관리) (0) | 2025.02.20 |
[MySQL] CREATE FULLTEXT INDEX 완벽 가이드 사용법(전문 검색[Full-Text Search] 인덱스 활용) (1) | 2025.02.20 |
[MySQL] RESET SLAVE / RESET REPLICA 완벽 가이드 사용법(복제 환경 초기화 및 재설정) (0) | 2025.02.20 |
[MySQL] DROP SERVER 완벽 가이드 사용법(원격 서버 삭제) (0) | 2025.02.20 |
[MySQL] ALTER SERVER 완벽 가이드 사용법(원격 데이터 소스 수정) (0) | 2025.02.20 |
[MySQL] CREATE SERVER 완벽 가이드 사용법(원격 데이터 소스 등록) (0) | 2025.02.19 |
[MySQL] UNINSTALL PLUGIN 완벽 가이드 사용법(플러그인 삭제) (0) | 2025.02.18 |