2017-07-11 89 views
0

前一段時間我必須重新安裝MySQL,之前我已經將/var/lib/mysql/mydatabase移動到另一個目錄以便能夠在安裝MySQL之後恢復它。 我安裝了MySQL之後,我移回了這個目錄。當我去到mysql控制檯並使用重新安裝MySQL之後恢復數據庫

SHOW DATABASES;

它返回數據庫列表,'mydatabase'列表中。 當我切換到使用「MyDatabase的」,並使用

SHOW TABLES;

它顯示錶的列表,但是當我做任何SELECT命令我得到這個錯誤:

ERROR 1146 (42S02): Table 'mydatabase.mytable1' doesn't exist

從一開始 - 是它足以備份只有/var/lib/mysql/<DATABASE_NAME>來恢復數據庫數據或我錯過了什麼?如果是的話,我可以嘗試解決這個問題'表不存在'?

MySQL的版本是5.7,操作系統是Ubuntu的16.04

+1

當你錯過了ibdata1文件(並且一個好主意也會是ib_logfile {0,1}),並且你的表是InnoDB引擎(這是自5.6 IIRC以來的默認引擎)時,那麼你幾乎搞砸了,特別是當你沒有設置'innodb-file-per-table'時。 – fancyPants

+0

@fancyPants'innodb-file-per-table'一直設置爲1,但關於ibdata1 - 是的,我沒有保存它,所以你認爲沒有機會恢復數據? – XZen

+1

這裏你去:https://dba.stackexchange.com/questions/57120/recover-mysql-database-from-data-folder-without-ibdata1-from-ibd-files – fancyPants

回答

1

的MySQL 5.7的默認存儲引擎InnoDB的是。這將數據存儲在ibdata,ib_logfile0和ib_logfile1中。如果您尚未備份這些文件,則無法恢復數據。

可以肯定的是,不是移動你的數據庫文件,我們應該使用mysqldump工具。

最好使用innodb-file-per-table,它可以將InnoDB表存儲在每張表的.ibd文件中。