Mysql

將 XtraBackup 從 MySQL 5.6 恢復到 MySQL 5.7

  • September 11, 2019

我們正在執行 MySQL 5.6 並使用 XtraBackup 2.4 進行備份。我們希望使用相同的備份遷移到 MySQL 5.7,因為我們擁有超過 600GB 的數據集。

是否可以這樣做?在使用 XtraBackup 還原時我們需要擔心哪些利弊?

Xtrabackup 是一個物理備份工具,旨在備份和恢復到相同的 MySQL(或 MariaDB)版本。它不適用於遷移。它可能有效,也可能無效。

因此,如果可能的話,如果您想將備份恢復到新實例,我認為最好的方法是將其恢復到另一個 MySQL 5.6 實例,然後將該實例升級到 5.7。

贈款

MySQL 的每個主要版本都會在某些方面更改 MySQL 模式

例如,在我回答的文章中(MySQL 服務在嘗試向使用者授予權限後停止),我提到mysql.user了不同數量的列。

這是列數的更新列表

當您執行此查詢時

SELECT COUNT(1) column_count FROM information_schema.columns
WHERE table_schema='mysql' AND table_name='user';

你應該以下號碼

  • 如果你得到 45,MySQL 5.7
  • 如果你得到 43,MySQL 5.6
  • 如果你得到 42,MySQL 5.5
  • 如果你得到 39,MySQL 5.1
  • 如果你得到 37,MySQL 5.0

當您將 MySQL 5.6 備份恢復到 MySQL 5.7 伺服器時,可能會出現要處理的授權物理錯位。

MySQL 模式文件

MySQL 模式中的 InnoDB 表的數量也在主要版本之間發生變化。

回到上面Dec 09, 2017,我回答了ERROR 1031 (HY000): Table storage engine for ‘proc’ doesn’t have this option並討論了 InnoDB 表何時開始在 MySQL 模式中使用。

在 MySQL 5.6 中,它是 5 個表。在 MySQL 5.7 中,它達到了 19 個。在 MySQL 8.0 中,所有 31 個表都是 InnoDB。

最後的想法

mysql_upgrade在恢復到 xtrabackup 後,您可能必須執行某種命令來執行從 MyISAM 到 InnoDB 的表轉換

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