Innodb
如何從文件中恢復帶有 innodb 表的數據庫?
我正在嘗試從文件中恢復包含 innodb 表的 MariaDB 數據庫。雖然我是藍眼睛,但我認為這是一項簡單的任務:我剛剛停止了伺服器,複製了文件並重新啟動它,如下所示:
# Stop MariaDB server systemctl stop mariadb.service # Copied database sudo rsync --numeric-ids -aHAEXv --rsh="ssh" user@mybackupserver:/xyz/mysql/owncloud /var/lib/ # Start MariaDB server systemctl start mariadb.service
不幸的是,這並沒有按預期工作。儘管數據庫及其所有表都在那裡,但我無法訪問任何表。試圖這樣做我得到:
1932 - 引擎中不存在表“owncloud.oc_activity_mq”。
在重複上述所有步驟之前,我嘗試創建一個同名的空數據庫,但我得到了同樣的錯誤。
奇怪的是,在 PHPMyAdmin 中所有的表都有
Collation
in use
.我檢查了目錄的權限和所有權十幾次,我的 MariaDB 數據目錄中的所有內容都歸使用者所有,每個文件都具有每個目錄
mysql
的權限……0660``0700
我的問題是,是否可以將帶有 innodb 表的單個數據庫直接從舊數據目錄恢復到新目錄?如果是,如何?
我知道這個問題之前出現過,例如這裡:如何從文件中恢復 MySQL 數據庫
但是我在這裡專門詢問帶有innodb引擎的數據庫,根據我閱讀的內容,我得到的印像是我遇到的問題可能與引擎有關
使用 innodb 文件,您需要將整個數據庫伺服器恢復到新實例。使用 mysqldump oc_activity_mq 從該備份中提取表的 SQL 版本。然後將其導入您的活動實例。
這假設您已經進行了一致的備份。如果 mysql 正在執行並同時被更新它被複製它可能有某種形式的損壞。
使用 innodbbackup、lvm 和/或 mysqldump/pump 修改您的備份策略。