记一次Mysql数据恢复
注:以下內容是從各位大神學習來的(因查找了太多的內容,已經記不清出處了,所以,你說是你的,那就是你的!),以及自己的總結,如果有不對的地方請指正!!!第一次寫,輕噴!!!
原因:因為失誤清空了測試人員的測試專用表數據,本來想清的是額外的表,無奈電腦卡頓,導致操作之后就不可挽回了。
具體操作:暫且稱此表為A_table,navicat中找到此表,右鍵,清空(并不是截斷表truncate),因為是測試人員的數據,故沒開二進制日志mysqlbinlog,也沒有任何備份。如果開啟了獨立表空間,則每張表創(chuàng)建成功后,都會在相應的數據庫下面生成與表名一致的A_table.frm和A_table.iba文件,其中A_table.frm存儲的是表結構,A_table.iba文件存儲的是數據。
本文只介紹知道表結構之后,擁有.iba文件怎么恢復(實測:如果是手工的清除數據,此種方法并不能恢復,但是無奈網上說的不是十分清楚,所以在此,希望能幫助大家,少走彎路,本次恢復失敗,因為是手工清除數據,那么此種方法適合什么情況下恢復數據呢,比如:數據庫壞了,或者硬盤壞了,數據庫啟動不了,但是能找到.iba和.frm文件那么就可以恢復,當然如果有備份和Binlog,自然不需要這種辦法)
查看是否開啟獨立表空間:mysql> show variables like ‘innodb_file_per_table’;(方法很多,一種就夠用)
| Variable_name | Value |
| innodb_file_per_table | ON 表示開啟獨立表空間,接下來
1、創(chuàng)建新數據庫,創(chuàng)建相同表結構的表(表名稱和結構相同)(一定要新建數據庫,除非你覺得即使損壞了也不重要)
2、執(zhí)行alter table A_table discard tablespace;(卸載表空間操作)
3、刪除原表的ibd文件,在data目錄下(此目錄如果是windows系統(tǒng),在C:\ProgramData\MySQL\MySQL Server 5.6\data下,linus系統(tǒng),自己找找吧)
4、復制備份表的ibd文件
5. ALTER TABLE asset_user_product_detail IMPORT TABLESPACE; SHOW WARNINGS;(重新導入表空間)(如果報文件不存在,那么你就要看linus下文件的所有者和所有組了,需要改為一致,Linus下修改權限和所有組,網上方法很多,此次不貼出來了,可能會報一些警告,但是并不影響數據恢復)
總結
以上是生活随笔為你收集整理的记一次Mysql数据恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring boot集成javacv
- 下一篇: 数据机房智能母线槽技术分析-Susie