[MySQL] phpMyAdmin으로 MyISAM 테이블 형식을 InnoDB로 바꾸기

  MySQL DB의 MyISAM 테이블을 InnoDB 테이블로 바꾸는 명령으로 흔히 다음 명령어가 알려져 있다.

ALTER TABLE 테이블_이름 engine=InnoDB;

  그런데 이 단순히 명령만 내려 테이블 형식을 바꾸면, 실제로 운영하는 게시판이나 블로그 도구의 처리 속도가 오히려 떨어져서 그대로 두느니만 못할 때도 생긴다. 단순환 변환 명령보다는 테이블을 새로 만드는 과정을 거쳐야 뒤탈이 적다.

  phpMyAdmin을 쓸 수 있다면, 다음 과정을 거쳐서 MyISAM 테이블을 InnoDB 형식으로 바꿀 수 있다.

  • phpMyAdmin에서 InnoDB로 바꿀 MyISAM 테이블을 골라 SQL 파일로 내보낸다(export).
  • 받은 SQL 파일을 문서 편집기로 열어서 문자열 모두 바꾸기 기능으로 'ENGINE=MyISAM'을 'ENGINE=InnoDB'로 바꾸고 저장한다.
  • 다시 phpMyAdmin에서 파일로 내보냈던 테이블을 지우고(drop), 고친 SQL 파일을 불러온다(import).

  phpMyAdmin으로 백업하고 복구하는 작업에 SQL 파일을 편집하는 과정이 끼어 들어갔다고 보면 맞다.

  SQL 파일이 너무 크다면, zip이나 gz 방식으로 압축하여 받고 올릴 수 있다. 이전판의 MySQL에서 운영하다가 내보낸 SQL 파일에는 'ENGINE=MyISAM'이 아니라 'type=MyISAM'이라고 적혀 있을 수 있는데, 'type'을 'engine'으로 바꾸어 적어야 MySQL 5.5 5.1이상에서 쓸 때에 오류를 만나지 않는다.

글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요

  1. 모르세 2013/01/23 10:11 고유주소 고치기 답하기

    좋은 정보 얻고 갑니다.감사 합니다.

  2. 우빈 2013/03/07 10:30 고유주소 고치기 답하기

    음. 제가 오라클만 하다 처음 mysql 하는데요..

    저렇게 export , text 파일 수정, import 하는거 보다

    테이블을 따로 한개 InnoDB 방식으로 만들어서

    데이터만 복사 하는게 더 나은 방법이 아닐런지요?

    기본 테이블 생성 엔진이 InnoDB이면

    CTAS로 그냥 복사해도 될것 같은데요..

    혹시 문제점이 있는지.. ??? 제가 mysql 어제 첨 해본거라요.

    • 팥알 2013/03/07 10:44 고유주소 고치기 답하기

      네, 말씀하신 대로 InnoDB 테이블을 새로 만들고 자료를 복사해도 잘 될 겁니다.
      phpMyAdmin으로 간편하게 하려고 하는 방법을 찾다 보니 별다른 명령어를 쓰지 않고 내보내기/가져오기를 하는 방법을 생각하게 되었습니다.

  3. 아로 2013/03/15 14:07 고유주소 고치기 답하기

    좋은 정보 감사합니다.

    그런데 Export 받아서 Engine=InnoDB 로 고치고 Import 해도 다시 조회해 보면 여전히 MyISAM 형태로 남아 있네요. MySQL 서버 버전: 5.5.9 Protocol version: 10 인데... 어떻게 된 일일까요? ㅠㅠ

    • 팥알 2013/03/15 14:38 고유주소 고치기 답하기

      혹시 MySQL DB의 기본 테이블 형식이 MyISAM으로 지정되지는 않았나요? ( http://pat.im/1002 )
      그게 아니라면 저도 잘 모르겠네요.
      DB를 시험 삼아 새로 만들어서 작업해 보시면 어떨까 싶습니다.