Ubuntu
通過命令行用更新的副本替換 MySql 數據庫
Ubuntu Server 執行 MySql 伺服器。
我們的伺服器上有 5 個數據庫。在最近的一次崩潰中,伺服器恢復不正確,現在 1 個數據庫 (B) 有 2 個不正確的表,第二個數據庫 (A) 完全不正確。
如何正確替換數據庫文件?
是不是這麼簡單
cp -a /path/to/backup/databaseA/ /var/lib/mysql/databaseA cp -a /path/to/backup/databaseB/table1.MYD /var/lib/mysql/databaseB cp -a /path/to/backup/databaseB/table1.MYI /var/lib/mysql/databaseB cp -a /path/to/backup/databaseB/table2.ibd /var/lib/mysql/databaseB
值得一提的是,有混合的 MyISAM 和 InnoDB 表。
使用 MyISAM - 沒問題(元數據除外),關於 InnoDB:https ://dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file
我認為您的問題出在-在 A 和 B 上創建
innodb_file_per_table
表之前是否啟用了此選項。如果
innodb_file_per_table
稍後啟用 - 您將擁有混合表空間:一些數據將保存在 中.ibd
,一些數據將保存在 中ibdata1
,元數據始終保留在ibdata1
.另外,請記住,不僅數據庫文件提供有關表和權限等(元數據)的資訊 -
mysql
數據庫資訊表和ibdata1
執行。因此,僅當沒有更改或您不關心該元數據時,複製才有用。簡短的回答 - 不(你也需要
ibdata1
)。這並不容易,但在某些情況下它可能仍然有效。如果這不是您正在尋找的答案 - 無論如何,此資訊可能對您非常有用。
恢復:你也需要
ibdata1
,但它也會影響其他帶有 innodb 的數據庫。