一、環境介紹
1、mysql主從復制中的從服務器
2、Windows Server 2008 R2 Enterprise系統 64位操作系統
3、MySQL數據庫版本為5.6.34
二、報錯詳情
從服務器內存使用率已快接近99%,計劃將從服務器上的mysql關閉并關機進行硬件升級。后面因需要備份數據,則沒有進行硬件升級,重啟服務器之后,想要從系統服務啟動mysql時,報錯見下圖:
三、處理過程
從網上找了很多辦法都沒有解決,最后根據網上的方法去查看windows日志
在計算機管理界面依次找到【診斷】->【事件查看器】->【服務器角色】->【管理事件】或者【診斷】->【事件查看器】->【windows日志】->【應用程序】。點擊【應用程序】。
切記,不能單單看一個錯誤日志,連續的錯誤日志都需要查看,不然有可能找不到真正的錯誤原因,導致找不到問題的根源。我就是因為疏忽,在這邊也沒找到關鍵信息,
最后在mysql安裝目錄找到data文件夾下擴展名是.err那個文件,打開查看錯誤信息
發現報錯信息為:
[ERROR] InnoDB: .\ibdata1 can't be opened in read-write mode
[ERROR] InnoDB: The system tablespace must be writable!
受到https://blog.csdn.net/samdy_chan/article/details/54579506這篇博客的啟發。解決辦法如下
四、解決方案
1、打開任務管理器終止mysqld進程;
2、打開mysql安裝目錄的data文件夾,重命名這2個文件:ib_logfile0 和 ib_logfile1
3、重啟mysql服務
五、拓展知識
mysql的innodb中事務日志ib_logfile
事務日志或稱redo日志,在mysql中默認以ib_logfile0,ib_logfile1名稱存在,可以手工修改參數,調節
開啟幾組日志來服務于當前mysql數據庫,mysql采用順序,循環寫方式,每開啟一個事務時,
會把一些相關信息記錄事務日志中(記錄對數據文件數據修改的物理位置或叫做偏移量);
作用:在系統崩潰重啟時,作事務重做;在系統正常時,每次checkpoint時間點,會將之前寫入事務
應用到數據文件中。