已試過的方法:
1、停止MySQL服務
2、修改my.ini,在[mysql] 中追加 innodb_force_recovery=4 配置
3、啟動MySQL服務,能正常啟動服務,但資料庫並沒有恢復,完成的.err日誌如下:
130205 16:01:26 [Note] Plugin 'FEDERATED' is disabled.
130205 16:01:26 InnoDB: The InnoDB memory heap is disabled
130205 16:01:26 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130205 16:01:26 InnoDB: Compressed tables use zlib 1.2.3
130205 16:01:26 InnoDB: Initializing buffer pool, size = 554.0M
130205 16:01:26 InnoDB: Completed initialization of buffer pool
130205 16:01:26 InnoDB: highest supported file format is Barracuda.
130205 16:01:26 InnoDB: Waiting for the background threads to start
130205 16:01:27 InnoDB: 1.1.8 started; log sequence number 1595675
130205 16:01:27 InnoDB: !!! innodb_force_recovery is set to 4 !!!
130205 16:01:28 [Note] Event Scheler: Loaded 0 events
130205 16:01:28 [Note] H:\MySQL Server\bin\mysqld: ready for connections.
Version: '5.5.22' socket: '' port: 3306 MySQL Community Server (GPL)
---------------------------------------------------------------------------------------------------
② mysql ibdata1刪除了,怎麼恢復數據
昨天,有個朋友對公司內部使用的一個MySQL實例開啟binlog,但是在啟動的過程中失敗了(他也沒提,為何會失敗),在啟動失敗後,他刪除了ibdata1和ib_logfile,後來,能正常啟動了,但所有的表通過show tables能看到,但是select的過程中卻報「Table doesn't exist」。
於是,建議他試試可傳輸表空間。
同時,自己也測試了下,確實可行。
測試版本 MySQL 5.6.32 社區版
恢復的基本步驟
1. 將原來的數據文件COPY到其它目錄下。
2. 創建同名表,表結構必須保持一致。
3. 導出表空間
mysql> ALTER TABLE t DISCA
③ mysql8 ibdata文件丟失怎麼恢復數據
因為磁碟空間不足,我的一個虛擬機伺服器崩潰了。結果資料庫伺服器進程無法啟動,數據也就無法導出。只能想辦法從資料庫原始文件 ibdata 和 frm 文件中恢復資料庫。
因為沒有經驗,好不容易才找到了恢復方法。特此記錄,以備後用。
磁碟空間不足之後,mysqld 進程無法啟動,提示「Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)」。這真是讓人無比頭大,資料庫根本連接不上。
目錄 Contents
1. 保存原始資料庫文件
2. 恢復方法
3. 參考資料:
1. 保存原始資料庫文件¶
好在資料庫原始文件還在。在我的系統環境和配置情況下,這些文件位於 /var/lib/mysql/ 文件夾下面。假設資料庫名是 test,則這些文件表現為:
--mysql
|--test
|--1.frm
|--2.frm
|...
|--mysql
|...
|--ib_logfile0
|--ib_logfile1
|--ibdata1
|...
這些就是原始資料庫文件,可以用來恢復資料庫。將這些文件額外保存一份,以防萬一。
2. 恢復方法¶
我的原始虛擬機完全沒有磁碟空間而無法啟動資料庫伺服器進程。雖然試著刪除一些不需要的文件,但是資料庫卻始終無法連接。於是我新建了一個幾乎一樣的虛擬機(當然磁碟加大了),試圖將這些資料庫文件導入並恢復資料庫。
在經歷了很多錯誤之後,終於找到了正確的方法:
安裝完成新伺服器之後,通過命令行新建了與原來一樣的資料庫:資料庫名稱、用戶名、密碼都一樣。如果有多個資料庫需要恢復,就都給建好。(跟配置新伺服器一樣,參見安裝和配置 MYSQL 資料庫伺服器。)
停止 mysqld 進程
service mysqld stop
將備份的原始資料庫文件中的所有 .frm 文件(保持原來的目錄結構)和 ibdata1 文件復制到新伺服器的資料庫文件目錄中(如果新伺服器操作系統和配置環境一樣,那麼目錄結構也一樣),其它文件不要。
使用 -innodb_force_recovery=6參數啟動資料庫伺服器進程,這里是
/etc/init.d/mysqld start -defaults-file=/etc/my.cnf -standalone -console -innodb_force_recovery=6
OK,資料庫恢復完成。
④ mysql ibdata1刪除了,怎麼恢復數據
在innodb的buffer
pool中,有許多dirty
page(就是內存中的數據已經被修改,但是沒有寫迴文件中),
如果直接把文件復制回去,輕則數據丟失,重則ibdata1文件損壞。
備份mysql數據的時候,也不能直接備份這幾個文件,是同樣的道理。
我們必須保證所有buffer
pool中的數據修改都保存到了硬碟文件上面,
為此,首先要停止更多的寫入/更新/刪除操作,然後等待innodb
flush
pages
to
disk.
停止寫入的話,可以把網站應用關閉,或lock
tables:
⑤ 怎麼通過data來恢復mysql數據
可以嘗試:
1、新建一個一樣名字的資料庫;
2、關掉mysql,把備份的data數據覆蓋進現在mysql的data中
3、啟動mysql進去看看
⑥ 如何通過mysql的data文件恢復資料庫
mysql數據恢復過程
從另一台機上把mysql資料庫的mysql文件夾拷貝到本地機上,目的是恢復本地機對數據的訪問和操作。經過如下幾種情況的操作。
1.
在本地重裝mysql(安裝目錄d:\program
files\mysql\mysql
server
5.0),直接把mysql文件夾拷貝至d:\program
files\mysql\mysql
server
5.0\。結果,失敗:資料庫連接錯誤。
2.
卸載後重裝mysql,將d:\program
files\mysql\mysql
server
5.0\下的數據備份,只把mysql\data文件夾全部內容拷貝到d:\program
files\mysql\mysql
server
5.0\data下。結果,失敗:資料庫連接錯誤。將備份的數據還完覆蓋。結果,失敗,還是連接不上資料庫。
3.
卸載後重裝mysql,將mysql\data文件夾里的cf1,last文件夾(這兩個是原來mysql里的資料庫)拷貝進d:\program
files\mysql\mysql
server
5.0\data。連接成功,在navicat
for
mysql里看到資料庫cf1和last,但是不能訪問,因為數據全為零。明白了原來data里以資料庫命名的文件存儲的是資料庫的表結構,不是元數據。下一步,把data文件夾里的ibdata1文件(3.4g大,明顯存儲了元數據)拷貝到d:\program
files\mysql\mysql
server
5.0\data里,代替原來的ibdata1文件。重啟電腦,打開navicat
for
mysql,連接成功,數據可以訪問操作。
至此,操作終於成功。其實當初在那台機上把數據導出來,而不是現在直接把文件夾mysql復制過來會更容易恢復。但那台機已經重裝了系統,也就是說mysql失效了。
⑦ 怎樣恢復data目錄中的mysql資料庫
參考這篇文章
http://blog.163.com/kwzong@126/blog/static/4719260520086244915955/
大概意思就是 把資料庫 kidd 和元數據 復制過去就ok了