Loading...
MySQL 9.5 Reference Manual 9.5의 17.20.4 Troubleshooting InnoDB Data Dictionary Operations의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
테이블 정의에 대한 정보는 InnoDB data dictionary에 저장됩니다. 데이터 파일을 이리저리 이동하면 data dictionary 데이터가 일치하지 않게 될 수 있습니다.
data dictionary 손상 또는 일관성 문제가 발생하여 InnoDB를 시작할 수 없는 경우, 수동 복구에 관한 정보는 Section 17.20.3, “Forcing InnoDB Recovery”를 참조하십시오.
innodb_file_per_table가 활성화되어 있을 때(기본값), 시작 시에 file-per-table 테이블스페이스 파일(.ibd 파일)이 없으면 다음과 같은 메시지가 표시될 수 있습니다:
1[ERROR] InnoDB: Operating system error number 2 in a file operation. 2[ERROR] InnoDB: The error means the system cannot find the path specified. 3[ERROR] InnoDB: Cannot open datafile for read-only: './test/t1.ibd' OS error: 71 4[Warning] InnoDB: Ignoring tablespace `test/t1` because it could not be opened.
이러한 메시지를 처리하려면, 누락된 테이블에 대한 데이터를 data dictionary에서 제거하기 위해 DROP TABLE 문을 실행하십시오.
이 절차는 고아 file-per-table .ibd 파일을 다른 MySQL 인스턴스로 복구하는 방법을 설명합니다. 시스템 테이블스페이스를 분실했거나 복구할 수 없는 경우에, 새 MySQL 인스턴스에서 .ibd 파일 백업을 복원하려 할 때 이 절차를 사용할 수 있습니다.
이 절차는 general tablespace .ibd 파일에는 지원되지 않습니다.
이 절차는 .ibd 파일 백업만 가지고 있고, 처음 고아 .ibd 파일을 생성한 것과 같은 버전의 MySQL로 복구하고 있으며, .ibd 파일 백업이 클린하다고 가정합니다. 클린 백업 생성에 대한 정보는 Section 17.6.1.4, “Moving or Copying InnoDB Tables”를 참조하십시오.
Section 17.6.1.3, “Importing InnoDB Tables”에 설명된 테이블 가져오기 제한 사항은 이 절차에도 적용됩니다.
1mysql> CREATE DATABASE sakila; 2 3mysql> USE sakila; 4 5mysql> CREATE TABLE actor ( 6 -> actor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, 7 -> first_name VARCHAR(45) NOT NULL, 8 -> last_name VARCHAR(45) NOT NULL, 9 -> last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 10 -> PRIMARY KEY (actor_id), 11 -> KEY idx_actor_last_name (last_name) 12 -> )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
1mysql> ALTER TABLE sakila.actor DISCARD TABLESPACE;
.ibd 파일을 새 데이터베이스 디렉터리로 복사합니다.1$> cp /backup_directory/actor.ibd path/to/mysql-5.7/data/sakila/
.ibd 파일이 필요한 파일 권한을 가지고 있는지 확인합니다.
고아 .ibd 파일을 가져옵니다(import). InnoDB가 스키마 검증 없이 파일을 가져오려 하고 있음을 나타내는 경고가 출력됩니다.
1mysql> ALTER TABLE sakila.actor IMPORT TABLESPACE; SHOW WARNINGS; 2Query OK, 0 rows affected, 1 warning (0.15 sec) 3 4Warning | 1810 | InnoDB: IO Read error: (2, No such file or directory) 5Error opening './sakila/actor.cfg', will attempt to import 6without schema verification
.ibd 파일이 성공적으로 복구되었는지 확인합니다.1mysql> SELECT COUNT(*) FROM sakila.actor; 2+----------+ 3| count(*) | 4+----------+ 5| 200 | 6+----------+
17.20.3 Forcing InnoDB Recovery
17.20.5 InnoDB Error Handling