MySQL 8.4 參考手冊  /  升級 MySQL  /  在 Unix/Linux 上升級 MySQL 二進制或套件式安裝

3.7 在 Unix/Linux 上升級 MySQL 二進制或套件式安裝

本節說明如何在 Unix/Linux 上升級 MySQL 二進制和套件式安裝。將描述就地和邏輯升級方法。

就地升級

就地升級包括關閉舊的 MySQL 伺服器、將舊的 MySQL 二進制檔案或套件替換為新的檔案或套件、在現有的資料目錄上重新啟動 MySQL,以及升級任何剩餘的現有安裝部分(需要升級的部分)。有關可能需要升級的詳細資訊,請參閱第 3.4 節「MySQL 升級程序升級的內容」

注意

如果您要升級最初透過安裝多個 RPM 套件產生的安裝,請升級所有套件,而不僅僅是某些套件。例如,如果您先前安裝了伺服器和用戶端 RPM,請不要僅升級伺服器 RPM。

對於某些 Linux 平台,從 RPM 或 Debian 套件安裝 MySQL 包括 systemd 支援,以管理 MySQL 伺服器的啟動和關閉。在這些平台上,不會安裝mysqld_safe。在這種情況下,請使用 systemd 進行伺服器啟動和關閉,而不是使用以下說明中的方法。請參閱第 2.5.9 節「使用 systemd 管理 MySQL 伺服器」

對於升級至 MySQL Cluster 安裝,另請參閱MySQL Cluster 升級

若要執行就地升級

  1. 請查看第 3.1 節「開始之前」中的資訊。

  2. 透過完成第 3.6 節「準備您的安裝以進行升級」中的初步檢查,確保您的安裝已準備好進行升級。

  3. 如果您將 XA 交易與 InnoDB 搭配使用,請在升級之前執行 XA RECOVER,以檢查是否有未提交的 XA 交易。如果傳回結果,請透過發出 XA COMMITXA ROLLBACK 陳述式,提交或回滾 XA 交易。

  4. 如果您通常執行設定為將 innodb_fast_shutdown 設定為 2 (冷關機) 的 MySQL 伺服器,請將其設定為執行快速或慢速關機,方法是執行下列其中一個陳述式

    SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
    SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown

    透過快速或慢速關機,InnoDB 會將其復原日誌和資料檔案保持在可在發行版本之間檔案格式不同的情況下處理的狀態。

  5. 關閉舊的 MySQL 伺服器。例如

    mysqladmin -u root -p shutdown
  6. 升級 MySQL 二進制檔案或套件。如果升級二進制安裝,請解壓縮新的 MySQL 二進制發行套件。請參閱取得並解壓縮發行版本。對於套件式安裝,請安裝新的套件。

  7. 使用現有的資料目錄啟動 MySQL 8.4 伺服器。例如

    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &

    如果有加密的 InnoDB 表空間,請使用 --early-plugin-load 選項載入金鑰環外掛程式。

    當您啟動 MySQL 8.4 伺服器時,它會自動偵測資料字典表格是否存在。如果不存在,伺服器會在資料目錄中建立它們、使用中繼資料填入它們,然後繼續進行其正常的啟動順序。在此過程中,伺服器會升級所有資料庫物件的中繼資料,包括資料庫、表空間、系統和使用者表格、視圖和儲存程式(儲存程序和函數、觸發程序和事件排程器事件)。伺服器也會移除先前用於中繼資料儲存的檔案。例如,從 MySQL 8.3 升級到 MySQL 8.4 之後,您可能會注意到表格不再有 .frm 檔案。

    如果此步驟失敗,伺服器會還原對資料目錄的所有變更。在這種情況下,您應該移除所有復原日誌檔案、在相同的資料目錄上啟動 MySQL 8.3 伺服器,並修正任何錯誤的原因。然後執行 8.3 伺服器的另一個慢速關機,並啟動 MySQL 8.4 伺服器以再次嘗試。

  8. 在上一個步驟中,伺服器會根據需要升級資料字典,對 MySQL 8.3 和 MySQL 8.4 之間的 mysql 系統資料庫進行任何必要的變更,以便您可以利用新的權限或功能。它還會將效能架構、INFORMATION_SCHEMAsys 資料庫更新到 MySQL 8.4 的最新狀態,並檢查所有使用者資料庫是否與目前版本的 MySQL 不相容。

注意

升級程序不會升級時區表格的內容。有關升級說明,請參閱第 7.1.15 節「MySQL 伺服器時區支援」

邏輯升級

邏輯升級包括使用備份或匯出公用程式 (例如 mysqldump) 從舊的 MySQL 執行個體匯出 SQL、安裝新的 MySQL 伺服器,以及將 SQL 應用於新的 MySQL 執行個體。有關可能需要升級的詳細資訊,請參閱第 3.4 節「MySQL 升級程序升級的內容」

注意

對於某些 Linux 平台,從 RPM 或 Debian 套件安裝 MySQL 包括 systemd 支援,以管理 MySQL 伺服器的啟動和關閉。在這些平台上,不會安裝mysqld_safe。在這種情況下,請使用 systemd 進行伺服器啟動和關閉,而不是使用以下說明中的方法。請參閱第 2.5.9 節「使用 systemd 管理 MySQL 伺服器」

警告

將從先前 MySQL 版本擷取的 SQL 應用於新的 MySQL 版本可能會因新功能、變更的功能、已棄用的功能或已移除的功能和功能所造成的不相容而導致錯誤。因此,從先前 MySQL 版本擷取的 SQL 可能需要修改,才能啟用邏輯升級。

若要在升級至最新的 MySQL 8.4 版本之前識別不相容性,請執行第 3.6 節「準備您的安裝以進行升級」中描述的步驟。

若要執行邏輯升級

  1. 請查看第 3.1 節「開始之前」中的資訊。

  2. 從先前的 MySQL 安裝匯出現有的資料

    mysqldump -u root -p
      --add-drop-table --routines --events
      --all-databases --force > data-for-upgrade.sql
    注意

    如果您的資料庫包含儲存的程式,請將 --routines--events 選項與 mysqldump 搭配使用(如上所示)。--all-databases 選項會將所有資料庫(包括包含系統表格的 mysql 資料庫)包含在傾印中。

    重要事項

    如果您有包含產生資料行的表格,請使用 MySQL 5.7.9 或更高版本提供的 mysqldump 公用程式來建立您的傾印檔案。較早版本中提供的 mysqldump 公用程式對產生資料行的定義使用不正確的語法 (錯誤 #20769542)。您可以使用資訊架構 COLUMNS 表格來識別具有產生資料行的表格。

  3. 關閉舊的 MySQL 伺服器。例如

    mysqladmin -u root -p shutdown
  4. 安裝 MySQL 8.4。有關安裝說明,請參閱第 2 章「安裝 MySQL

  5. 初始化新的資料目錄,如第 2.9.1 節「初始化資料目錄」中所述。例如

    mysqld --initialize --datadir=/path/to/8.4-datadir

    複製螢幕上顯示或寫入錯誤日誌的暫時 'root'@'localhost' 密碼,以供日後使用。

  6. 使用新的資料目錄啟動 MySQL 8.4 伺服器。例如

    mysqld_safe --user=mysql --datadir=/path/to/8.4-datadir &
  7. 重設 root 密碼

    $> mysql -u root -p
    Enter password: ****  <- enter temporary root password
    mysql> ALTER USER USER() IDENTIFIED BY 'your new password';
  8. 將先前建立的傾印檔案載入新的 MySQL 伺服器。例如

    mysql -u root -p --force < data-for-upgrade.sql
    注意

    如果您的傾印檔案包含系統資料表,則不建議在伺服器上啟用 GTID 時載入傾印檔案(gtid_mode=ON)。mysqldump 會針對使用非交易式 MyISAM 儲存引擎的系統資料表發出 DML 指令,而當啟用 GTID 時,不允許這種組合。另請注意,將啟用 GTID 的伺服器中的傾印檔案載入到另一個啟用 GTID 的伺服器中,會導致產生不同的交易識別碼。

  9. 執行任何剩餘的升級操作

    關閉伺服器,然後使用 --upgrade=FORCE 選項重新啟動伺服器,以執行剩餘的升級任務

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/8.4-datadir --upgrade=FORCE &

    使用 --upgrade=FORCE 重新啟動後,伺服器會針對 MySQL 8.3 和 MySQL 8.4 之間的 mysql 系統綱要進行任何必要的變更,讓您可以利用新的權限或功能。它也會將 Performance Schema、INFORMATION_SCHEMAsys 綱要更新至 MySQL 8.4 的最新版本,並檢查所有使用者綱要是否與當前版本的 MySQL 不相容。

注意

升級程序不會升級時區表格的內容。有關升級說明,請參閱第 7.1.15 節「MySQL 伺服器時區支援」

MySQL Cluster 升級

本節中的資訊是 就地升級 中描述的就地升級程序的附加說明,如果您要升級 MySQL Cluster,則可以使用。

MySQL Cluster 升級可以像常規的滾動升級一樣執行,遵循通常的三個有序步驟

  1. 升級 MGM 節點。

  2. 一次升級一個資料節點。

  3. 一次升級一個 API 節點(包括 MySQL 伺服器)。

升級每個單獨的 mysqld 有兩個步驟

  1. 匯入資料字典。

    使用 --upgrade=MINIMAL 選項啟動新伺服器,以升級資料字典,但不升級系統資料表。

    MySQL 伺服器必須連線到 NDB,此階段才能完成。如果存在任何 NDBNDBINFO 資料表,且伺服器無法連線到叢集,則它會顯示錯誤訊息並結束

    Failed to Populate DD tables.
  2. 重新啟動每個單獨的 mysqld,但不使用 --upgrade=MINIMAL 選項,來升級系統資料表。