
MySQL Binlog 파일 수는 날마다 증가하고 있으며 크기는 기가바이트 단위로 증가하고 있습니다. binlog 파일의 크기 증가를 어떻게 막을 수 있습니까? 디스크 공간을 가득 채우고 있습니다.
답변1
MySQL8에서는 기본적으로 바이너리 로깅을 활성화했으며 바이너리 로그의 기본 제거(만료/삭제)는 30일로 설정되어 있습니다.
SSH와 mysql에 있으면 아래 명령을 사용할 수 있습니다.
바이너리 로그를 표시하려면
mysql> SHOW BINARY LOGS;
어느 시점까지 바이너리 로그를 수동으로 제거하려면
mysql> PURGE BINARY LOGS TO 'binlog.000142';
자동 기본 제거 만료를 30일(기본값)에서 3일로 변경
mysql> SET GLOBAL binlog_expire_logs_seconds = 259200;
Query OK, 0 rows affected (0.00 sec)
mysql> SET PERSIST binlog_expire_logs_seconds = 259200;
Query OK, 0 rows affected (0.01 sec)
위 값은 초 단위입니다. 즉, 3일(초) = (60초 x 60분 x 24시간 x 3일) = 259200입니다.
답변2
해당 바이너리 로그를 보관할 필요가 없으면 다음과 같이 MySQL 내에서 해당 로그를 "삭제"할 수 있습니다.
mysql> PURGE BINARY LOGS BEFORE '2021-01-01 00:00:00';
물론 날짜는 원할 때 언제든지 변경할 수 있습니다. 특정 바이너리 로그 파일로 잘라내려면 다음과 같이 할 수 있습니다.
mysql> PURGE BINARY LOGS TO 'mysql-bin.12345';
트리밍할 실제 파일을 지정해야 합니다.
중요한:단순히 파일 시스템에서 파일을 삭제하지 마십시오. MySQL은 미래에 끔찍한 방식으로 불평을 할 것입니다. 다음을 사용하여 불필요한 가동 중지 시간을 절약하세요. PURGE BINARY LOGS
MySQL 내에서 명령을 실행합니다.
답변3
복제 및 특정 형태의 백업에는 Binlog가 필요합니다. 당신도하고 있지 않은 것 같습니다.
설정을 변경하려면 다음과 같은 새 파일을 추가하고 싶습니다. 여기서 "rj"는 내 이니셜입니다.
/etc/mysql/mysql.conf.d/rj.cnf
아래와 같이 재정의를 적용합니다. 그 안에. 변경한 후,
sudo systemctl restart mysql
log_bin
binlog 생성을 제어합니다.
삭제된 상태로 유지하려면 binlog_expire_logs_seconds = 86400
(또는 다른 번호)를 추가하세요.
또 다른 설정은 각 binlog 파일의 최대 크기를 제어합니다. 마지막 파일이 "만료"될 때까지 유지된다는 점을 제외하면 사용된 전체 디스크 공간에는 영향을 미치지 않습니다. 재부팅(또는 mysql을 다시 시작한 후) 후에 새 binlog가 시작되므로 작은 파일이 많이 표시될 수 있습니다.
따라서 내 rj.cnf 파일에는 다음 중 일부가 있을 수 있습니다.
# Added by Rick James
[mysqld]
log_bin = # turn off
binlog_expire_logs_seconds = 86400 # 1 day
max_binlog_size = 104857600 # 100M
답변4
다음에서 사용 가능한 스크립트를 사용할 수 있습니다. https://github.com/Thibs/monitor_mysql_binary_logging/blob/main/monitor_mysql_binary_logging.sh
바이너리 로그 파일의 크기/수를 관리하기 위해