beomboo

[데이터베이스] DB덤프 파일이 아닌 frm, myd, myi, ibd 파일로 DB복원하기 본문

DB

[데이터베이스] DB덤프 파일이 아닌 frm, myd, myi, ibd 파일로 DB복원하기

dev_beom_12 2019. 6. 24. 13:25
반응형

개발·서버운영·유지보수를 하다보면 Mysql에서 db를 백업 또는 이전해야할 경우가 종종 생기게된다.

 

본인은 랜섬웨어에 걸린 회사내 "윈도우즈 서버 2012" 에 대해 새로운 서버환경을 구축하고 

 

호스팅 중이던 홈페이지들에 대하여 복원을 해야할 일이 생겼다.

 

평소 백업을 외장하드에 해둔 덕에 "Wordpress" Data파일은 복구하였으나 DB파일이 덤프 또는 txt파일이 아닌

 

아래와 같은 frm, myd, myi, ibd 형태로 구성이 된 것을 확인하게 되었다.

 

 

해당의 경우 두가지 타입을 확인하였다 frm(테이블), MYD(데이터), MYI(인덱스) 형태로 구성된 DB파일의 경우

 

DB의 엔진은 MyISAM 이며 frm(테이블) 과 Ibd(데이터)로 구성된 경우에는 InnoDB 이다.

 

1. DB 질의문 작성

복원할 호스팅 또는 앱에 대한 DB명을 기억할 경우 우선 디비를 생성한다.

 

그리고 CREATE 질의를 통해 위 사진속의 FRM! 테이블을 생성해준다.

 

여기서 확실히 하는 방법으로는 본인은 phpMyAdmin 에서 테이블을 아무거나 하나 생성한 후

 

내보내기를 통해 xml 파일을 받은 후 아래 사진속의 쿼리를 따로 복사하였다.

100개의 frm이 있다면 100개 정도를 만들어서 phpMyAdmin 의 질의에 실행을 한다.

 

본인은 200개넘는 frm을 작업함.. (다른 방법이 있다면 댓글로 부탁드립니다)

 

2. ALTER TABLE A DISCARD TABLESPACE;

위 작업을 통해 테이블이 임의로 설정이 될 경우 Mysql 파일 경로중 data에 들어가면

frm 파일들이 자동 생성된 것을 볼 수가 있다.

 

확인을 하였다면 ALTER TABLE '테이블명' DISCARD TABLESPACE; 쿼리를 통해 

권한을 모두 해제해 준다. (1번의 CREATE TABLE~ 를 메모장 내에서 바꾸기 기능을 통해 쉽게 변경 가능)

 

※ DISCARD 명령은 현재 세션이 사용하고 있는 데이터베이스 내부 자원들을 반환하다. 이 자원들은 일반적으로 세션이 종료되면 자동 반환된다.

3. DB경로에 ibd 등 파일 옮기기

해제를 모두 해준 후 Mysql 폴더 디렉토리 경로내의 해당 디비 폴더안에 모두 옮겨준다

여기서! frm파일은 옮기면 안됩니다. myd, myi, ibd 같은 파일들만 옮겨야합니다.

 

4. ALTER TABLE A IMPORT TABLESPACE;

3번을 다 했다면 이번엔  IMPORT TABLESPACE 쿼리를 실행하여 폴더안에 넣어둔 데이터 및 인덱스 파일들에 대한

정보를 모두 불러와 줍니다.

 

5. 끝! 

 

감사합니다.

 

반응형

'DB' 카테고리의 다른 글

[기초] count 와 if 를 같이 써서 원하는 결과 얻기  (0) 2022.02.17
TEXT 형태 컬럼 Split 기능 만들어보기  (0) 2020.11.26
[SQL] DELETE 쿼리  (0) 2019.07.30
Comments