ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL .frm .MYD .MYI 파일로 데이터 가져오기
    C&E: career & experience/Experience 2024. 9. 5. 12:20

    어쩌다가 데이터베이스 데이터 복구 작업을 진행했다.

     

    복구한 파일은 내 모교 경영대학원의 연구실 홈페이지 데이턴데, 홈페이지에 있던 앨범사진, 게기판 글 목록이 사라져 안 보인다고 한다. 원래는 홈페이지 제작업체에게 문의를 하면 되지만, 홈페이지를 제작한 지 상당히 오래되어 [각주:1] 제작업체가 사라져버렸다. 이에 내가 데이터 복구를 진행하게 되었다. 사실 DB 데이터는 다 남아있었기에, 데이터 복구라 할 건 없고, 데이터 export? 정도로 생각해주면 되겠다.[각주:2]


     

     

    서버 내에 있는 데이터를 뜯어보니 .frm .MYI .MYD가 가득했다. 검색해보니 과거에 쓰이던 MySQL 파일 형식이라고 한다. .frm에는 말그대로 frame과 관련된 정보, .MYI에는 index 정보, MYD에는 data 정보가 들어있다고 한다.

    열어보니 .MYD 데이터는 notepad로도 확인할 수 있었다. 파일 형식이 정확이 어떻게 되는지는 모르겠지만 간간히 공지내용이 보존돼 있는 것을 확인할 수 있다.


    복구를 위해 먼저 MySQL installer 웹페이지 에서 MySQL을 다운받는다. 이때 주의할 것이, 5.7을 다운로드 해야한다. .MYD는 이미 최신 버전에서는 사용되지 않는 파일 형식이기 때문에, 원활한 사용을 위해서는 5.7을 다운로드 하는 것이 좋다. 잘 모르겠으면 혼공학습단 웹사이트에 설명이 써 있으니 이걸 보고 하자

    C:\ProgramData\MySQL\MySQL Server 5.7\Data\[각주:3]에 들어가 쓰기 권한 설정을 해준다. 경로는 SHOW VARIABLES LIKE 'datadir';로도 확인할 수 있다. 이 경로는 MySQL의 데이터가 저장되는 위치인데, 일반적으로 사용자는 값을 변경할 수 없게 되어있다. 쓰기 권한을 허용해주자.[각주:4]


    그리고 데이터베이스를 하나 만들자. 이 데이터베이스 안에 .frm, .MYD, 그리고 .MYI 파일을 넣을거다.

    CREATE DATABASE restore;
    USE restore;

    datadir에 restore이라는 이름의 폴더가 생겼을 것이다. 이 폴더 안에 가지고 있던 파일을 저장한 후, 아래 SQL을 실행해본다. ( 단, 이때 .frm, .MYD, .MTI 파일 전부가 같이 들어가야 하며, 당연하게 이 세 파일의 이름은 같아야 한다. )

    USE restore;

    SELECT * FROM {fileName};

    넣어준 데이터 파일들의 이름이 떠 있다면 성공한 것이다.


    본인은 데이터베이스 이름을 zetyx_admin으로 만들어서 데이터베이스 이름이 zetyx_admin으로 뜬다.

    그리고 데이터를 export한다. workbench 기준으로, USE restore; 명령어를 실행시키면 좌측에 "Data Export", "Data Import/Restore"이라는 항목이 생겼을 거다. Data Export를 클릭해서 GUI로 손쉽게 테이블들을 .sql로 내보낼 수 있다. 대충 체크할 거 다 체크하고, 입력창에다가 export 경로 지정하고, 버튼만 누르면 된다.[각주:5] cli로 하고 싶다면 이 Shell 문서를 참고하자.


    이제 개발 완료된 .sql 파일을 가지고 뭐 .csv로 데이터를 만들든... 아니면 그냥 .sql 그대로 들고 나가든... 알아서 하면 된다. 그럼 다들 즐거운 개발 생활 하길

    1. 2004년에 만들었다고 한다. 나보다 형인 셈 [본문으로]
    2. 그럼에도 안 쓰던 MySQL 심지어 그것도 구버전 MySQL이라 좀 헤멘 건 안 비밀... 지금 글 쓰는 이유도 나름 개고생한거 아까워서 쓰는 거라는 건 안 비밀... [본문으로]
    3. ProgramData 폴더는 숨겨진 폴더이기 때문에, 만약 설정이 되어있지 않다면 탐색기에서 "숨김 폴더 보기"를 체크해야 한다. [본문으로]
    4. 속성\보안\편집 에서 허용해줄 수 있다. [본문으로]
    5. gui가 편한걸 보니 난 아직 진정한 개발자가 아닌가봐 [본문으로]

    'C&E: career & experience > Experience' 카테고리의 다른 글

    ASCII art로 3d 공간 구현하기  (5) 2024.09.26
하면된다 學業報國