복붙노트

[SQL] FRM과 IBD 파일에서 테이블 구조를 복원

SQL

FRM과 IBD 파일에서 테이블 구조를 복원

나는 PMA에서 데이터베이스를 복원하려고하지만 FRM과 IBD 파일에 액세스해야하고 - 아니 난 당신이 필요 이해 ib_log 파일을.

나는 데이터베이스의 데이터를 복구 할 수 없습니다 알고 있지만 FRM은 파일에서 테이블의 구조를 복구 할 수 있습니다?

해결법

  1. ==============================

    1.난 단지 .FRM 및 .idb 파일에서 테이블을 복원.

    난 단지 .FRM 및 .idb 파일에서 테이블을 복원.

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

    그런 다음 같은 구조화 된 테이블을 작성하는 SQL 쿼리를 얻을 수 있습니다. 이 같이 :

    CREATE TABLE `example_table` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(150) NOT NULL,
      `photo_url` varchar(150) NOT NULL,
      `password` varchar(600) NOT NULL,
      `active` smallint(6) NOT NULL,
      `plan` int(11) NOT NULL,
    PRIMARY KEY `PRIMARY` (`id`)
    ) ENGINE=InnoDB;
    

    SQL 쿼리 위를 사용하여 테이블 (들)을 만듭니다.

    이전 데이터가 계속되면, 먼저 각각의 데이터베이스와 테이블을 드롭 할 수 있습니다. 당신이 데이터 파일의 백업이 있는지 확인하십시오.

    새 테이블 데이터를 제거하려면이 쿼리를 실행합니다 :

    ALTER TABLE example_table DISCARD TABLESPACE;
    

    새로운 .frm 파일과 (새, 빈) .idb 파일 간의 제거합니다 연결. 또한, 폴더에 .idb 파일을 제거합니다.

    그런 다음, 예컨대 새 폴더로 이전 .idb 파일을 넣어 :

    cp backup/example_table.ibd <path>/example_table.idb
    

    있는 .ibd 파일은 MySQL의 사용자, 예를 들어,에 의해 확인 읽을 수 있는지 확인하는 것이 대한 Chown -R mysql을 실행한다 : mysql을 * 폴더에있는 .ibd.

    이전 데이터를 가져 오려면이 쿼리를 실행합니다 :

    ALTER TABLE example_table IMPORT TABLESPACE;
    

    .idb 파일이 수입 데이터와 데이터를 복원합니다.

  2. ==============================

    2.InnoDB는 데이터 복구에 대한 ib_log 파일을 필요로 할뿐만 아니라, 데이터 사전을 포함하고 때로는 테이블에 대한 대기중인 데이터를 포함을 ibdata1 파일이 필요합니다.

    InnoDB는 데이터 복구에 대한 ib_log 파일을 필요로 할뿐만 아니라, 데이터 사전을 포함하고 때로는 테이블에 대한 대기중인 데이터를 포함을 ibdata1 파일이 필요합니다.

    데이터 사전은 종류 중복 시스템이 기록 테이블 구조이며, 또한 테이블의 데이터가 포함 된 실제있는 .ibd 파일에 테이블 ID를 일치합니다.

    당신은 InnoDB의 데이터 사전없이 주위에 파일을있는 .ibd 이동할 수 있으며, 테이블 ID와 일치해야 데이터 사전은있는 .ibd 파일 내에서 발견했다. 당신은있는 .ibd 파일을 다시 연결하고 데이터를 복구하지만, 절차는 심장 약한되지 않습니다 수 있습니다. http://www.chriscalender.com/recovering-an-innodb-table-from-only-an-ibd-file/ 참조

    당신은 일부 파일 속임수로있는 .frm 파일을 사용하여 구조를 복구 할 수 있습니다,하지만 당신은 처음 InnoDB 테이블로를 만들 수 없습니다. 여기에 MyISAM 테이블로있는 .frm 파일을 복구하는 방법을 커버하는 블로그입니다 : http://www.percona.com/blog/2008/12/17/recovering-create-table-statement-from-frm-file/

    당신은이에 대한 PMA를 사용할 수 없습니다. 당신은 서버의 데이터 디렉토리에 수퍼 유저 액세스 할 수 있어야합니다.

  3. ==============================

    3.당신은 IBD 파일에서있는 .frm 파일과 데이터에서 테이블 구조를 복구 할 수 있습니다.

    당신은 IBD 파일에서있는 .frm 파일과 데이터에서 테이블 구조를 복구 할 수 있습니다.

    MySQL의 유틸리티의 일부입니다 mysqlfrm 도구를 사용하여

    쉘> mysqlfrm --diagnostic myfile.frm

    테이블 구조를 사용하여 동일한 이름의 데이터베이스에서 테이블을 다시 만듭니다.

    MySQL의 작성> MYTABLE INT (I);

    새로 만든 테이블의 테이블 스페이스를 폐기하십시오.

    MySQL의> ALTER TABLE MYTABLE DISCARD의 TABLESPACE;

    새 데이터베이스 디렉토리에 백업 디렉토리에서 고아 .idb 파일을 복사합니다. 있는 .ibd 파일이 필요한 파일 권한이 있는지 확인하십시오.

    고아있는 .ibd 파일을 가져옵니다. 경고가 InnoDB의 스키마 검증없이 파일을 가져 오려고 것을 나타내는 발행됩니다.

    MySQL의> ALTER 표 r에 수입 TABLESPACE; 경고를 표시;

  4. ==============================

    4.당신이 그것을 할 방법을 알고, 그리고 외부 소프트웨어 또는 쉘 명령이 필요하지 않습니다 이것은 아주 쉽게 한 사실이다.

    당신이 그것을 할 방법을 알고, 그리고 외부 소프트웨어 또는 쉘 명령이 필요하지 않습니다 이것은 아주 쉽게 한 사실이다.

    데이터베이스의 데이터는 C에 저장됩니다 : \ XAMPP \ mysql을 \ 데이터 \ 또는 기본적으로 유사한. 폴더는 데이터베이스 테이블입니다. 각 폴더 내부에서 .frm 파일은 열 수 있습니다. 있는 .ibd는 행 값을 누릅니다.

    먼저 phpMyAdmin을의 데이터베이스 (들)을 만들 수 있습니다.

    .FRM 파일에서> 구조를 복구 메뉴에서이 사이트에서 생성 된 SQL 쿼리를 가져 오기 :

    https://recovery.twindb.com/

    각 .frm 파일을 업로드 한 다음 phpMyAdmin에있는 테이블을 작성하는 SQL 명령으로 이러한 쿼리를 복사하여 붙여 넣습니다.

    그런 다음, 각 테이블에서이 SQL 쿼리를 수행합니다

    ALTER TABLE table_name DISCARD TABLESPACE
    

    이것은 자동으로 데이터베이스 디렉토리에서 새로운있는 .ibd 파일을 제거합니다. 데이터베이스 폴더에 이전있는 .ibd 파일을 복사합니다. 테이블을 다시 활성화하려면 다음 명령을 실행합니다 :

    ALTER TABLE table_name IMPORT TABLESPACE
    

    그리고 그게 다야! 다시 모든 이전 값의 접근을 볼 수 있어야합니다.

  5. ==============================

    5.당신은 또한 MySQL의 유틸리티를 시도 할 수 있습니다.

    당신은 또한 MySQL의 유틸리티를 시도 할 수 있습니다.

    파일 book.sql에 book.frm 파일에서 :

    mysqlfrm --server=root:mysqladmin@localhost:3306 D:\yahwehdb\yahweh_altera\book.frm > D:\yahwehdb\yahweh_altera\book.frm\book.sql --diagnostic --port=3307 --user=root
    

    파일 all.sql 모든 .frm 파일을 포함하는 디렉토리에서 :

    mysqlfrm --server=root:mysqladmin@localhost:3306 D:\yahwehdb\yahweh_altera > D:\yahwehdb\yahweh_altera\all.sql --diagnostic --port=3307 --user=root
    
  6. from https://stackoverflow.com/questions/26868956/restore-table-structure-from-frm-and-ibd-files by cc-by-sa and MIT license