MySQL binlog 자동 정리로 디스크 절약이 필요했던 건 df -h를 보니 /var/lib/mysql/이 15GB를 차지하고 있었고, 그 안에 mysql-bin.000001부터 수백 개의 binlog 파일이 쌓여 있었을 때입니다. binlog는 MySQL 복제(replication)와 특정 시점 복구에 쓰이는데, 복제 없이 단독 서버에서는 일정 기간 이후 삭제해도 됩니다.
# binlog 파일 크기 확인
ls -lh /var/lib/mysql/mysql-bin.* 2>/dev/null | tail -20
du -sh /var/lib/mysql/
# MySQL에서 binlog 목록 확인
mysql -u root -p -e "SHOW BINARY LOGS;"
# binlog 활성화 여부 확인
mysql -u root -p -e "SHOW VARIABLES LIKE 'log_bin';"
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# binlog 보관 기간 설정 (일 단위, MySQL 8.0+)
binlog_expire_logs_seconds = 604800 # 7일 (7 * 24 * 3600)
# MySQL 5.7 이하
# expire_logs_days = 7
sudo systemctl restart mysql
# 설정 확인
mysql -u root -p -e "SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';"
# 현재 사용 중인 binlog 확인
mysql -u root -p -e "SHOW MASTER STATUS;"
# 특정 파일 이전 binlog 삭제 (현재 사용 중인 것 제외)
mysql -u root -p -e "PURGE BINARY LOGS TO 'mysql-bin.000150';"
# 날짜 기준 삭제 (7일 이전)
mysql -u root -p -e "PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);"
단독 운영 서버에서 binlog가 필요 없다면 아예 비활성화할 수도 있습니다. 단, binlog를 끄면 특정 시점 복구가 불가능하므로, 정기 전체 백업(mysqldump)을 믿을 수 있을 때만 고려하세요.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)