Mysql
如果mysql數據庫的innodb日誌文件失去了怎麼辦?
我所做的是
/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”已經預料到了……所以看起來你很高興,或者文件中存在相當嚴重的缺陷。