[mysql] .myd, .myi, .frm 파일에서 MySQL 데이터베이스를 복구하는 방법

어떻게에서 내 MySQL 데이터베이스 중 하나 복원 .myd, .myi, .frm파일을?



답변

MyISAM 테이블 인 경우 .FRM, .MYD 및 .MYI 파일을 데이터베이스 디렉토리 (예 :)에 플로 핑 /var/lib/mysql/dbname하면 해당 테이블을 사용할 수있게됩니다. 원래 서버와 동일한 서버, 동일한 MySQL 버전 또는 동일한 아키텍처 일 필요는 없습니다. 또한 폴더에 대한 소유권을 바꾼다해야 할 수도 있습니다 (예 chown -R mysql:mysql /var/lib/mysql/dbname)

권한 ( GRANT등)은 mysql데이터베이스의 일부입니다 . 따라서 테이블과 함께 복원되지 않습니다. GRANT사용자를 작성하고 액세스 권한을 부여하기 위해 적절한 명령문 을 실행해야 할 수도 있습니다 ( mysql데이터베이스 복원 은 가능하지만 MySQL 버전 및 필요한 mysql_upgrade유틸리티 실행에주의해야 합니다).

실제로 .FRM (테이블 구조) 및 .MYD (테이블 데이터)가 필요할 수도 있지만 .MYI (인덱스)를 다시 작성하려면 테이블을 복구해야합니다.

다운 그레이드하는 경우 릴리스 정보를 확인하고 복구 테이블을 실행하는 것이 가장 좋습니다. 최신 MySQL 버전은 물론 기능을 추가합니다.

[테이블을 혼합하여 일치시키는 경우에는 분명해야하지만 해당 테이블 간의 관계의 무결성이 문제입니다. MySQL은 신경 쓰지 않지만 응용 프로그램과 사용자가 할 수 있습니다. 또한이 방법은 InnoDB 테이블에서 전혀 작동하지 않습니다. MyISAM 만 있지만 파일을 고려하면 MyISAM이 있습니다.]


답변

MYI 파일을 다시 빌드하려면 REPAIR TABLE을 올바르게 사용하십시오.

약간의 USE_FRM REPAIR 테이블;

그렇지 않으면 다른 오류가 발생할 수 있습니다.


답변

방금이 문제를 해결했습니다. Windows 7에서 MySQL 5.1 또는 5.6을 사용하고 있습니다.

  1. “C : \ Program Data \ MySQL \ MSQLServer5.1 \ Data”에있는 이전 파일에서 .frm 파일과 ibdata1 을 복사하십시오 .
  2. 현재 SQL 인스턴스에서 SQL Server 인스턴스를 중지하십시오.
  3. “C : \ Program Data \ MySQL \ MSQLServer5.1 \ Data”에있는 데이터 폴더로 이동하십시오.
  4. 복구하려는 파일 의 .frm 파일 이 포함 된 ibdata1데이터베이스 폴더를 붙여 넣습니다 .
  5. MySQL 인스턴스를 시작하십시오.

이 복구를 위해 .MYI 및 .MYD 파일을 찾을 필요가 없습니다.


답변

한 가지 참고할 사항 :

.FRM 파일은 테이블 구조를 가지며 MySQL 버전에 따라 다릅니다.

.MYD 파일은 최소한 부 버전이 아닌 버전에만 국한되지 않습니다.

.MYI 파일은 특정 파일이지만 REPAIR TABLE다른 답변 과 같이 생략하고 다시 생성 할 수 있습니다 .

이 답변의 요점은 테이블의 스키마 덤프가있는 경우이를 사용하여 테이블 구조를 생성 한 다음 해당 .MYD 파일을 백업으로 바꾸고 MYI 파일을 삭제하고 복구 할 수 있다는 것입니다. 모두. 이렇게하면 백업을 다른 MySQL 버전으로 복원하거나을 사용하지 않고 데이터베이스를 모두 이동할 수 있습니다 mysqldump. 큰 데이터베이스를 이동할 때 이것이 매우 유용하다는 것을 알았습니다.


답변

단순한! 더미 데이터베이스 만들기 (예 : abc)

이 모든 .myd, .myi, .frm 파일을 mysql \ data \ abc로 복사하십시오. 여기서 mysql \ data \는 모든 데이터베이스의 .myd, .myi, .frm이 저장되는 위치입니다.

그런 다음 phpMyadmin으로 이동하여 db abc로 이동하면 데이터베이스를 찾을 수 있습니다.


답변

mysql 내부에서 .myi를 복구 할 수 있다고 생각합니다.

MySQL에서 이러한 유형의 오류 메시지가 표시되는 경우 : 데이터베이스가 쿼리 (쿼리)를 실행하지 못했습니다. 1016 : 파일을 열 수 없습니다 : ‘sometable.MYI’. (errno : 145) 오류 메시지 : 1034 : ‘sometable’테이블의 키 파일이 잘못되었습니다. 테이블이 손상되었거나 손상된 경우이를 복구하십시오.

다음과 같이 mysql 프롬프트에서 테이블을 확인하고 복구 할 수 있습니다.

check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+ 
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+ 

repair table sometable;
+------------------+--------+----------+----------+ 
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+ 
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+

이제 테이블이 양호해야합니다.

check table sometable;
+------------------+-------+----------+----------+ 
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+ 
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+


답변

.sql파일 .sql에 액세스 할 필요없이 파일을 파일로 변환하는 솔루션을 찾았습니다 ( 파일을 서버 로 가져오고 데이터베이스를 복구 할 수 있음)./var디렉토리 으므로 서버 관리자가 아니어도 할 수 있습니다.

컴퓨터에 XAMPP 또는 MAMP가 설치되어 있어야합니다.

  • XAMPP를 설치 한 후 설치 디렉토리 (일반적으로 C:\XAMPP)와 하위 디렉토리로 이동하십시오 mysql\data. 전체 경로는C:\XAMPP\mysql\data
  • 안에는 다른 데이터베이스의 폴더가 표시됩니다. 복사 및이의 전체 폴더에 붙여 넣기 .myd, .myi그리고 .frm거기에 파일을. 해당 폴더의 경로는

    C:\XAMPP\mysql\data\foldername\.mydfiles

  • 그런 다음 localhost/phpmyadmin브라우저를 방문하십시오 . mysql\data폴더에 붙여 넣은 데이터베이스를 선택하고 탐색 모음에서 내보내기를 클릭하십시오. .sql파일 로 내보내기를 선택 합니다. 그런 다음 파일을 저장할 위치를 묻는 팝업이 나타납니다.

그리고 그게 다야! 이제이 (한다) .sql원래이었다 데이터베이스에 포함 된 파일 .myd, .myi.frm파일을. 그런 다음 phpMyAdmin을 통해 새 데이터베이스를 생성하고 탐색 표시 줄에서 ‘가져 오기’를 누른 후 다음 단계에 따라 가져 오기하여 다른 서버로 가져올 수 있습니다.