Mysql

如果mysql數據庫的innodb日誌文件失去了怎麼辦?

  • August 15, 2013

我所做的是

/etc/init.d/mysql stop

然後刪除了文件:ib_logfile0, ib_logfile1

然後修改了my.cnf文件,變數:innodb_log_file_size

然後:

/etc/init.d/mysql start

並允許重新創建文件

後來發現全域變數innodb_fast_shutdown設置為“1”

問題是,失去了多少數據?

注意:我還有舊文件 ib_logfile0、ib_logfile1,尚未刪除。

依賴數據庫的網站似乎正在執行。

首先要做的事情是:感謝您沒有實際刪除文件——將文件移開總是比刪除它們更好的主意——但不要試圖把舊的日誌文件放回去

可能能夠分析它們,但無法在此伺服器上將它們重新投入使用,因為日誌文件中的日誌序列號 (LSN) 與儲存在 ibdata 中的序列號不匹配。

InnoDB:                          WARNING!
InnoDB: The log sequence number in ibdata files is higher
InnoDB: than the log sequence number in the ib_logfiles! Are you sure
InnoDB: you are using the right ib_logfiles to start up the database?

然後它很可能會開始崩潰恢復,並可能開始“修復”未損壞的東西……所以,我絕對不會嘗試這個。

問題是,失去了多少數據?

如果有任何數據失去,那將是最近的更改(插入/更新/刪除);但是,與我一直認為的完全相反,將設置為 1(但不是 2)的操作實際上可能是安全的。innodb_fast_shutdown

http://dev.mysql.com/doc/refman/5.5/en/innodb-data-log-reconfiguration.html

這些說明暗示只要它沒有設置為“2”就可以了,如果它設置為“2”,他們說將它設置為“1”——而不是像我那樣設置為“0”已經預料到了……所以看起來你很高興,或者文件中存在相當嚴重的缺陷。

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