InnoDB 엔진을 사용하도록 하나의 데이터베이스를 변환 한 후 /etc/mysql/my.cnf에 다음 행을 추가했습니다.
innodb_buffer_pool_size = 2560M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 16
innodb_flush_method = O_DIRECT
그러나 mysqld를 다시 시작하면 “2 행에서 오류 2013 (HY000) : 쿼리 중 MySQL 서버와의 연결이 끊어졌습니다”오류가 발생합니다. 그리고 mysql 오류 로그는 다음을 보여줍니다
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting
그래서이 줄을 주석 처리했습니다.
# innodb_log_file_size = 256M
그리고 그것은 mysql을 성공적으로 다시 시작했습니다.
mysql 오류에서 “5242880 바이트의 로그 파일”이 무엇인지 궁금합니다. 이 서버에서 InnoDB 엔진의 첫 번째 데이터베이스이므로 언제 어디서 로그 파일이 생성됩니까? 이 경우 my.cnf에서 innodb_log_file_size 지시문을 어떻게 활성화 할 수 있습니까?
편집하다
/ var / lib / mysql / ib_logfile0을 삭제하고 mysqld를 다시 시작했지만 여전히 실패했습니다. 이제 오류 로그에 다음이 표시됩니다.
100118 21:27:11 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
해결
/ var / lib / mysql에서 ib_logfile0 및 ib_logfile1을 모두 삭제 한 후 작동합니다.
답변
InnoDB는 설정에 대해 엄청나게 까다 롭습니다. 무언가가 옳지 않다면 그냥 포기하고 집으로 돌아갑니다. 데이터 손실없이 로그 파일 크기를 변경하려면 다음을 수행하십시오.
- 로그 파일 크기에 대한 구성 변경 사항을 되돌리고 MySQL을 다시 시작하십시오.
- 실행중인 MySQL에서 : SET GLOBAL innodb_fast_shutdown = 0;
- MySQL 중지
- 구성을 로그 파일 크기로 변경하십시오.
- 두 로그 파일을 모두 삭제하십시오.
- MySQL을 시작하십시오. 로그 파일 부족에 대해 불평하지만 로그 파일을 작성하면 모든 것이 잘됩니다.