經過*.frm,*.myd,*.myi文件恢復mysql數據庫

數據庫的備份只有這樣的*.frm,*.myd,*.myi文件怎麼辦?html

1.找到mysql的安裝路徑,找到my.ini文件,打開找到「datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"」mysql

2.找到data文件夾,把備份的數據庫(*.frm,*.myd,*.myi文件)複製到data目錄下;sql

3.把備份數據庫中的ibdata1文件也複製進來,需注意的是ibdata1文件若是覆蓋掉以前的,以前庫中的其餘數據庫則不可用,因此先建議把以前的庫備份數據庫

4.這樣數據庫就算恢復回來啦,若是出現有的表not exist,需注意ibdata1文件,多半是它的錯服務器

 

補充知識點:
*.frm是描述了表的結構,*.MYD保存了表的數據記錄,*.MYI則是表的索引
------------------------------------------------------------
注意事項:
儘量的保證新老服務器mysql的版本一致,字符編碼一致
------------------------------------------------------------
其餘:
導出*.sql文件大小問題,由於有些數據庫限制大小,太大了的導入會出問題(對了導出後大於服務器限制的能夠打成zip再導入)編碼

---------------------------------------------------------------------------------spa

釋放MySQL ibdata1文件的空間

在MySQL數據庫中,若是不指定innodb_file_per_table參數,單獨存在每一個表的數據,MySQL的數據都會存放在ibdata1文件。
mysql ibdata1存放數據,索引等,是MYSQL的最主要的數據。命令行

步驟:日誌

1,備份數據庫orm

從命令行進入MySQL Server 5.1/bin
備份所有數據庫,執行命令mysqldump -q -uusername -pyourpassword --add-drop-table --all-databases > /backup/all.sql

除數據庫
drop database db1;
drop database db2;

此處不刪除應用數據庫,在全庫恢復數據庫時,就會報異常錯誤,一些表的*.ibd會報不存在。

解決方式:

movo db1 /backup/db1_bak

movo db2 /backup/db2_bak

作完此步後,而後中止數據庫。


2,修改mysql配置文件

修改my.cnf文件,增長下面配置

innodb_file_per_table

對每張表使用單獨的innoDB文件, 修改/etc/my.cnf文件

3,刪除原數據文件

刪除原來的ibdata1文件及日誌文件ib_logfile*,刪除data目錄下的應用數據庫文件夾(mysql,test,information_schema數據庫自己文件夾不要刪除)

4,還原數據庫

啓動數據庫服務

從命令行進入MySQL Server 5.1/bin
還原所有數據庫,執行命令mysql -uusername -pyourpassword < /all.sql

大公告成。

通過以上幾步後,能夠看到新的ibdata1文件就只有幾十M了,數據及索引都變成了針對單個表的小ibd文件了,它們在相應數據庫的文件夾下面。

相關文章
相關標籤/搜索