Innodb

錯誤 1067:程序意外終止一世nnoDB一世nn○D乙InnoDB

  • May 13, 2015

昨晚意外關閉數據庫伺服器後嘗試重新啟動 MySQL 服務時,我遇到以下錯誤。

無法在本地電腦上啟動 MySQL 服務。

錯誤 1067:程序意外終止。

當我檢查 MySql 數據文件夾下的 .err 日誌文件時,日誌詳細資訊如下所示。


InnoDB:日誌掃描通過檢查點 lsn 804 2135184621 150513 12:20:39 InnoDB:數據庫未正常關閉!

InnoDB:開始崩潰恢復。

InnoDB:從 .ibd 文件中讀取表空間資訊…

InnoDB:從雙寫恢復可能的半寫入數據頁

InnoDB:緩衝區…

InnoDB:進行恢復:掃描到日誌序列號 804 2136195241 150513 12:20:50 InnoDB:開始將一批日誌記錄應用到數據庫…

InnoDB:百分比進度:0 1 2 3 150513 12:20:50 InnoDB:文件中執行緒​​ 2412 中的斷言失敗。\rem\rem0rec.c 第 337 行

InnoDB : 我們故意產生一個記憶體陷阱。

InnoDB:向 http://bugs.mysql.com 送出詳細的錯誤報告。

InnoDB:如果你得到重複的斷言失敗或崩潰,即使是

InnoDB: 在 mysqld 啟動後立即,也可能存在

InnoDB: InnoDB 表空間損壞。

150513 12:20:51 - mysqld 出現異常 0xc0000005 ;

這可能是因為您遇到了錯誤。此二進製文件或與之鍊接的庫之一也可能已損壞、建構不正確或配置錯誤。此錯誤也可能是由硬體故障引起的。我們將盡最大努力收集一些資訊,希望能幫助診斷問題,但由於我們已經崩潰,肯定有問題,這可能會失敗。

key_buffer_size=135266304

read_buffer_size=65536

max_used_connections=0

max_threads=400

threads_connected=0

mysqld 可能最多可以使用

key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 262617 K 字節的記憶體

希望沒關係;如果不是,減少方程中的一些變數。

thd: 0x0

正在嘗試回溯。您可以使用以下資訊找出 mysqld 死在哪裡。如果您在此之後沒有看到任何消息,則出現嚴重錯誤…

InnoDB:執行緒 164 在文件中停止 .\os\os0sync.c 第 391 行

0070A1A8 mysqld.exe!rec_get_offsets_func()

$$ rem0rec.c:337 $$

0071B498 mysqld.exe!page_cur_parse_insert_rec()$$ page0cur.c:798 $$

0071512F mysqld.exe!recv_parse_or_apply_log_rec_body()$$ log0recv.c:814 $$

00715CF1 mysqld.exe!recv_recover_page()$$ log0recv.c:1294 $$

006EBE0F mysqld.exe!buf_page_io_complete()$$ buf0buf.c:2033 $$

006E4472 mysqld.exe!fil_aio_wait()$$ fil0fil.c:4273 $$

006BCDCD mysqld.exe!io_handler_thread()$$ srv0start.c:437 $$

77E6482F kernel32.dll!GetModuleHandleA()


事件查看器中顯示的錯誤日誌:

mysqld.exe 中出現未處理的 win32 異常

$$ 1200 $$. 即時調試此異常失敗並出現以下錯誤:調試器無法啟動,因為沒有使用者登錄。


MySQL 版本:5.1

表類型:InnoDB

ibdata1 大小:28GB

製作的表沒有 SQL 轉儲備份文件,只有 SQL 物理數據文件。我迫切需要恢復這些數據並使網站恢復線上。

請幫忙。

聽起來您的數據文件已損壞。您可以嘗試使用innodb Force Recover啟動伺服器,然後使用Select Into Command轉儲表數據。如果您在崩潰前啟用了二進制日誌文件,您可以通過Point In Time Recovery恢復數據

引用自:https://dba.stackexchange.com/questions/101359