>데이터 베이스 >MySQL 튜토리얼 >전체 데이터베이스를 재구축하지 않고 InnoDB 스토리지 엔진을 효과적으로 정리하려면 어떻게 해야 합니까?

전체 데이터베이스를 재구축하지 않고 InnoDB 스토리지 엔진을 효과적으로 정리하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-06 22:03:15751검색

How Can I Effectively Clean an InnoDB Storage Engine Without Rebuilding the Entire Database?

InnoDB 스토리지 엔진 정리: 가이드

데이터베이스 유지 관리 영역에서 InnoDB에서 사용되지 않는 데이터를 제거하는 방법에 대한 질문 스토리지 엔진이 자주 발생합니다.

없이 InnoDB를 정리할 수 있습니까? 재구축?

안타깝게도 MyISAM과 달리 전체 데이터베이스를 재구축하지 않고 InnoDB 엔진에서 삭제된 데이터를 직접 제거하는 것은 불가능합니다. 이는 InnoDB가 테이블 데이터, 인덱스 및 메타데이터를 포함하여 ibdata1 파일에 다양한 유형의 정보를 저장하는 복잡한 인프라를 활용하기 때문입니다. 단순히 테이블을 최적화하면 데이터가 축소되지 않고 ibdata1 내의 데이터만 통합됩니다.

InnoDB 인프라 정리

InnoDB 엔진을 효과적으로 정리하려면 보다 포괄적인 접근 방식이 필요합니다.

  1. 데이터 덤프 및 데이터베이스 삭제: 모두 내보내기 데이터를 SQL 파일에 저장하고 필수가 아닌 모든 데이터베이스(mysql 및 information_schema 제외)를 삭제합니다.
  2. 트랜잭션 플러시 및 MySQL 종료: 완전한 트랜잭션 플러시를 위해 innodb_fast_shutdown을 0으로 구성한 다음 MySQL을 종료합니다. .
  3. my.cnf 수정: 활성화 innodb_file_per_table, innodb_flush_method를 O_DIRECT로 구성, innodb_log_file_size를 innodb_buffer_pool_size의 25%로 설정하고 innodb_buffer_pool_size를 늘립니다.
  4. ibdata 및 ib_logfile 삭제: 다음을 제거합니다. 선택적으로 /var/lib/mysql/mysql을 제외한 모든 하위 디렉토리를 포함하는 파일.
  5. MySQL 시작: ibdata1 및 ib_logfile0/1을 다시 생성합니다.
  6. 데이터 가져오기 : 새로 생성된 데이터베이스를 채우기 위해 SQL 덤프를 복원합니다. files.

참고:

  • innodb_file_per_table을 활성화하면 각 InnoDB 테이블이 ibdata1 외부의 자체 .ibd 파일에 상주하게 되어 최적화 및 향후 데이터 제거.
  • 다음 경우에는 mysql 스키마 파일을 복원하십시오. 삭제된 mysql 스키마로 인해 오류가 발생합니다.

이 프로세스를 통해 새 ibdata1 파일에는 테이블 메타데이터만 포함되므로 크기가 크게 줄어들고 활성 데이터를 저장하기 위한 깔끔한 InnoDB 환경이 보장됩니다.

위 내용은 전체 데이터베이스를 재구축하지 않고 InnoDB 스토리지 엔진을 효과적으로 정리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.