본문 바로가기

개발/Database

MySQL: ibdata1 파일 크기 줄이기

ibdata1 파일은 MySQL의 innodb 로그 파일로 줄일 수 없다.

단, 다음 과정을 통해 삭제 후 재생성할 수 있다.

1. 전체 데이터베이스 백업

2. 전체 데이터베이스 삭제

3. ibdata 파일 및 ib_log 파일 삭제

4. 전체 데이터베이스 복원



1. 전체 데이터베이스 백업

mysqldump --opt -A -u사용자 -p암호 > all-databases.sql


2. 전체 데이터베이스 삭제 : 단, mysql, information_schema 는 제외

mysql -uroot -ppassword -e "show databases"| grep -v 'Database\|information_schema\|mysql' | gawk '{print "drop database " $1 ";select sleep(0.1);"}' | mysql -uroot -ppassword


3. ibdata 파일 및 ib_log 파일 삭제

sudo stop mysql

sudo rm -f /var/lib/mysql/ib*


4. 전체 데이터베이스 복원

sudo start mysql

mysql -uroot -ppassword < all-databases.sql


그 외로 innodb 테이블별로 저장하게 설정할 수 있다.

sudo vi /etc/mysql/my.cnf

[mysqld]

innodb_file_per_table

http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html


참고페이지 : 

http://stackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysql

http://rootedlabs.wordpress.com/2009/10/03/drop-all-databases-in-mysql/