共計 1173 個字符,預計需要花費 3 分鐘才能閱讀完成。
場景:mysql 數據庫突發異常無法啟動且平時未做備份時的特殊處理辦法。一般 MyIASM 可以直接拷貝過去,就可以完成備份的還原。但是如何是 InnoDB 類型的 mysql 數據庫時,很多用戶發現直接拷貝源文件竟然無法讀取數據和使用,這時候一定要將所有 mysql 下的數據一起備份下來,千萬不要只備份數據庫文件,還需要備份“ibdata1”等文件。
mysql 通過拷貝數據庫源文件恢復數據步驟:
第一步:通過 MySQL 的配置文件找到源文件位置,并將源文件拷貝到本地
如下圖:
CentOS 系統中 MySQL 的配置文件位置及源文件位置
Ubuntu 系統中 MySQL 的配置文件位置及源文件位置
以上目錄位置皆為安裝 MySQL 時默認位置!!!
第二步:將 /var/lib/mysql 中的 mysql 目錄拷貝出來,mysql 目錄中包含了以下文件,如圖:
其中 藍色目錄 對應我們的數據庫,里面存放的是該數據庫的表結構及表數據、索引結構等數據。
mysql、performance_schema、sys這三個庫是 MySQL 系統庫,其他的是我們自己的數據庫,在恢復數據時我們只需要將 ibdata1 和我們自己的庫目錄拷貝到新的庫中去。
第三步:找一臺服務器 ( 可以是虛擬機 ),在上面新安裝一個 MySQL 服務,安裝成功后,將MySQL 服務 stop 掉,再將我們本地保存的待恢復的源文件ibdata1 和我們自己的庫目錄拷貝到新服務器上 MySQL 的源文件目錄 (/var/lib/mysql) 下,并將該目錄下的 ib_logfile0、ib_logfile1 兩個文件刪除掉,然后注意拷貝進去的源文件的權限 ( 即用戶、組 ) 是否和 MySQL 安裝時的用戶和組一致,若不一致,則修改一致后再啟動 MySQL 服務,否則可能會出現啟動異常或讀取不到數據等情況。
第四步:啟動成功后,通過工具連接該數據庫即可看到恢復的數據,然后就可以導出成 SQL 文件了。
最關鍵一步:復制的時候,應將數據目錄下的ibdata1 文件一并復制過去,并且刪除 ib_logfile0,ib_logfile1 等文件!
修改目錄權限命令:
# 先進到 /var/lib 目錄
cd /var/lib
# 修改 mysql 目錄及其下所有子目錄和文件的所屬用戶
chown -R mysql mysql
# 修改 mysql 目錄及其下所有子目錄和文件的所屬用戶組
chgrp -R mysql mysql
# 修改拷貝進去的數據庫目錄的權限與 MySQL 的系統庫目錄權限一致
chmod 750 yourBaseName
# 修改 ibdata1 文件的權限與 MySQL 的系統自帶文件權限一致(可做可不做,我是強迫癥)
chmod 640 ibdata1
# 再進入每個拷貝的庫文件目錄中將其中的文件權限修改一致(可做可不做,我是強迫癥)
chmod 640 *
此方法并非百分百有效,僅在應急時使用,平時做好備份!! 平時做好備份!! 平時做好備份!