根據《MySQL技術內幕》一書的介紹,innodb存在表空間的概念,是以共享表空間的格式,將數據都存入到一個文件中。介紹ibdata1,ibdata1是與存儲引擎相關的,只在innodb存儲引擎下出現,並且是mysql-server中全部innodb存儲引擎的表,不分數據庫都存儲到ibdata1中,固然這個文件中還會存儲其餘信息,如索引等。當在MySQL中開啓innodb_file_per_table後,那麼將會在每一個數據庫對應的文件夾下,每張表將有存在兩個對應文件,一個是.frm,另一個是.ibd文件。這種狀況成爲私有表空間。可是這個時候共享表空間ibdata1,仍然是存在的。
yum安裝的mysql,數據目錄是/var/lib/mysql
,能夠經過/etc/my.cnf
查看。mysql
直接備份.frm,.myd,.myi文件,而後再複製粘貼到目標數據庫文件夾便可。sql
若是是系統表空間的狀況,一個笨辦法就是創建一個新的mysql環境,將舊環境中的ibdata1文件和須要恢復的aa,bb等數據庫文件夾複製到新mysql數據目錄。而後重啓mysqld守護進程就行。數據庫
systemctl restart mysqld
下面是恢復的rbac數據庫user表的數據spa
若是是私有表空間的話,雖然沒實驗過,但我猜測,直接複製.frm文件和.ibd文件到目標數據庫便可。.net
利用數據庫文件恢復MySQL數據rest