確切的說更像是一次數據遷移。
背景介紹:
操作系統: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
之后搭建好新的環境,導入數據庫,創建好用戶,授權。(唯一注意的一點是字符集的問題)
至此整個數據恢復工作完成。
