개요

innodb_log_file_size 는 MySQL 의  transaction  redo log 를 저장하는 로그 파일 사이즈로 기본값은 보통 48M 로 설정되어 있습니다.

이는 실제 운영 환경에서 사용하기에는 너무 작은 값이므로 256M 이상을 권장합니다.


설정

단순히 my.conf 에 다음과 같이 설정값을 수정하고 MySQL 을 재구동할경우 MySQL 이 재구동되지 않는 경우가 있습니다.

[mysqld]
max_allowed_packet=512M
innodb_log_file_size=512M
BASH


에러 메시지를 보면 설정 값과 실제 로그 파일 사이즈가 달라서  "log file ./ib_logfile0 is of different size" 에러가 발생하므로 아래 절차로 진행하면 됩니다.

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
160203 20:56:49 [ERROR] Plugin 'InnoDB' init function returned error.
160203 20:56:49 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160203 20:56:49 [ERROR] Unknown/unsupported storage engine: InnoDB
160203 20:56:49 [ERROR] Aborting
CODE


조치

  1. 먼저 MySQL 을 종료합니다.

    systemctl stop mysqld 
    BASH
  2. 기존 redo log 파일을 다른 폴더로 이동합니다. 에러 메시지에서 redo 로그 파일명을 확인할 수 있으며 보통 ib_logfile 이거나 뒤에 숫자가 붙어 있을수 있습니다. 파일 위치는 MySQL 설정의 datadir 경로이며 일반적으로 /var/lib/mysql/ 입니다.

    mv /var/lib/mysql/ib_logfile* ~/ 
    BASH
  3. MySQL을 재시작합니다.

    systemctl start mysqld
    BASH

Ref