[mysql] myisam -> innodb 변경
- MySQL Version : 5.1.73
- OS : CentOS 7
1. 기존(MyISAM으로 설정된) DB를 Dump 백업합니다.
# mysqldump -u {로그인아이디} -p {백업할 데이터베이스 이름} > {덤프파일 명}
# mysqldump -u root -p test_db > test_db.sql
엔진이 정상적으로 변경 되었음에도 불구하고 database에 프로시저가 덤프가 안떠져서 소스코드나 , 어플이 정상작동 안할수있다.
아래 옵션을 주고 덤프하면 procedure, function, trigger 를 포함하여 백업이 가능하다.
# mysqldump --routines --trigger -u유저이름 -p패스워드 DB명 > 백업파일
# mysqldump --routines --trigger -u root -p les > les.sql
2. 복원시 InnoDB로 적용하기 위해 덤프파일의 내용을 변경합니다.
# sed -e 's/ENGINE=MyISAM/Engine=InnoDB/g' {덤프파일 명} > {새로 적용할 덤프파일 명}
# sed -e 's/ENGINE=MyISAM/Engine=InnoDB/g' test_db.sql > test_db2.sql
3. mysql 콘솔에 접속 후 기존의 데이터베이스를 삭제하고 새로 생성합니다.
mysql> drop database {삭제할 데이터베이스 명}
mysql> drop database test_db
mysql> create database {생성할 데이터베이스 명}
mysql> create database test_db
4. 변경된 덤프파일을 이용해 데이터 베이스를 복원합니다.
# mysql -u {로그인 아이디} -p {복원할 데이터베이스 명} < {새로 적용할 덤프파일 명}
# mysql -u root -p test_db < test_db2.sql
출처 : http://www.33gram.com/