由於在一台測試機器上打算重新安裝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匯入匯出
如何打破傳統論壇?Discuz與OpenSNS
網際網路 的快速發展讓很多企業開始青睞於開設自己的sns社群,以促進使用者之間的交流 增加互動性和豐富 的內容。目前市場上最火的5款熱門開源sns社群系統 discuz opensns elgg和jeesns 近乎等,這些社群系統都能夠提供各種社交所需功能。在搭建sns社群 前,不妨先了解一下,找到...
阿里雲主機如何安裝Discuz論壇
寫的比較簡單,這主要是個人筆記,需要結合阿里雲的linux操作指南 1.安裝lrzsz,yum install lrzsz 2.使用命令rz,從本地上傳sh.zip 3.unzip sh.zip 4.更改sh目錄及其下資料夾許可權 chmod r 755 sh 5.在sh目錄下執行命令 instal...
Discuz 使用技巧 如何隱藏論壇分類的名稱?
1程式設計客棧.q 如何設定遊客在特定的某個版區只能看到帖子但無法看到帖子內容?首先,系統設定 程式設計客棧 分組與級別 使用者組 將遊客的閱讀許可權設為0 然後,系統設定 論壇設定 編輯論壇 選擇你打算對遊客開放瀏覽帖子的論壇點編輯,在 論壇許可權 瀏覽論壇許可 處 在遊客前打勾。這樣,遊客就無法...