#創建表格
創造?桌子?` ibdtest `?(
` id `?int(11)?不是嗎?NULL?自動遞增,
` fid `?int(11)?不是嗎?NULL?評論?表b '中Id,
`內容`?char(255)?不是嗎?NULL?評論?操作內容,系統生成',
“馬克`?char(255)?不是嗎?NULL?評論?'備註',
初級?鑰匙?(` id `)
)?ENGINE=InnoDB?違約?CHARSET=utf8
#添加數據
插入?ibdtest?(fid,內容,標記)?價值觀?(1,'1','1'),(2,'2','2');
選擇?*?從哪裏?ibdtest
關閉MySQL,將ibdtest.ibd副本放入其他數據庫模擬災難。
[root @ localhost ~]#/opt/soft/MySQL/bin/MySQL admin-p 123456關機
120130 18:31:50 mysqld _ safe mysqld from pidfile/opt/soft/MySQL/60137 . local domain . PID ended
[1]+?done/opt/soft/MySQL/bin/mysqld _ safe-defaults-file =/opt/soft/MySQL/config/my . CNF-user = MySQL
【root@localhost?~]#?cd?/home/soft/mysql/data/test/
【root@localhost?測試]#?陸線 (landlines的縮寫)
總計?1296
-rw-rw。?1?mysql?mysql?8612?簡。18?00:06?a.frm
-rw-rw。?1?mysql?mysql?98304?簡。18?00:24?a.ibd
-rw-rw。?1?mysql?mysql?8624?簡。30?08:34?面積. frm
-rw-rw。?1?mysql?mysql?98304?簡。30?08:36?area.ibd
-rw-rw。?1?mysql?mysql?8642?簡。18?00:05?b.frm
-rw-rw。?1?mysql?mysql?98304?簡。18?00:08?ibd
-rw-rw。?1?mysql?mysql?8693?簡。30?18:27?ibdtest.frm
-rw-rw。?1?mysql?mysql?98304?簡。30?18:28?ibdtest.ibd
-rw-rw。?1?mysql?mysql?8728?簡。6?16:23?測試表
-rw-rw。?1?mysql?mysql?98304?簡。10?04:10?泰斯塔ibd
-rw-rw。?1?mysql?mysql?8693?簡。30?14:30?testmc.frm
-rw-rw。?1?mysql?mysql?98304?簡。30?14:30?testmc.ibd
-rw-rw。?1?mysql?mysql?8693?簡。30?13:54?testme.frm
-rw-rw。?1?mysql?mysql?98304?簡。30?13:55?testme.ibd
-rw-rw。?1?mysql?mysql?8693?簡。30?14:40?testmm.frm
-rw-rw。?1?mysql?mysql?98304?簡。30?14:45?testmm.ibd
-rw-rw。?1?mysql?mysql?8693?簡。30?13:40?testmu.frm
-rw-rw。?1?mysql?mysql?98304?簡。30?13:40?testmu.ibd
-rw-rw。?1?mysql?mysql?8693?簡。30?11:08?testmv.frm
-rw-rw。?1?mysql?mysql?98304?簡。30?11:10?testmv.ibd
-rw-rw。?1?mysql?mysql?8694?簡。4?21:55?testuser.frm
-rw-rw。?1?mysql?mysql?98304?簡。4?22:04?testuser.ibd
-rw-rw。?1?mysql?mysql?8644?簡。14?21:55?user.frm
-rw-rw。?1?mysql?mysql?98304?簡。14?21:55?user.ibd
【root@localhost?測試]#?cp?ibdtest.ibd?/主頁/下載/
【root@localhost?測試]#?cd?/主頁/下載/
#vim打開ibd,在16查看。
【root@localhost?下載]#?vim?-乙?ibdtest.ibd?
:%!xxd?
從下圖可以看出,這個表在當前mysql數據庫中的id是0x10,也就是16。
此時,讓我們假設災難發生了,ibdata被損壞…
只剩下ibdtest.ibd文本,所以我們跳到另壹個mysql服務器,用相同的表構建語句創建ibdtest表。
這時候我們打開這個mysql服務器下的ibdtest.ibd看看:
這個表的id是0x16,也就是22,所以我們只需要把原來的ibdtest.ibd表id改成0x16就可以了。
保存時記得用:% 1!xxd?-r
退出保存。
並用新的ibdtest.ibd覆蓋修改後的文件。
這個mysql服務器會認為表格損壞,無法打開。沒關系。修改innodb_force_recovery = 6。
重新啟動mysql服務:
在“選擇”下,您將知道數據是否已恢復:
此時,寫操作無法執行,所以應該盡快轉儲數據,修改innodb_force_recovery = 0,重新啟動服務,創建新表,然後返回數據。將不演示恢復數據。