前言
前段時間要重啓一下mysqld
服務,結果不知道爲何mysqld
關掉後就再也起不來了😭mysql
嘗試屢次後無果,準備重裝MySQL
。不過在卸載MySQL
前把datadir
目錄複製了一份,準備在重裝後用datadir
目錄恢復數據sql
下面開始恢復數據code
恢復數據
注:如下步驟中若是你遇到了問題,能夠嘗試下文中的下一個標題:遇到的問題和問題的解決方案中提供的解決方案class
- 卸載前複製一份
datadir
,命名爲data_old
(便於區分) - 重裝並能成功啓動
MySQL
後,先關閉mysqld
,再將datadir
(這是新安裝的MySQL
的數據目錄)複製一份,命名爲data_copy
- 假設
datadir
指定的目錄爲data
。刪除data
中的ibdata1
,ib_logfile0
,ib_logfile1
。將data_old
中的ibdata1
複製到data
中 - 將
data_old
中你但願恢復的庫的目錄都複製到data
中 - 重啓
mysqld
服務 - 嘗試查詢庫和庫中的表數據,數據存在且可訪問表示數據恢復成功、
遇到的問題和問題的解決方案
-
在步驟5中出現打開庫後提示表不存在。解決方案:重啓
mysqld
file -
在步驟5中出現打開表時提示權限問題,打不開表。解決方案:查看
data
目錄的權限用戶和你要恢復的庫目錄的權限用戶是否一致。解決方案:修改庫目錄的權限用戶權限我當時舊庫目錄的權限用戶是root,而
data
目錄的權限用戶是mysql,結果打開表時出現權限問題。嘗試chown -R mysql:mysql <databaseDir>
命名
爲何不直接用舊data目錄取代新data目錄
我不知道大家能不能,反正我不能😂。嘗試將整個舊的data
目錄覆蓋新的data
,結果mysqld
根本運行不起來。因此我只能一個一個把庫目錄從舊data
複製到新data
裏數據