Undo_000 파일이 디스크의 대부분을 차지하고 있는데 제거할 수 있나요?

Undo_000 파일이 디스크의 대부분을 차지하고 있는데 제거할 수 있나요?

내 Webmin에 디스크가 꽉 찼다는 오류 메시지가 표시되었습니다. 조사 결과 내부에 있는 3개의 파일이 /var/lib/mysql너무 커진 것을 발견했습니다.

  1. mysql.ibd (8.8G)
  2. undo_001 (8.4G)
  3. undo_003 (2.5G)

이 파일을 제거할 수 있는지 확인하기 위해 검색했지만 undo_001 및 undo_002에 대한 명확한 정보가 없는 반면 제안은 mysql.ibd에 대한 것이었습니다.

파일을 안전하게 제거하려면 어떻게 해야 하며 어떤 파일을 서버에 복원해야 합니까? 현재로서는 0바이트가 비어 있고 서버에서 할 수 있는 일이 없습니다.

또 다른 질문은 이러한 파일이 너무 커지는 것을 방지하는 방법입니다.

파일 3개

답변1

파일을 안전하게 제거하려면 어떻게 해야 하며 어떤 파일을 서버에 복원해야 합니까? 현재로서는 0바이트가 비어 있고 서버에서 할 수 있는 일이 없습니다.

직접적으로는 아닙니다. 공간을 확보하려면 mysql 내에서 테이블을 삭제해야 합니다. 이는 설정한 경우 innodb에 대해서만 작동한다는 점에 유의하십시오. innodb_file_per_table그렇지 않으면 테이블을 삭제하고 전체 데이터베이스의 덤프를 생성한 후 다시 로드해야 합니다(그리고 그렇습니다... 공간이 필요합니다). 그렇지 않으면 데이터베이스 파일이 축소되지 않습니다.

더 쉬운 방법은 시스템에서 다른 파일을 제거하는 것입니다.

2 UNDO 파일에 관하여:

UNDO 테이블스페이스를 제거하는 명령은 다음과 같습니다.

ALTER UNDO TABLESPACE tablespace_name SET INACTIVE;
DROP UNDO TABLESPACE tablespace_name;

그리고 MySQL 프롬프트 내에서 이를 수행합니다. 롤백 기능이 상실됩니다.


mysql 데이터베이스를 루트 시스템과 동일한 시스템에 두지 마십시오. 파티션이나 다른 디스크를 사용하십시오. 1개의 디스크만 사용하는 경우 /var/자체 파티션에 넣는 것이 일반적이었습니다 . 그러면 루트가 가득 차는 것을 방지할 수 있습니다.

공간을 확보하려면 끝에 /var/log/있는 모든 항목을 제거할 수 있는지 살펴보세요 . .gz숫자로 끝나는 파일도 마찬가지입니다 *[0-9]. 이것들은 모두 로그 파일의 백업이며 때로는 너무 커지는 경향이 있습니다.


그러면 실행 취소 로그가 자동으로 잘립니다.

SET GLOBAL innodb_undo_log_truncate=ON;

관련 정보