Mysql

將表從一個 VPS 移動到另一個 VPS 後“引擎中不存在表”

  • June 9, 2021

我現在有兩個 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,然後再次綁定,使表格內容變為可讀。

它在我的情況下有效。也希望你的。

引用自:https://dba.stackexchange.com/questions/111629