這裡說的mysql恢復資料庫,是指沒有通過正常備份的情況下,通過mysql儲存的資料檔案如何恢復資料庫。
由於在一台測試機器上打算重新安裝mysql資料庫,由於簡單粗暴的直接解除安裝了,沒有備份公司discuz和redmine使用的mysql資料庫,過程可想的悲慘。
還好的是只是解除安裝掉了mysql的程式,所有的資料檔案還是存在的。
下面是在恢復資料庫的過程
1. discuz資料庫
discuz資料庫的恢復非常順利, 在安裝好新版本的mysql後,直接將原來的資料庫檔案copy到新的資料目錄中,重新啟動mysql, 就能看到恢復的資料庫了
2. redmine資料庫
本打算直接使用上面的經驗,也能看到所有的表,但是就是執行查詢的時候,總是報錯"表不存在".
後來查了一些資料,發現,原因應該是discuz和redmine使用的mysql引擎不一樣導致的。
discuz使用的是myisam, 而redmine使用的是innodb.
解決的辦法是,
除了要copy資料目錄外,還要記得覆蓋ibdata1檔案。
下面是**
以表」table」為例: 如型別是myisam, 資料檔案則以」table.frm」」table.myd」」table.myi」」三個檔案儲存於」/data/$databasename/」目錄中. 如型別是innodb, 資料檔案則儲存在」$innodb_data_home_dir/″中的ibdata1檔案中(一般情況),結構檔案存在於table_name.frm中. mysql的資料庫檔案直接複製便可以使用,但是那是指「myisam」型別的表。 而使用mysql-front直接建立表,預設是「innodb」型別,這種型別的乙個表在磁碟上只對應乙個「*.frm」檔案,不像myisam那樣還「*.myd,*.myi」檔案。 myisam型別的表直接拷到另乙個資料庫就可以直接使用,但是innodb型別的表卻不行。解決方法就是:
同時拷貝innodb資料庫表「*.frm」檔案和innodb資料「ibdata1」檔案到合適的位置。啟動mysql的windows服務 由於mysql這樣資料混雜的形式, 往往很容易讓使用者在備份時忘記了備份innodb, 從而導致了上述錯誤.
意思就是說在資料庫引擎型別為innodb時,拷貝資料檔案的同時還需要拷貝ibdata1,於是把ibdata1也拷貝過去覆蓋,發現還是有點問題,於是停止mysql服務,將目錄下的ib_logfile*檔案全部刪除掉,重新啟動mysql服務,well done,可以了
高興啊,於是稍微總結了,希望以後遇到相同的問題,能夠快速解決。
1,在進行mysql資料庫備份的或遷移的時候,盡量備份完成所需要的資料;
2,如果直接拷貝原有資料庫檔案"*.frm"、"*.myd"、"*.myi"等檔案時候,如果原資料庫引擎是innodb,切記還需拷貝ibdata1檔案
3,備份資料庫的時候,最好是用相關的工具進行備份或是匯出sql檔案,以免浪費時間在資料庫恢復上
4,msyql版本或是備份工具的版本不同,也可能引起資料恢復有問題。
實踐證明以上問題是存在的,解決方案是可行的,哈哈,為了以後方便,寫了這篇部落格隨筆,希望大牛看到了不要鄙視,歡迎拍磚。
1:myisam型別的資料檔案可以在不同作業系統中copy,這點很重要,佈署的時候方便點。(只需要拷貝 資料庫名字資料夾下面的檔案,這樣資料庫就拷貝完了)
2: innodb型別的 要注意多拷貝 ibdata1 , 最好不要是直接複製資料夾,而是應該用sql匯入匯出
MySQL資料庫恢復
使用mysql命令 mysql u root p test home bak 2019 04 11 stumysql1.sql enter password song123 使用source命令恢復資料庫的說明 進入mysql資料庫控制台後,切換到想恢復資料的資料庫。mysql use 資料庫 接著...
MySQL資料庫被刪除如何恢復
第一步 保證mysql已經開啟binlog,檢視命令 檢視binklog是否開啟 show variables like log bin 檢視binlog存放日誌檔案目錄 如下圖,博主binlog目錄為 data mysql show variables like datadir 值為off,需開啟...
mysql資料庫受損恢復 MySQL資料庫恢復
資料庫恢復是指以備份為基礎,與備份相對應的系統維護和管理操作。系統進行恢復操作時,先執行一些系統安全性的檢查,包括檢查所要恢復的資料庫是否存在 資料庫是否變化及資料庫檔案是否相容等,然後根據所採用的資料庫備份型別採取相應的恢復措施。資料庫恢復機制設計的兩個關鍵問題是 第一,如何建立冗餘資料 第二,如...