本節說明如何在 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 升級。
要執行就地升級
檢閱第 3.1 節,「開始之前」中的資訊。
透過完成第 3.6 節,「準備您的安裝進行升級」中的初步檢查,確保您的安裝已準備好進行升級。
如果您使用
InnoDB
的 XA 交易,請在升級之前執行XA RECOVER
以檢查是否有未提交的 XA 交易。如果傳回結果,請透過發出XA COMMIT
或XA ROLLBACK
陳述式來提交或回滾 XA 交易。如果您通常將 MySQL 伺服器設定為將
innodb_fast_shutdown
設定為2
(冷關機),請透過執行以下任一陳述式將其設定為執行快速或慢速關機SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
使用快速或慢速關機時,
InnoDB
會將其還原日誌和資料檔案保留在可處理版本之間檔案格式差異的狀態中。關閉舊的 MySQL 伺服器。例如
mysqladmin -u root -p shutdown
升級 MySQL 二進制檔案或套件。如果要升級二進制安裝,請解壓縮新的 MySQL 二進制發行套件。請參閱取得並解壓縮發行版本。對於基於套件的安裝,請安裝新的套件。
使用現有的資料目錄啟動 MySQL 9.0 伺服器。例如
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
如果有加密的
InnoDB
表空間,請使用--early-plugin-load
選項來載入金鑰環外掛程式。當您啟動 MySQL 9.0 伺服器時,它會自動偵測是否存在資料字典表格。如果不存在,伺服器會在資料目錄中建立它們,以中繼資料填入它們,然後繼續其正常的啟動順序。在此過程中,伺服器會升級所有資料庫物件的中繼資料,包括資料庫、表空間、系統和使用者表格、檢視表和儲存的程式(儲存程序和函數、觸發程序和事件排程器事件)。伺服器也會移除先前用於中繼資料儲存的檔案。例如,從 MySQL 8.4 升級至 MySQL 9.0 之後,您可能會注意到表格不再有
.frm
檔案。如果此步驟失敗,伺服器會將所有變更還原至資料目錄。在這種情況下,您應該移除所有重做日誌檔案,在相同的資料目錄上啟動您的 MySQL 8.4 伺服器,並修正任何錯誤的原因。然後執行 8.4 伺服器的另一個慢速關機,並啟動 MySQL 9.0 伺服器以再次嘗試。
在上一步中,伺服器會在必要時升級資料字典,並在 MySQL 8.4 和 MySQL 9.0 之間對
mysql
系統資料庫進行任何必要的變更,以便您可以使用新的權限或功能。它也會將 Performance Schema、INFORMATION_SCHEMA
和sys
資料庫更新至 MySQL 9.0 的最新狀態,並檢查所有使用者資料庫是否與目前版本的 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 9.0 版本之前識別不相容性,請執行第 3.6 節,「準備您的安裝進行升級」中所述的步驟。
要執行邏輯升級
檢閱第 3.1 節,「開始之前」中的資訊。
從先前的 MySQL 安裝中匯出您現有的資料
mysqldump -u root -p --add-drop-table --routines --events --all-databases --force > data-for-upgrade.sql
注意如果您的資料庫包含儲存的程式,請將
--routines
和--events
選項與 mysqldump 一起使用(如上所示)。--all-databases
選項會將所有資料庫包含在傾印中,包括包含系統表格的mysql
資料庫。關閉舊的 MySQL 伺服器。例如
mysqladmin -u root -p shutdown
安裝 MySQL 9.0。有關安裝說明,請參閱第 2 章,安裝 MySQL。
初始化新的資料目錄,如第 2.9.1 節,「初始化資料目錄」中所述。例如
mysqld --initialize --datadir=/path/to/9.0-datadir
複製顯示在您螢幕上或寫入錯誤日誌的臨時
'root'@'localhost'
密碼以供稍後使用。使用新的資料目錄啟動 MySQL 9.0 伺服器。例如
mysqld_safe --user=mysql --datadir=/path/to/9.0-datadir &
重設
root
密碼$> mysql -u root -p Enter password: **** <- enter temporary root password
mysql> ALTER USER USER() IDENTIFIED BY 'your new password';
將先前建立的傾印檔案載入新的 MySQL 伺服器。例如
mysql -u root -p --force < data-for-upgrade.sql
注意當伺服器啟用 GTID (Global Transaction Identifiers) 時(
gtid_mode=ON
),若您的傾印檔案包含系統資料表,則不建議載入該傾印檔案。mysqldump 會對使用非交易式 MyISAM 儲存引擎的系統資料表發出 DML 指令,而當啟用 GTID 時,不允許這種組合。另請注意,將已啟用 GTID 的伺服器的傾印檔案載入另一個已啟用 GTID 的伺服器時,會產生不同的交易識別碼。執行任何剩餘的升級操作
關閉伺服器,然後使用
--upgrade=FORCE
選項重新啟動伺服器,以執行剩餘的升級任務mysqladmin -u root -p shutdown mysqld_safe --user=mysql --datadir=/path/to/9.0-datadir --upgrade=FORCE &
使用
--upgrade=FORCE
重新啟動後,伺服器會對 MySQL 8.4 和 MySQL 9.0 之間的mysql
系統綱要進行任何必要的變更,以便您可以利用新的權限或功能。它也會將 Performance Schema、INFORMATION_SCHEMA
和sys
綱要更新至 MySQL 9.0 的最新版本,並檢查所有使用者綱要是否與目前版本的 MySQL 不相容。
升級程序不會升級時區表格的內容。有關升級說明,請參閱第 7.1.15 節,「MySQL 伺服器時區支援」。
本節中的資訊是 就地升級 中描述的就地升級程序的補充,如果您要升級 MySQL Cluster,則可以使用。
MySQL Cluster 升級可以像常規的滾動升級一樣執行,遵循通常的三個有序步驟
升級 MGM 節點。
一次升級一個數據節點。
一次升級一個 API 節點(包括 MySQL 伺服器)。
升級每個個別的 mysqld
有兩個步驟
匯入資料字典。
使用
--upgrade=MINIMAL
選項啟動新的伺服器,以升級資料字典,但不升級系統資料表。MySQL 伺服器必須連接到
NDB
才能完成此階段。如果存在任何NDB
或NDBINFO
資料表,且伺服器無法連接到叢集,它將會以錯誤訊息退出Failed to Populate DD tables.
通過重新啟動每個個別的 mysqld,而不使用
--upgrade=MINIMAL
選項,來升級系統資料表。