2009-08-13 65 views
7

我沒有做過多的調整,所以這可能相對容易,但我遇到了問題。這是我做的:問題改變innodb_log_file_size

  1. 停止MySQL的
  2. 編輯my.cnf文件(改變innodb_log_file_size
  3. 刪除ib_logfile0/1
  4. 啓動MySQL

啓動正常不過的所有InnoDB表有.frm文件是無效的錯誤,狀態顯示InnoDB引擎被禁用,所以我顯然回去了,刪除了更改並且一切都重新運行。

我能夠改變我嘗試過的每一個其他變量,但我似乎無法找出爲什麼InnoDB在刪除日誌文件後仍無法啓動。我錯過了什麼嗎?

謝謝。

編輯:粘貼日誌下面 - 看起來好像仍然找到日誌文件,即使他們不在那裏?

關機:進行更改後

090813 10:00:14 InnoDB: Starting shutdown... 
090813 10:00:17 InnoDB: Shutdown completed; log sequence number 0 739268981 
090813 10:00:17 [Note] /usr/sbin/mysqld: Shutdown complete 

啓動:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 
InnoDB: than specified in the .cnf file 0 268435456 bytes! 
090813 11:00:18 [Warning] 'user' entry '[email protected]' ignored in --skip-name-resolve mode. 
090813 11:00:18 [Note] /usr/sbin/mysqld: ready for connections. 
Version: '5.0.81-community-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition (GPL) 
090813 11:00:19 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './XXXX/User.frm' 
090813 11:00:19 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './XXXX/User.frm' 
090813 11:00:19 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './XXXX/User.frm' 

它只是一個同樣的錯誤的垃圾,直到我糾正

當它沒有啓動重建後日志文件,所以它必須在我看到的地方。

回答

15

首先,我必須指出,在InnoDB數據文件中的任何chage之前,應該讀取13.2.5. Adding, Removing, or Resizing InnoDB Data and Log Files

您指出的步驟幾乎是正確的。建議在這種類型的更改之前進行備份。讓我們看看會發生在你身上:

錯誤消息

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 
InnoDB: than specified in the .cnf file 0 268435456 bytes! 

通過改變innodb_log_file_size的大小和不刪除舊文件引起的。在您更改後第一次運行mysqld時,您可能忘記刪除de ib_logfile0/1。消息

090813 11:00:18 [Note] /usr/sbin/mysqld: ready for connections. 

表明你解決了這個問題(刪除ib_logfile S)。但是,在刪除它們時會產生另一個問題。數據損壞XXXX \ User.frm或InnoDB引擎的一些問題。

要確保InnoDB的啓用,運行在一個MySQL提示此命令:

show variables like "%inno%"; 

在結果列表中必須有「have_innodb = YES」。有時當InnoDB可以啓動而不是(值爲NODISABLED)時,會出現Incorrect information in file消息。
- 如果出現這種問題,您更改了其他防止InnoDB引擎正常啓動的其他內容(datadir的權限或tmpdir的權限,其他innodb變量(,您沒有顯示完整日誌,等) 。查看更改或將.cnf文件(之前和之後)。
- 如果InnoDB引擎是YES那麼您必須修復表格。 (如果it's這種情況下,添加評論和I'll在這裏添加信息。現在I'm懶得去做。)

+0

爲什麼donwvote?我怎麼能改進它? – 2009-08-25 17:09:08

+0

我建議完全關閉所以首先'SET GLOBAL innodb_fast_shutdown = 0;' – KCD 2013-04-11 05:27:13

1

錯誤的第一行表明您沒有刪除ib_logfile0。你能確認你是重新命名/刪除正確的嗎?

0

檢查事項:

  • 有沒有在設備上有足夠的空間來創建大小的日誌文件?此行爲可能來自完整的設備。
  • 日誌文件是否使用錯誤的設置創建?
  • 您的日誌文件路徑不顯示爲絕對路徑。只是爲了咧嘴一笑,看看驅動器上是否有其他位置包含ib_logfile0。可能是一個愚蠢的錯誤。
+0

有足夠的空間。 (約250克免費) 根本沒有創建日誌文件,我運行啓動後,他們不存在任何地方。 在根上查找了ib_logfile *,並找回了我從中刪除它們的唯一位置。 – savageguy 2009-08-19 15:43:47

0

您是否嘗試過使用SQL客戶端編輯innodb_log_file_size場?

個人而言,我喜歡SQuirreL

+3

innodb相關字段不能在客戶端內編輯。它們必須在my.cnf中編輯,並在服務重新啓動時作爲新值。 – 2009-08-25 19:56:42

0

我懷疑你刪除了錯誤的日誌文件。四處尋找其他ib_logfile *文件。也許你正在使用innodb_log_group_home_dir?

如果是這樣,請確保您從那裏刪除了ib_logfiles而不是數據目錄。