MariaDB Docker lagre db/binlog.* 파일. 장애 지점까지 디스크 오버플로

MariaDB Docker lagre db/binlog.* 파일. 장애 지점까지 디스크 오버플로

어떻게 고치는 지?

ls -lh /root/docker/yml/nextcloud/db/binlog.*

-rw-rw---- 1 999 999 960M Aug 25 22:55 /root/docker/yml/nextcloud/db/binlog.000043
-rw-rw---- 1 999 999 5.5M Aug 25 23:52 /root/docker/yml/nextcloud/db/binlog.000044
-rw-rw---- 1 999 999 156M Aug 26 23:40 /root/docker/yml/nextcloud/db/binlog.000045
-rw-rw---- 1 999 999 260M Aug 28 15:10 /root/docker/yml/nextcloud/db/binlog.000046
-rw-rw---- 1 999 999 548M Sep  1 00:03 /root/docker/yml/nextcloud/db/binlog.000047
-rw-rw---- 1 999 999 593M Sep  4 11:28 /root/docker/yml/nextcloud/db/binlog.000048
-rw-rw---- 1 999 999  13M Sep  4 13:21 /root/docker/yml/nextcloud/db/binlog.000049
-rw-rw---- 1 999 999 529M Sep  9 22:20 /root/docker/yml/nextcloud/db/binlog.000050
-rw-rw---- 1 999 999  128 Sep  4 13:26 /root/docker/yml/nextcloud/db/binlog.index

Docker 작성 yml DB 부분

services:
  db:
    image: mariadb:10.6
    container_name: nextcloudDB
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW --expire_logs_days=2
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=d`X'1B7Ss/=E;JxROOT
      - MYSQL_PASSWORD=d`X'3B7SD/dE;Jx
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    logging:
            driver: "json-file"
            options:
                max-size: "50m"
                max-file: "10"

- ./db:/var/lib/mysql 특수 추가 ./를 ./db에 백업용으로 추가

답변1

바이너리 로그는 데이터 복구, 복제 및 데이터베이스 모니터링에 사용됩니다. 그리고 오래된 것을 지울 수도 있습니다. 이 답변을 인용하면DB

mysqld가 이를 수행하도록 해야 합니다. mysqld가 이를 관리하는 방법은 다음과 같습니다:

mysql-bin.[index] 파일은 mysqld가 생성하고 자동 회전하는 모든 바이너리 로그 목록을 유지합니다. mysql-bin.[index]와 함께 binlog를 정리하는 메커니즘은 다음과 같습니다.

PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';

답변2

그만큼바이너리 로그 사용 및 유지 관리MariaDB 지식 베이스의 페이지에는 바이너리 로그를 제거하는 방법에 대한 정보가 있습니다.

서버의 모든 바이너리 로그 파일을 삭제하려면 다음을 실행하세요.마스터 재설정명령. 특정 날짜 시간 이전 또는 특정 숫자까지 모든 바이너리 로그를 삭제하려면 다음을 사용하세요.바이너리 로그 제거.

이 페이지에서는 binlog 보존을 자동으로 처리하는 방법도 설명합니다.

다음을 사용하여 로그 파일을 자동으로 제거할 수도 있습니다.만료_로그_일시스템 변수. 이는 기본적으로 0(제거 없음)으로 설정되지만, 이진 로그 파일이 자동으로 제거되는 시간(일)으로 설정할 수 있습니다. 로그 파일은 로그 회전 시 만료_logs_days보다 오래된지만 확인하므로 바이너리 로그가 느리게 채워지고 도달하지 않는 경우max_binlog_size매일 오래된 로그 파일이 계속 유지되는 것을 볼 수 있습니다. 다음을 실행하여 로그 회전을 강제로 수행하여 만료를 삭제할 수도 있습니다.플러시 바이너리 로그정기적으로. 항상 만료_로그_일을 가능한 복제 지연보다 높게 설정하세요.

귀하의 경우 낮추면 max_binlog_sizebinlog 회전이 더 자주 발생하여 보관되는 데이터의 양이 줄어드는 데 도움이 됩니다. --max_binlog_size=100M에 추가하면 MariaDB 서버는 바이너리 로그가 100MiB를 초과하면 바이너리 로그를 플러시합니다 command.docker-compose.yml

문서에서 언급했듯이 수동으로 FLUSH BINARY LOGS명령을 실행하여 binlog 회전을 강제로 수행하면 이전 파일 삭제가 트리거됩니다.

관련 정보