찾다

 >  Q&A  >  본문

frm 및 ibd 파일에서 테이블 구조 복원

PMA에서 데이터베이스를 복원하려고 하는데 frm 및 ibd 파일에만 액세스할 수 있습니다. 필요한 ib_log 파일에는 액세스할 수 없습니다.

데이터베이스 데이터를 복구하지 못할 수도 있다는 것을 알고 있는데 frm 파일에서 테이블 구조를 복구할 수 있나요?

P粉637866931P粉637866931405일 전720

모든 응답(2)나는 대답할 것이다

  • P粉043566314

    P粉0435663142023-10-20 00:08:59

    InnoDB에는 데이터 복구를 위해 ib_log 파일이 필요하지만 데이터 사전과 때로는 테이블에 대한 보류 중인 데이터가 포함된 ibdata1 파일도 필요합니다.

    데이터 사전은 테이블의 구조를 기록하고 테이블 ID를 테이블 데이터가 포함된 물리적 .ibd 파일과 일치시키는 반복 시스템입니다.

    InnoDB 데이터 사전 없이는 .ibd 파일을 이동할 수 없으며, 데이터 사전은 .ibd 파일에 있는 테이블 ID와 일치해야 합니다. .ibd 파일을 다시 첨부하고 데이터를 복구할 수할 수 있지만이 과정은 마음이 약한 사람에게는 적합하지 않습니다. http://www.chriscalender.com/ibd 파일에서만 innodb 테이블 복구/

    를 참조하세요.

    .frm 파일을 사용하여 일부 파일 트릭으로 구조를 복원할 수 있지만 애초에 InnoDB 테이블로 생성할 수는 없습니다. 다음은 .frm 파일을 MyISAM 테이블로 복원하는 방법을 설명하는 블로그입니다. http://www.percona.com/blog/2008/12/17/recovering-create-table-statement-from-frm-file/" percona.com/blog/2008/12/17/recovering-create- FRM-파일의 테이블-문장/

    이 경우에는 PMA를 사용할 수 없습니다. 서버의 데이터 디렉터리에 대한 수퍼유저 액세스 권한이 필요합니다.

    회신하다
    0
  • P粉569205478

    P粉5692054782023-10-20 00:04:57

    .frm.idb 파일에서만 테이블을 복원했습니다.

    테이블을 생성하는 데 사용된 SQL 쿼리 가져오기

    테이블의 스키마를 이미 알고 있다면 이 단계를 건너뛸 수 있습니다.

    1. 먼저 MySQL 유틸리티를 설치합니다. 그런 다음 명령 프롬프트(cmd)에서 mysqlfrm 명령을 사용할 수 있습니다.

    2. 두 번째, mysqlfrm 命令从 .frm 명령을 사용하여 .frm 파일에서 SQL 쿼리를 가져옵니다.

      으으으으

    그런 다음 SQL 쿼리를 가져와 동일한 구조의 테이블을 생성할 수 있습니다. 이렇게:

    으아아아

    테이블 만들기

    위의 SQL 쿼리를 사용하여 테이블을 생성합니다.

    오래된 데이터가 여전히 존재하는 경우 해당 데이터베이스와 테이블을 먼저 삭제해야 할 수도 있습니다. 데이터 파일의 백업이 있는지 확인하십시오.

    데이터 복구

    새 테이블 데이터를 삭제하려면 다음 쿼리를 실행하세요.

    으아아아

    .frm 文件和(新的、空的).idb 文件之间的连接。另外,删除文件夹中的 .idb 파일이 삭제됩니다.

    그런 다음 이전 .idb 파일을 새 폴더에 넣습니다. 예:

    으아아아

    .ibd 文件可以被 mysql 用户读取,例如通过在文件夹中运行 chown -R mysql:mysql *.ibd.

    이전 데이터를 가져오려면 다음 쿼리를 실행하세요.

    으아아아

    이렇게 하면 .idb 파일에서 데이터를 가져오고 데이터가 복원됩니다.

    회신하다
    0
  • 취소회신하다