2017-12-28 7 views
0

아카이브 스토리지 엔진이라는 엔진을 사용하여 빌드 된 매우 오래된 db가 있습니다. 새로운 버전의 MySQL에서는 지원되지 않습니다. 당신이 그것을 컴파일 할 때 추가 할 스위치 ...ARCHIVE 엔진의 오래된 mysql db를 innodb로 변환하려고 시도합니다.

Anywho - 어떻게 든이 데이터를 복구하려고합니다 : 1) 모든 테이블의 엔진을 innodb로 변환 - mysql 버전으로 아카이브와 innodb가 지원 되는가? OR 2) 어떻게 든 여전히 그것을 지원하는 작동하는 mysql 버전을 찾으십시오. 그래서 어떻게 든 테이블을 덤프하고 가져 오기에 innodb를 구현하기 위해 sql 파일을 변경할 수 있습니까?

이 중 하나가 가능합니까? 올바른 방향으로 인도하거나 가리키는 것이 가장 도움이 될 것입니다. 나는이 엔진들에 대해 많은 것을 알지 못하고, 심지어 아카이브에 대해서도별로 모른다. 나는 불가능을 요구할 수도있다.

미리 감사드립니다.

EDIT : 모든 엔진을 지원하는 이전 버전의 mysql을 다운로드 할 수있었습니다. 루트 mysql 디렉토리에서 모든 데이터베이스 파일과 ib * 파일 (다른 게시물에서 읽어야 함)을로드 할 수 있었고 각 테이블을 별도의 파일로 덤프 할 수있었습니다. 그런 다음 ENGINE = ARCHIVE를 ENGINE = InnoDB로 바꿨고이 테이블을 mysql 서버로 다시 가져올 수있었습니다.

+0

당신이 작동하는 DB했다 mysqldump를 – exussum

+0

에서 생성 된 파일 백업 또는 무언가를 복원하려고 다음은 "부패"를 망쳐 mysql을 갔다. ../mysql/data에서 이동해야했습니다. 최근 백업을 사용하여 스냅 샷에서 DB 디렉토리를 추출하고 db와 테이블을 mysql에서 볼 수있었습니다 (win10에서 로컬로 실행 중입니다). 'select * from [table];을 (를) 대부분의 테이블 결과는 '테이블이 존재하지 않습니다'라는 오류가 발생합니다. 일부는 모든 행과 열을 표시합니다. 내 의혹은 mysql의 버전이 내가/아카이브 테이블을 지원하지 않는 일부 테이블 myisam, 왜 데이터를 볼 수 있습니다 prob를 사용하고 있습니다. 모든 데이터에 액세스 할 수 있다면 mysqldump를 좋아할 것입니다. – shayaknyc

+0

손상에 대한 많은 이유가있을 수 있습니다. 아카이브는 복구하기가 쉽지 않습니다. 데이터가 중요하다면 MySQL 전문가에게 지불하는 것이 좋습니다. 어느 쪽이든 백업은 중요합니다. 앞으로 백업해야합니다. – exussum

답변

0

변경 내역은 ARCHIVE 엔진이 MySQL 또는 MariaDB에서 제거되지 않았 음을 의미합니다.

어떤 버전을 실행하고 있습니까?

아카이브 테이블의 SELECT이 될 수 있습니까? 그렇다면이 작동합니다 :

CREATE TABLE new (...) ENGINE=InnoDB 
    SELECT * FROM my_archive_table; 

데이터베이스의 이름 가진 디렉터리에 어떤 파일이 있습니까? my_archive_table.frm 파일과 하나 이상의 파일이 있어야합니다.

이 당신을 줄 대상 :

SHOW TABLE STATUS LIKE 'my_archive_table'; 
관련 문제