MySQL Binlog 파일의 크기 증가 문제를 해결하는 방법은 무엇입니까?

MySQL Binlog 파일의 크기 증가 문제를 해결하는 방법은 무엇입니까?

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_binbinlog 생성을 제어합니다.

삭제된 상태로 유지하려면 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

바이너리 로그 파일의 크기/수를 관리하기 위해

관련 정보