記一次mysql數據恢復


確切的說更像是一次數據遷移。

背景介紹:

         操作系統:Windows Server 2008 R2

         數據庫版本:MySQL 5.5

         數據庫的安裝目錄與數據文件目錄不在同一個磁盤,數據文件所在的目錄磁盤損壞。而后通過數據恢復工具恢復數據文件。前期研發的同事嘗試啟動恢復數據庫,不成功,多輪嘗試不成功后找到我。

1.得到同事給的數據文件 ibdata1,Mysql安裝目錄MySQL\MySQL Server 5.5。調整my.ini文件嘗試啟動數據庫。

2.將mysql base dir 拷貝到英文目錄D:\test,重新配置my.ini。切換目錄嘗試啟動。

3.啟動另外一個窗口嘗試登錄

4.嘗試跳過密碼驗證,設置參數skip-grant-tables

5.查看數據庫

6.並沒有發現業務庫,進一步查看用戶。

7.查看搜索引擎,InnoDB啟動了。

8.查看錯誤日志

170121 11:31:27  InnoDB: Error: page 7 log sequence number 1055477743
InnoDB: is in the future! Current system log sequence number 566049292.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
170121 11:31:27  InnoDB: Error: page 1 log sequence number 1055476531
InnoDB: is in the future! Current system log sequence number 566049292.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.

9.看到了報錯,日志文件與數據文件內容不符。 證明數據文件是讀到了的,只是,沒有業務用戶,沒有表的定義。重新與報表工程師溝通,得知業務庫數據庫名為JD,用戶也為JD。開始感覺有地方不對勁了,如果只是Innodb的數據文件損壞,mysql.user中應該是有用戶記錄的呀,懷疑這個安裝目錄不是原始的Mysql安裝目錄。

10.找到原始安裝目錄,進行目錄替換。

11.可以查到數據了。嘗試通過mysqldump 的方式導出數據。

mysqldump --database jd > jd_db.sql

之后搭建好新的環境,導入數據庫,創建好用戶,授權。(唯一注意的一點是字符集的問題)

至此整個數據恢復工作完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM