比較 Aurora MySQL 第 2 版和 Aurora MySQL 第 3 版 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

比較 Aurora MySQL 第 2 版和 Aurora MySQL 第 3 版

使用下列內容來了解將 Aurora MySQL 第 2 版叢集升級至第 3 版時需要注意的變更。

Atomic Data Definition Language (DDL) 支援

從 MySQL 5.7 到 8.0 的最大變更之一是引入 Atomic Data Dictionary 。在 MySQL 8.0 之前,我的SQL資料字典使用以檔案為基礎的方法,將資料表定義 (.frm)、觸發條件 (.trg) 和函數與儲存引擎的中繼資料 (例如 InnoDB 的) 分開存放。這有一些問題,包括如果DDL在操作期間發生意外情況,資料表變成「孤立」的風險,導致檔案型和儲存引擎中繼資料不同步。

為了修正此問題,我的SQL 8.0 推出了 Atomic Data Dictionary,該字典會將所有中繼資料存放在結構描述中的一組內部 InnoDB mysql 資料表中。此新架構提供交易ACID、合規的方式來管理資料庫中繼資料,從舊的檔案型方法解決「原子DDL」問題。如需 Atomic Data Dictionary 的詳細資訊,請參閱 MySQL Reference Manual 中的移除檔案型中繼資料儲存體和 Atomic Data 定義陳述式支援

由於此架構變更,從 Aurora MySQL 第 2 版升級至第 3 版時,您必須考量下列事項:

  • 第 2 版的檔案型中繼資料必須在升級到第 3 版的過程中遷移到新的資料字典資料表。根據遷移的資料庫物件數量,這可能需要一些時間。

  • 這些變更也引入了一些新的不相容,在從 MySQL 5.7 升級到 8.0 之前可能需要解決這些不相容。例如,8.0 有一些新的預留關鍵字,可能與現有的資料庫物件名稱衝突。

為了協助您在升級引擎之前識別這些不相容,Aurora MySQL 會執行一系列升級相容性檢查 (預先檢查),以在執行資料字典升級之前,判斷資料庫字典中是否有任何不相容的物件。如需預先檢查的詳細資訊,請參閱 Aurora My 的主要版本升級預先檢查SQL

Aurora MySQL 第 2 版和第 3 版的功能差異

Aurora MySQL for MySQL 5.7 支援下列 Amazon Aurora MySQL 功能,但 Aurora MySQL for MySQL 8.0 不支援這些功能:

  • 您無法將 Aurora MySQL 第 3 版用於 Aurora Serverless v1 叢集。Aurora MySQL 第 3 版適用於 Aurora Serverless v2。

  • 實驗室模式不適用於 Aurora MySQL 第 3 版。Aurora MySQL 第 3 版中沒有任何實驗室模式功能。Instant 會DDL取代先前在實驗室模式中可用的快速線上DDL功能。如需範例,請參閱即時 DDL (Aurora MySQL 第 3 版)

  • 查詢快取會從社群 MySQL 8.0 和 Aurora MySQL 第 3 版中移除。

  • Aurora MySQL 第 3 版與社群 MySQL hash 聯結功能相容。不會使用 Aurora MySQL 第 2 版中雜湊聯結的特定 Aurora 實作。如需搭配使用雜湊聯結與 Aurora 平行查詢的相關資訊,請參閱開啟平行查詢叢集的雜湊聯結Aurora 我的SQL提示。如需雜湊聯結的一般使用資訊,請參閱我的SQL參考手冊 中的雜湊聯結最佳化

  • 在 Aurora MySQL 第 2 版中取代的mysql.lambda_async預存程序會在第 3 版中移除。對於第 3 版,請改用非同步函數 lambda_async

  • Aurora MySQL 第 3 版中的預設字元集為 utf8mb4。在 Aurora MySQL 第 2 版中,預設字元集為 latin1。如需有關此字元集的資訊,請參閱我的SQL參考手冊中的 utf8mb4 字元集 (4-Byte UTF-8 Unicode 編碼)

某些 Aurora MySQL 功能適用於 AWS 區域和資料庫引擎版本的特定組合。如需詳細資訊,請參閱 AWS 區域 和 Aurora 資料庫引擎在 Amazon Aurora 中支援的功能

執行個體類別支援

Aurora MySQL 第 3 版支援與 Aurora MySQL 第 2 版不同的執行個體類別集:

  • 對於較大的執行個體,您可以使用新式執行個體類別,例如 db.r5db.r6gdb.x2g

  • 對於較小的執行個體,您可以使用新式執行個體類別,例如 db.t3db.t4g

    注意

    建議您在開發、測試伺服器或其他非生產伺服器時,僅使用 T 資料庫執行個體類別。如需詳細了解 T 執行個體類別,請參閱 使用 T 執行個體類別進行開發和測試

Aurora MySQL 第 2 版的下列執行個體類別不適用於 Aurora MySQL 第 3 版:

  • db.r4

  • db.r3

  • db.t3.small

  • db.t2

檢查您的管理指令碼,查看是否有建立 Aurora MySQL 資料庫執行個體的任何CLI陳述式。Aurora MySQL 第 3 版無法使用的硬體碼執行個體類別名稱。如有必要,請將執行個體類別名稱修改為 Aurora MySQL 第 3 版支援的執行個體類別名稱。

提示

若要檢查可用於 Aurora MySQL 版本和 AWS 區域特定組合的執行個體類別,請使用 describe-orderable-db-instance-options AWS CLI 命令。

如需 Aurora 執行個體類別的完整詳細資訊,請參閱 Amazon Aurora 資料庫執行個體類別

Aurora MySQL 第 3 版的參數變更

Aurora MySQL 第 3 版包含新的叢集層級和執行個體層級組態參數。Aurora MySQL 第 3 版也會移除 Aurora MySQL 第 2 版中存在的一些參數。有些參數名稱會由於包容性語言的倡議而變更。為了回溯相容性,您仍然可以使用舊名稱或新名稱來擷取參數值。不過,您必須使用新名稱來指定自訂參數群組中的參數值。

在 Aurora MySQL 第 3 版中,lower_case_table_names參數的值會在建立叢集時永久設定。如果您使用此選項的非預設值,請在升級之前設定 Aurora MySQL 第 3 版自訂參數群組。然後,在建立叢集或快照還原作業期間指定參數群組。

注意

使用以 Aurora My 為基礎的 Aurora 全域資料庫SQL,如果開啟 lower_case_table_names 參數,則無法從 Aurora MySQL 第 2 版升級至第 3 版。請改用快照還原技術。

在 Aurora MySQL 第 3 版中, init_connectread_only 參數不適用於具有 CONNECTION_ADMIN權限的使用者。這包括 Aurora 主要使用者。如需詳細資訊,請參閱角色型權限模型

如需 Aurora MySQL 叢集參數的完整清單,請參閱 叢集層級參數。資料表涵蓋 Aurora MySQL 第 2 版和第 3 版的所有參數。資料表包含的備註顯示哪些參數是 Aurora MySQL 第 3 版中的新參數,或從 Aurora MySQL 第 3 版中移除。

如需 Aurora MySQL 執行個體參數的完整清單,請參閱 執行個體層級參數。資料表涵蓋 Aurora MySQL 第 2 版和第 3 版的所有參數。資料表包含的備註顯示哪些參數是 Aurora MySQL 第 3 版的新參數,以及哪些參數已從 Aurora MySQL 第 3 版中移除。它還包括備註,顯示哪些參數可以在舊版中修改,但不能在 Aurora MySQL 第 3 版中修改。

如需已變更之參數名稱的相關資訊,請參閱 Aurora MySQL 第 3 版包含的語言變更

狀態變數

如需不適用於 Aurora My 的狀態變數資訊SQL,請參閱 不適用於 Aurora My SQL的狀態變數SQL

Aurora MySQL 第 3 版包含的語言變更

Aurora MySQL 第 3 版與 MySQL 社群版的 8.0.23 版相容。Aurora MySQL 第 3 版也包含 MySQL 8.0.26 中與包含語言的關鍵字和系統結構描述相關的變更。例如,SHOW REPLICA STATUS 命令現在是偏好的命令,而不是 SHOW SLAVE STATUS

下列 Amazon CloudWatch 指標在 Aurora MySQL 第 3 版中具有新名稱。

在 Aurora MySQL 第 3 版中,只有新的指標名稱可用。當您升級至 Aurora MySQL 第 3 版時,請務必更新任何警示或其他依賴指標名稱的自動化。

舊名稱 新名稱
ForwardingMasterDMLLatency ForwardingWriterDMLLatency
ForwardingMasterOpenSessions ForwardingWriterOpenSessions
AuroraDMLRejectedMasterFull AuroraDMLRejectedWriterFull
ForwardingMasterDMLThroughput ForwardingWriterDMLThroughput

下列狀態變數在 Aurora MySQL 第 3 版中具有新名稱。

為了相容性,您可以在初始 Aurora MySQL 第 3 版中使用任一名稱。舊的狀態變數名稱將在未來版本中移除。

要移除的名稱 新名稱或偏好名稱
Aurora_fwd_master_dml_stmt_duration Aurora_fwd_writer_dml_stmt_duration
Aurora_fwd_master_dml_stmt_count Aurora_fwd_writer_dml_stmt_count
Aurora_fwd_master_select_stmt_duration Aurora_fwd_writer_select_stmt_duration
Aurora_fwd_master_select_stmt_count Aurora_fwd_writer_select_stmt_count
Aurora_fwd_master_errors_session_timeout Aurora_fwd_writer_errors_session_timeout
Aurora_fwd_master_open_sessions Aurora_fwd_writer_open_sessions
Aurora_fwd_master_errors_session_limit Aurora_fwd_writer_errors_session_limit
Aurora_fwd_master_errors_rpc_timeout Aurora_fwd_writer_errors_rpc_timeout

下列組態參數在 Aurora MySQL 第 3 版中具有新名稱。

為了相容性,您可以使用初始 Aurora MySQL 第 3 版中的任一名稱來檢查mysql用戶端中的參數值。修改自訂參數群組中的值時,您只能使用新名稱。舊的參數名稱將在未來版本中移除。

要移除的名稱 新名稱或偏好名稱
aurora_fwd_master_idle_timeout aurora_fwd_writer_idle_timeout
aurora_fwd_master_max_connections_pct aurora_fwd_writer_max_connections_pct
master_verify_checksum source_verify_checksum
sync_master_info sync_source_info
init_slave init_replica
rpl_stop_slave_timeout rpl_stop_replica_timeout
log_slow_slave_statements log_slow_replica_statements
slave_max_allowed_packet replica_max_allowed_packet
slave_compressed_protocol replica_compressed_protocol
slave_exec_mode replica_exec_mode
slave_type_conversions replica_type_conversions
slave_sql_verify_checksum replica_sql_verify_checksum
slave_parallel_type replica_parallel_type
slave_preserve_commit_order replica_preserve_commit_order
log_slave_updates log_replica_updates
slave_allow_batching replica_allow_batching
slave_load_tmpdir replica_load_tmpdir
slave_net_timeout replica_net_timeout
sql_slave_skip_counter sql_replica_skip_counter
slave_skip_errors replica_skip_errors
slave_checkpoint_period replica_checkpoint_period
slave_checkpoint_group replica_checkpoint_group
slave_transaction_retries replica_transaction_retries
slave_parallel_workers replica_parallel_workers
slave_pending_jobs_size_max replica_pending_jobs_size_max
pseudo_slave_mode pseudo_replica_mode

下列預存程序在 Aurora MySQL 第 3 版中具有新名稱。

為了相容性,您可以在初始 Aurora MySQL 第 3 版中使用任一名稱。未來版本將移除舊的程序名稱。

要移除的名稱 新名稱或偏好名稱
mysql.rds_set_master_auto_position mysql.rds_set_source_auto_position
mysql.rds_set_external_master mysql.rds_set_external_source
mysql.rds_set_external_master_with_auto_position mysql.rds_set_external_source_with_auto_position
mysql.rds_reset_external_master mysql.rds_reset_external_source
mysql.rds_next_master_log mysql.rds_next_source_log

AUTO_INCREMENT 值

在 Aurora MySQL 第 3 版中,Aurora 會在重新啟動每個資料庫執行個體時保留每個資料表AUTO_INCREMENT的值。在 Aurora MySQL 第 2 版中,該AUTO_INCREMENT值在重新啟動後並未保留。

當您透過從快照還原、執行 point-in-time復原和複製叢集來設定新叢集時,不會保留該AUTO_INCREMENT值。在這些情況下,AUTO_INCREMENT 值會在建立快照時初始化為基於資料表中最大資料欄值的值。此行為不同於 MySQL 8.0 RDS的 ,其中 AUTO_INCREMENT值會在這些操作期間保留。

二進位日誌複寫

在 MySQL 8.0 社群版本中,二進位日誌複寫預設為開啟。在 Aurora MySQL 第 3 版中,二進位日誌複寫預設為關閉。

提示

如果 Aurora 內建複寫功能滿足您的高可用性需求,您可以將二進位日誌複寫保留關閉狀態。如此一來,就可以避免二進位日誌複寫的效能負荷。也可以避免管理二進位日誌複寫所需的相關聯監控和疑難排解。

Aurora 支援從 MySQL 5.7 相容來源到 Aurora MySQL 第 3 版的二進位日誌複寫。來源系統可以是 Aurora MySQL 資料庫叢集、 RDS for MySQL 資料庫執行個體或內部部署 MySQL 執行個體。

與社群 My 一樣SQL,Aurora MySQL 支援從執行特定版本的來源複寫到執行相同主要版本或更高版本的目標。例如,不支援從 MySQL 5.6 相容系統複寫至 Aurora MySQL 第 3 版。不支援從 Aurora MySQL 第 3 版複寫到 MySQL 5.7 相容或 MySQL 5.6 相容系統。如需使用二進位日誌複寫的詳細資訊,請參閱 在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫

Aurora MySQL 第 3 版包括改善社群 MySQL 8.0 中的二進位日誌複寫,例如篩選複寫。如需有關社群 MySQL 8.0 改進的詳細資訊,請參閱SQL我的參考手冊 中的伺服器評估複寫篩選規則。

二進位日誌複寫的交易壓縮

如需二進位日誌壓縮的使用資訊,請參閱我的SQL參考手冊中的二進位日誌交易壓縮

下列限制適用於 Aurora MySQL 第 3 版中的二進位日誌壓縮:

  • 其二進位日誌資料大於最大允許封包大小的交易不會進行壓縮。無論 Aurora MySQL 二進位日誌壓縮設定是否開啟,都適用。這類交易會在不壓縮的情況下進行複寫。

  • 如果您使用連接器變更尚未支援 MySQL 8.0 的資料擷取 (CDC),則無法使用此功能。建議您使用二進位日誌壓縮,完整測試任何第三方連接器。此外,建議您在為 使用 binlog 複寫的系統上開啟 binlog 壓縮之前執行此操作CDC。