Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 테이블 및 인덱스 재구축·복구 방법 총정리

MySQL에서 테이블과 인덱스의 변경은 데이터 타입 및 문자 집합을 처리하는 방식과 관련이 있습니다. 필요한 테이블 복구나 업그레이드 작업은 CHECK TABLE, mysqlcheck, mysql_upgrade 명령을 통해 확인할 수 있습니다.

테이블 재구축(Rebuild) 방법

MySQL에서 테이블을 재구축하는 방법은 여러 가지가 있으며, 대표적으로 아래 세 가지가 사용됩니다.

  • 덤프 후 리로드(Dump and Reload) 방식
  • ALTER TABLE 방식
  • REPAIR TABLE 방식

각 방법에 대해 자세히 살펴보겠습니다.

1. 덤프 후 리로드(Dump and Reload) 방식

바이너리(in-place) 업그레이드 이후 서로 다른 MySQL 버전 간 호환성 문제로 기존 테이블을 정상적으로 처리할 수 없는 경우에는 덤프 후 리로드 방식을 사용해야 합니다.

테이블은 덤프한 뒤 다시 불러오는 과정을 통해 재구축할 수 있습니다. mysqldump를 사용해 덤프 파일을 생성하고, mysql 클라이언트로 해당 파일을 다시 로드하면 됩니다.

mysqldump db_name t1 > dump.sql
mysql db_name < dump.sql

하나의 데이터베이스에 있는 모든 테이블을 재구축하려면 테이블 이름 없이 데이터베이스 이름만 지정하면 됩니다.

mysqldump db_name > dump.sql
mysql db_name < dump.sql

모든 데이터베이스의 모든 테이블을 재구축해야 한다면 --all-databases 옵션을 사용합니다.

mysqldump --all-databases > dump.sql
mysql < dump.sql

2. ALTER TABLE 방식

ALTER TABLE 방식으로 테이블을 재구축하려면 'null 변경(null alteration)'을 활용할 수 있습니다. 즉, 실질적인 구조 변경 없이 스토리지 엔진을 지정하는 ALTER TABLE 문을 실행하면 MySQL이 테이블을 새로 재구성합니다.

예를 들어 TblName이라는 InnoDB 테이블을 재구축하려면 아래와 같은 문장을 실행하면 됩니다.

ALTER TABLE TblName ENGINE = InnoDB;

3. REPAIR TABLE 방식

REPAIR TABLE 방식은 MyISAM, ARCHIVE, CSV 테이블에만 적용됩니다. 테이블 검사 결과 파일이 손상되었거나 업그레이드가 필요하다는 진단이 나올 경우 REPAIR TABLE 문을 사용할 수 있습니다.

예를 들어 MyISAM 테이블을 복구하려면 아래 문장을 실행합니다.

REPAIR TABLE TblName;

mysqlcheck --repair 명령을 사용하면 커맨드 라인에서 REPAIR TABLE 문과 동일한 작업을 수행할 수 있습니다. 특히 --databases 옵션으로 특정 데이터베이스의 테이블만 복구하거나, --all-databases 옵션으로 모든 데이터베이스의 모든 테이블을 한 번에 복구할 수 있어 더욱 편리합니다.

mysqlcheck --repair --databases db_name ...
mysqlcheck --repair --all-databases