將表從一個 VPS 移動到另一個 VPS 後“引擎中不存在表”
我現在有兩個 VPS 正在執行。一個,我將其稱為“舊”伺服器,在Debian 7上執行,並提供以下輸出
mysql --version
:
mysql Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (x86_64) using readline 6.2
另一個,我稱之為“新”伺服器,在全新安裝的Debian 8上執行,並給出以下輸出:
mysql Ver 15.1 Distrib 10.0.20-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
我正在嘗試將我的數據庫和表從舊伺服器移動到新伺服器。我認為我可以通過簡單地
/var/lib/mysql/
從舊伺服器複製目錄並覆蓋新伺服器上的相同目錄來做到這一點。但是,在這樣做之後,當我點擊任何表或數據庫時,我現在在新伺服器上的 phpMyAdmin 中收到此錯誤:
#1932 - Table 'phpmyadmin.pma__tracking' doesn't exist in engine
但是我可以清楚地看到它存在:
這個問題有方法解決嗎?我不確定我做錯了什麼。謝謝!
您可以將文件從一台伺服器複製到另一台伺服器以移動數據庫。為此,您必須確保數據庫的兩個實例都已停止。我還建議使用rsync來複製數據庫文件。除了確保在移動文件之前停止兩個數據庫伺服器之外,您很可能需要更改文件的所有權。
sudo chown --recursive mysql:mysql /var/lib/mysql
在啟動新實例之前。還有其他選項可用於移動您的數據庫。如果您的數據庫不是很大,mysqldump可能是最簡單的。我在下面附上了MariaDB 提供的mysqldump文件,因為您正在使用 MariaDB。
https://mariadb.com/kb/en/mariadb/mysqldump/
另一個需要考慮的選項是 Percona 的xtrabackup,它更複雜但大小更靈活。
https://www.percona.com/software/mysql-database/percona-xtrabackup
如果您只是將您的數據庫從一個文件夾移動到另一個文件夾,但您的 InnoDB 表不再工作,因為無法找到它們並顯示錯誤消息“引擎中不存在表”,那麼這對 SQL陳述可以盡可能快地提供幫助:
ALTER TABLE __yourtable_name__ DISCARD TABLESPACE ; ALTER TABLE __yourtable_name__ IMPORT TABLESPACE ;
在實踐中,
.IDB
文件與文件分離.FRM
,然後再次綁定,使表格內容變為可讀。它在我的情況下有效。也希望你的。