Loading...
MySQL 9.5 Reference Manual 9.5의 3.14 Rebuilding or Repairing Tables or Indexes의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션에서는 tables 또는 indexes를 재구축(rebuild)하거나 복구(repair)하는 방법을 설명합니다. 이러한 작업은 다음과 같은 이유로 필요할 수 있습니다:
MySQL이 데이터 타입 또는 문자 집합을 처리하는 방식이 변경된 경우. 예를 들어, collation의 오류가 수정되어, 해당 collation을 사용하는 문자 컬럼의 인덱스를 갱신하기 위해 table 재구축이 필요할 수 있습니다.
CHECK TABLE 또는
mysqlcheck에서 요구되는 table repair 또는 upgrade가 보고된 경우.
table을 재구축하는 방법에는 다음이 포함됩니다:
binary (in-place) 업그레이드 또는 다운그레이드 이후에 다른 버전의 MySQL이 tables를 처리할 수 없기 때문에 tables를 재구축하는 경우에는 반드시 dump-and-reload method를 사용해야 합니다. 업그레이드 또는 다운그레이드를 수행하기 전에 원래 사용하던 MySQL 버전을 사용하여 tables를 dump하십시오. 그런 다음 업그레이드 또는 다운그레이드를 수행한 후 tables를 reload하십시오.
index 재구축만을 목적으로 dump-and-reload method를 사용하는 경우, dump는 업그레이드 또는 다운그레이드 전에 하거나 이후에 해도 됩니다. 단, reload는 반드시 나중에 수행해야 합니다.
CHECK TABLE operation이 table upgrade가 필요하다고 표시하기 때문에 InnoDB table을 재구축해야 하는 경우, mysqldump를 사용하여 dump file을 만들고 mysql을 사용하여 해당 file을 reload하십시오. CHECK TABLE operation이 corruption이 있다고 표시하거나 InnoDB가 실패하게 만드는 경우에는 Section 17.20.3, “Forcing InnoDB Recovery”를 참조하여 innodb_force_recovery option을 사용해 InnoDB를 다시 시작하는 방법에 대한 정보를 확인하십시오. CHECK TABLE이 어떤 유형의 문제에 직면할 수 있는지 이해하려면 Section 15.7.3.2, “CHECK TABLE Statement”의 InnoDB 관련 설명을 참조하십시오.
dump 및 reload를 통해 table을 재구축하려면 mysqldump를 사용하여 dump file을 생성하고 mysql을 사용하여 해당 file을 reload하십시오:
1mysqldump db_name t1 > dump.sql 2mysql db_name < dump.sql
단일 database의 모든 tables를 재구축하려면, table 이름 없이 database 이름만 지정하십시오:
1mysqldump db_name > dump.sql 2mysql db_name < dump.sql
모든 databases의 모든 tables를 재구축하려면 --all-databases option을 사용하십시오:
1mysqldump --all-databases > dump.sql 2mysql < dump.sql
ALTER TABLE를 사용하여 table을 재구축하려면 “null” alteration을 사용하십시오. 즉, 이미 사용 중인 스토리지 엔진으로 table을 “변경”하는 ALTER TABLE statement를 사용합니다. 예를 들어, t1이 InnoDB table이라면 다음 statement를 사용합니다:
1ALTER TABLE t1 ENGINE = InnoDB;
ALTER TABLE statement에서 어떤 스토리지 엔진을 지정해야 할지 확신이 없다면, SHOW CREATE TABLE을 사용하여 table definition을 표시하십시오.
REPAIR TABLE method는 MyISAM, ARCHIVE, CSV tables에만 적용됩니다.
table checking operation이 corruption이 있다고 표시하거나 upgrade가 필요하다고 표시하는 경우 REPAIR TABLE을 사용할 수 있습니다. 예를 들어, MyISAM table을 repair하려면 다음 statement를 사용합니다:
1REPAIR TABLE t1;
mysqlcheck --repair는 REPAIR TABLE statement에 대한 커맨드라인 access를 제공합니다. 이는 --databases 또는 --all-databases option을 사용하여 특정 databases의 모든 tables 또는 모든 databases의 모든 tables를 각각 repair할 수 있으므로, tables를 repair하는 보다 편리한 수단이 될 수 있습니다:
1mysqlcheck --repair --databases db_name ... 2mysqlcheck --repair --all-databases
3.13 Upgrade Troubleshooting
3.15 Copying MySQL Databases to Another Machine