本文目錄一覽:
mysql 資料庫無法啟動
故障處理
移除當前使用的 redo log 文件,然後可以試著啟動資料庫,結果啟動失敗!
提示:
[ERROR] InnoDB: Page [page id: space=0, page number=0] log sequence number 178377412422 is in the future! Current system log sequence number 165909011496.
這樣的錯誤,這是因為 MySQL writer 線程按照配置的時間間隔以 page 為單位刷新 buffer 數據到磁碟。當數據刷新到磁碟的時候,新寫入磁碟的 page 包含了較新的 LSN,此時系統 system 表空間頭的 LSN 並沒有同步更新,通常這是檢查點線程的工作。在正常的崩潰恢復中,MySQL 可以藉助 redo log 來進行前滾和回滾,但是此時 redo log 已經被我們刪掉了,MySQL 無法進行恢復操作。此時,我們設置 innodb_force_recovery=3 來強制啟動 MySQL,仍然啟動不成功,改成 4 後啟動了!
再使用 mysqldump 導出備份,結果噩夢又降臨了!MySQL 又 crash 了。
提示:
InnDB: Failed to find tablespace for table……
設置參數 innodb_force_recovery=5,資料庫仍然啟動失敗,再設置成 6,啟動成功!用 sqldump 順利把數據備份出來了!
再初始化資料庫,把剛剛備份的資料庫導入,資料庫恢復成功完成!
參數說明
這裡的關鍵是設置 innodb_force_recovery 參數,對應這個參數的說明如下:
1. SRV_FORCE_IGNORE_CORRUPT:忽略檢查到的 corrupt 頁;
2. SRV_FORCE_NO_BACKGROUND:阻止主線程的運行,如主線程需要執行 full purge 操作,會導致 crash;
3. SRV_FORCE_NO_TRX_UNDO:不執行事務回滾操作;
4. SRV_FORCE_NO_IBUF_MERGE:不執行插入緩衝的合併操作;
5. SRV_FORCE_NO_UNDO_LOG_SCAN:不查看重做日誌,InnoDB 存儲引擎會將未提交的事務視為已提交;
6. SRV_FORCE_NO_LOG_REDO:不執行前滾的操作。
升級win10後原mysql資料庫無法訪問
1、首先,查看MySQL的服務是否存在。如果不存在需要先安裝服務。安裝服務的方法是進入MySQL Server的安裝目錄,找到bin目錄,然後找到文件mysqld.exe,使用命令行運行 mysqld –install MySQL57 安裝服務(如果不成功嘗試使用管理員方式運行,MySQL57是服務的名字,默認是MySQL)。
2、如果上述方法安裝服務失敗,則可採用下述方法安裝(成功則跳過此步)。搜索程序「regedit.exe」,即註冊表編輯器,打開後找到 「計算機」——”HKEY_LOCAL_MACHINE”——「SYSTEM」——「CurrentControlSet」——「Services」,然後在該目錄下新建項MySQL57(服務的名字)即可成功建立項目。
3、找到新建的項,然後可以看到其中有ImagePath這一項,這其實是可執行文件的路徑。因為MySQL服務是需要靠mysqld這個命令來啟動的,所以檢查下ImagePath的路徑是否正確。路徑錯誤導致啟動服務時報錯—「無法找到文件」。
4、修改ImagePath的內容為正確的路徑值,正確的值是”D:\MySQL\MySQL Server 5.7\bin\mysqld” –defaults-file=”D:\MySQL\MySQL Server 5.7\my.ini” MySQL 是這種形式的,對照一下,如果路徑不對,修改過來。
5、重啟計算機,再次啟動服務,並可以成功運行MySQL服務。
mysql5.7.12報錯如下情況導致無法連接資料庫應該怎麼辦?
一、mysqld 進程沒有正常運行遇到這種情況首先到伺服器上看看 mysqld 進程是否活著,採用的命令:
二、客戶端不能和進程 mysqld 通信如果 MySQL 伺服器上的 mysqld 進程運行正常,我們再看看客戶端能不能和 mysqld 進行通信,使用下面的命令進行網路連通的測試:telnet localhost 3306
如果本地能通,再到客戶端的機器上把 localhost 換成 MySQL 伺服器的 ip 地址進行測試。如果不能通,通常有兩種原因,一種原因是 OS 或網路的問題,或者是防火牆;另一種原因是 mysqld 自身根本沒有偵聽客戶端的連接請求, mysqld 啟動後對於客戶端的偵聽是分三種情況。
第一種情況
是使用參數 –skip-networking 跳過偵聽客戶端的網路連接,用下面的命令我們可以看到 MySQL 根本沒有偵聽 3306 埠。
第二種情況
使用參數 –bind-address 後面增加對客戶端訪問 IP 地址的限制,例如只偵聽本地的連接
三、賬戶密碼的問題最後一種情況是賬戶密碼的問題,應付這種情況我們有個有力的工具就是查看 MySQL 的 error log, error log 記載信息的詳細程度上由參數 –log-error-verbosity 進行控制的
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/234106.html