본문 바로가기

DATABASE

[mysql] myisam 을 innodb로 바꾸는 방법

[mysql myisam을 innodb로 바꾸는 방법]
방법은 여러가지가 있지만 alter table 을 이용한 방법은 권장하지 않습니다.
ex: Alter table ‘target_table’ engine = InnoDB;

위 방법은 환경에 따라서 데이터가 깨질 수도 있고 퍼포먼스가 떨어질 수도 있습니다.

가장 최적의 방법은 DB를 덤프 떠서 새로 생성하는 방법입니다.

1. mysqldump 명령으로 DB 덤프 백업
2. 덤프 파일 열어서 engine을 MyISAM에서 InnoDB로 변경
3. 기존 Database Drop (DB Drop이 힙들다면 Drop table로 테이블만 삭제)
4. Database를 Drop 했다면 다시 create database로 생성
5. 생성된 DB에 수정된 덤프파일 삽입

InnoDB와 MyISAM의 차이점들 중 가장 특징적인 점은 아래와 같습니다.
1. InnoDB는 DB백업을 Dump로만 가능하다. (MyISAM처럼 파일 백업 불가)
2. InnoDB는 서버의 Core수에 비례하여 성능이 올라간다. (MyISAM은 Core수가 많더라도 성능의 차이 없음)

시간이 흐르면서 MyISAM의 장점들은 다른 엔진에 비해 메리트가 덜해진 것이 사실이고 무엇보다도 2번과 같은 특징때문에 InnoDB를 많이 사용하는 추세입니다.


sed -e 's/ENGINE=MyISAM/Engine=InnoDB/g' old.sql > new.sql