2009-01-27 161 views
93

是否可以從物理數據庫文件恢復MySQL數據庫。我有一個具有以下文件類型的目錄:從物理文件恢復MySQL數據庫

client.frm
client.MYD
client.MYI

,但約20多桌。

我通常使用mysqldump或類似的工具來獲得1個SQL文件一切都那麼有什麼辦法來處理這些類型的文件?

回答

99

一個MySQL MyISAM表是三個文件的組合:

  • 的FRM文件是表的定義。
  • MYD文件是存儲實際數據的地方。
  • MYI文件是存儲在表上創建的索引的位置。

你應該能夠在你的數據庫文件夾複製它們恢復(在Linux中,默認位置是/var/lib/mysql/

你應該這樣做,而服務器沒有運行。

+58

這僅適用於MyISAM表。 InnoDB將其表和索引存儲在單個表空間*中,缺省情況下由3個文件ibdata1,ib_logfile0和ib_logfile1組成。爲了恢復數據庫,你還需要這些文件。 *每個表的表空間都是可能的,但不是默認的 – 2009-08-21 18:18:58

+14

他說他有.frm .myi和.myd文件。然後我認爲它是MyISAM表格。 – Vincent 2009-08-24 16:31:22

+0

right-point taken :) – 2009-08-27 07:36:24

1

是的!只需將它們添加到數據庫文件夾(取決於操作系統)並運行諸如「MySQL Fix Permissions」之類的命令。這重新存儲數據庫。也可以看到,文件上也設置了正確的權限。

+0

我做到了,但我不認識的表。正如我在對先前答案的評論中所說的那樣。 – orezvani 2013-09-03 11:42:23

0

我曾經這些文件複製到數據庫中存儲文件夾爲其工作的MySQL數據庫,啓動數據庫,並等待它「修復」的文件,然後使用mysqldump提取它們。

2

With MySql 5.1(Win7)。要重新創建數據塊(InnoDbs)我把它換成以下迪爾斯的所有內容(的my.ini PARAMS):

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/" 
innodb_data_home_dir="C:/MySQL Datafiles/" 

從那以後,我開始MySQL服務和一切工作正常。

5

如果要恢復的文件夾,不要忘記將文件執行chown到MySQL:MySQL的

chown -R mysql:mysql /var/lib/mysql-data

否則試圖刪除數據庫或添加新列等時,你會得到錯誤..

和重新啓動MySQL

service mysql restart 
6

我有同樣的問題,但沒有成功地恢復基於上述說明的數據庫。

我只接到了我的Ubuntu OS恢復mysql數據庫文件夾。我的問題是如何恢復我的數據庫與那些不可讀的MySQL數據文件夾。現在我轉回到開發環境的win7操作系統。

*注意 我有一個現有的數據庫服務器在Win7運行,我只需要幾個數據庫文件從恢復的文件檢索。要成功從Ubuntu操作系統恢復數據庫文件,我需要在我的win7操作系統中從Ubuntu操作系統中安裝全新安裝的mysql數據庫服務器,以恢復該舊數據庫服務器中的所有內容。

  1. 再拍新的MySQL數據庫服務器相同的版本從 恢復的文件。

  2. 停止MySQL服務器

  3. 複製恢復的文件夾,並在 粘貼(C:\ ProgramData \ MySQL的\ MySQL服務器5.5 \數據)的mysql數據庫是存儲 。

  4. 複製ibdata1文件位於linux mysql安裝文件夾中,並將其粘貼到(C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ data)中( )。剛剛超過 對現有或替換前進行備份。

  5. 啓動mysql服務器並檢查是否已成功恢復 數據庫文件。

  6. 要在我目前使用的mysql服務器中使用恢復的數據庫 只需導出恢復的數據庫並將其導入我現有的mysql 服務器。

希望這些將有助於,因爲我沒有找到解決我的問題。

11

從@Vicent的答案,我已經恢復如下MySQL數據庫:

步驟1.關閉MySQL服務器

第二步複製數據庫,數據庫文件夾(在Linux中,默認位置是的/ var/lib中/ MySQL的)。保持數據庫名稱相同,並在mysql模式下保持數據庫名稱相同。

sudo cp -rf /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/ 

第3步:改變自己和改變模式的文件夾:

sudo chown -R mysql:mysql /var/lib/mysql/database1 
sudo chmod -R 660 /var/lib/mysql/database1 
sudo chown mysql:mysql /var/lib/mysql/database1 
sudo chmod 700 /var/lib/mysql/database1 

第4步:複製ibdata1中在你的數據庫文件夾

sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/ 

sudo chown mysql:mysql /var/lib/mysql/ibdata1 

第5步:複製ib_logfile0和ib_logfile1文件數據庫文件夾。

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/ 

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/ 

記得改變那些文件的自己和改變根:

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0 

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1 

sudo chown -R mysql.mysql /var/lib/mysql 

步驟6(可選):我的網站有配置存儲在特定位置的文件,那麼我將它們完全複製到相應的位置。

第7步:啓動您的Mysql服務器。一切都回來,享受它。

也就是說。

看多:https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/