MySQL 또는 MariaDB를 설치한 다음 InnoDB를 데이터베이스로 사용하다 성능 튜닝을 위해 버퍼풀 사이즈를 늘려야 하는 경우 innodb_buffer_pool_size
값을 변경해야 합니다.
InnoDB: Error: log file ./ib_logfile0 is of different size 0 67,108,864 bytes InnoDB: than specified in the .cnf file 0 268435456 bytes!
innodb_buffer_pool_size
를 변경하는 경우 버퍼풀 크기의 25% 정도로 로그 파일을 지정해야 하는데 로그 파일 크기를 지정하는innodb_log_file_size
값을 변경하고 서비스를 시작하는 경우 기존의 로그 파일 사이즈와 맞지 않아 위와 같은 오류가 나기 때문에 MySQL 서비스를 완전히 내린 다음 InnoDB 파일을 삭제하고 다시 서비스를 올려야 합니다.
innodb_log_file_size 크기 변경하기
innodb_log_file_size = 256M
우선 my.cnf 파일을 편집기로 열어innodb_log_file_size
항목을 원하는 값으로 설정합니다.
innodb_buffer_pool_size
가 1G인 경우에는innodb_log_file_size
를 256M로 설정하면 됩니다.
MySQL 레퍼런스에서는 256M 이상의 크기는 Crush 발생시 복구 시간이 오래 걸려 권장하고 있지 않으니 버퍼풀 크기가 더 커도 256M 정도로 설정하면 되겠습니다.
# service mysql stop # ll /var/lib/mysql/ -rw-rw---- 1 mysql mysql 67108864 Mar 25 02:21 ib_logfile0 -rw-rw---- 1 mysql mysql 67108864 Mar 25 02:21 ib_logfile1 -rw-rw---- 1 mysql mysql 67108864 Mar 24 18:18 ib_logfile2 # service mysql start
MySQL 서비스를 내린 다음 InnoDB 파일이 위치한 경로를 확인 후 ib_logfile 형식의 파일을 삭제합니다.
삭제를 완료하면 다시 서비스를 올리면 innodb_buffer_pool_size
값 변경이 완료됩니다.