Mysql
InnoDB:錯誤:日誌文件 ./ib_logfile0 大小不同
在將一個數據庫轉換為使用 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
但它在第 2 行引發“錯誤 2013(HY000):在查詢期間失去與 MySQL 伺服器的連接”錯誤重新啟動 mysqld。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。它會抱怨缺少日誌文件,但它會創建它們,一切都會好起來的。