

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

# Amazon RDS 上的 MySQL 功能支援
<a name="MySQL.Concepts.FeatureSupport"></a>

RDS for MySQL 支援 MySQL 的大多數特性與功能。部分功能的支援或權限可能有所限制。

您可以在[資料庫的最新資訊](https://aws.amazon.com/about-aws/whats-new/database/)頁面上篩選新的 Amazon RDS 功能。對於 **Products** (產品)，請選擇 **Amazon RDS**。然後使用關鍵字搜尋，例如 **MySQL 2022**。

**注意**  
以下清單並非詳盡清單。

**Topics**
+ [

## Amazon RDS for MySQL 主要版本的 MySQL 功能支援
](#MySQL.Concepts.FeatureSupport.MajorVersions)
+ [

## 支援的 RDS for MySQL 儲存引擎
](#MySQL.Concepts.Storage)
+ [

## Amazon RDS 上的 MySQL 搭配使用 Memcached 與其他選項
](#MySQL.Concepts.General.Options)
+ [

## Amazon RDS 上 MySQL 的 InnoDB 快取預備
](#MySQL.Concepts.InnoDBCacheWarming)
+ [

## RDS for MySQL 8.4 的包容性語言變更
](#mysql-8-4-inclusive-language-changes)
+ [

## Amazon RDS 不支援的 MySQL 功能
](#MySQL.Concepts.Features)

## Amazon RDS for MySQL 主要版本的 MySQL 功能支援
<a name="MySQL.Concepts.FeatureSupport.MajorVersions"></a>

在以下幾節中，參閱 Amazon RDS for MySQL 主要版本的 MySQL 功能支援相關資訊：

**Topics**
+ [

### Amazon RDS 上的 MySQL 功能支援
](#MySQL.Concepts.FeatureSupport.8-4)

如需 Amazon RDS for MySQL 支援次要版本的相關資訊，請參閱 [Amazon RDS 上支援的 MySQL 次要版本](MySQL.Concepts.VersionMgmt.md#MySQL.Concepts.VersionMgmt.Supported)。

### Amazon RDS 上的 MySQL 功能支援
<a name="MySQL.Concepts.FeatureSupport.8-4"></a>

對於執行 MySQL 8.4 版或更高版本的資料庫執行個體，Amazon RDS 支援下列新功能：
+ **密碼編譯程式庫** – RDS for MySQL 以 FIPS 140-3 認證的 AWS Libcrypto (AWS-LC) 取代 OpenSSL。如需詳細資訊，請參閱位於 的 AWS-LC GitHub 儲存庫[https://github.com/aws/aws-lc](https://github.com/aws/aws-lc)。
+ **TLS 變更** – RDS for MySQL 僅支援 TLS 1.2 和 TLS 1.3。如需詳細資訊，請參閱[Amazon RDS 對 MySQL 資料庫執行個體的 SSL/TLS 支援](MySQL.Concepts.SSLSupport.md)。
+ **memcached 支援** – MySQL 8.4 不再提供 memcached 介面。如需詳細資訊，請參閱[MySQL memcached 支援](Appendix.MySQL.Options.memcached.md)。
+ **預設身分驗證外掛程式** – 預設身分驗證外掛程式為 `caching_sha2_password`。如需詳細資訊，請參閱[MySQL 預設身分驗證外掛程式](MySQL.KnownIssuesAndLimitations.md#MySQL.Concepts.KnownIssuesAndLimitations.authentication-plugin)。
+ **`mysqlpump` 用戶端公用程式** – MySQL 8.4 不再提供 `mysqlpump` 用戶端公用程式。如需詳細資訊，請參閱 *AWS 方案指引*中的 [RDS for MySQL 的角色型權限模型](Appendix.MySQL.CommonDBATasks.privilege-model.md) 與 [mysqldump 和 mysqlpump](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-large-mysql-mariadb-databases/mysqldump-and-mysqlpump.html)。
+ **受管複寫預存程序** – 使用預存程序來管理為複寫使用者設定了 `caching_sha2_password` 的複寫時，您必須指定 `SOURCE_SSL=1` 以設定 TLS。`caching_sha2_password` 是 RDS for MySQL 8.4 的預設身分驗證外掛程式。
+ **參數行為變更** – MySQL 8.4 的下列參數已變更。
  + `innodb_dedicated_server` – 根據預設，現在會啟用此參數。如需詳細資訊，請參閱[在 MySQL 8.4 中設定緩衝集區大小和重做日誌容量](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)。
  + `innodb_buffer_pool` – 資料庫引擎現在會計算此參數，但您可以覆寫此設定。如需詳細資訊，請參閱[在 MySQL 8.4 中設定緩衝集區大小和重做日誌容量](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)。
  + `innodb_redo_log_capacity` – 此參數現在會控制重做日誌檔案的大小。資料庫引擎現在會計算此參數，但您可以覆寫此設定。如需詳細資訊，請參閱[在 MySQL 8.4 中設定緩衝集區大小和重做日誌容量](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)。
+ **已棄用或已移除參數** – RDS for MySQL 已從 MySQL 8.4 資料庫執行個體的參數群組中移除下列參數。`innodb_redo_log_capacity` 參數現在會控制重做日誌檔案的大小。
  + `innodb_log_file_size`
  + `innodb_log_files_in_group`
+ **參數的新預設值**：下列參數在 MySQL 8.4 資料庫執行個體中有新的預設值：
  + 與效能相關的各種 MySQL 社群參數已變更。如需詳細資訊，請參閱 [MySQL 8.4 自 MySQL 8.0 以來的新功能](https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html)。

    建議您在遷移生產執行個體之前，先在 RDS for MySQL 8.4 上測試應用程式的效能。
  + `innodb_purge_threads` – 預設值設定為公式 `LEAST({DBInstanceVCPU/2},4)`，用以防止 InnoDB 歷史記錄清單長度過大。
  + `group_replication_exit_state_action` – 預設值為 `OFFLINE_MODE`，與 MySQL 社群中的預設值相符。如需詳細資訊，請參閱[RDS for MySQL 主動-主動叢集的考量和最佳實務](mysql-active-active-clusters-considerations-limitations.md#mysql-active-active-clusters-considerations)。
  + `binlog_format` – 預設值為 `ROW`，與 MySQL 社群中的預設值相符。您可以修改單一可用區域資料庫執行個體或多可用區域資料庫執行個體的參數，但對於多可用區域資料庫叢集則無法修改。多可用區域資料庫叢集會使用半同步複寫，且在 `binlog_format` 設定為 `MIXED` 或 `STATEMENT` 時，複寫會失敗。
+ **包容性語言變更** – RDS for MySQL 8.4 包含 RDS for MySQL 8.0 中與包容性語言的關鍵字和系統結構描述有關的變更。如需詳細資訊，請參閱[RDS for MySQL 8.4 的包容性語言變更](#mysql-8-4-inclusive-language-changes)。

如需所有 MySQL 8.4 功能和變更的清單，請參閱 MySQL 文件中的 [MySQL 8.4 自 MySQL 8.0 以來的新功能](https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html)。

如需未支援的功能清單，請參閱[Amazon RDS 不支援的 MySQL 功能](#MySQL.Concepts.Features)。

## 支援的 RDS for MySQL 儲存引擎
<a name="MySQL.Concepts.Storage"></a>

雖然 MySQL 支援多種功能不盡相同的儲存引擎，但並非所有引擎的復原能力和資料耐用性都經過最佳化設計。Amazon RDS 可完整支援適用於 MySQL 資料庫執行個體的 InnoDB 儲存引擎。時間點還原和快照還原等 Amazon RDS 功能皆需搭配可復原的儲存引擎才能執行，且僅支援 InnoDB 儲存引擎。如需詳細資訊，請參閱[MySQL memcached 支援](Appendix.MySQL.Options.memcached.md)。

聯合儲存引擎目前不支援 Amazon RDS for MySQL。

若結構描述是由使用者建立，則 MyISAM 儲存引擎不支援可靠的復原功能，且還原作業結束後重新啟動 MySQL 時，可能發生資料遺失或毀損等問題，進而導致時間點還原或快照還原功能無法如預期般順利運作。然而，若您仍選擇將 MyISAM 與 Amazon RDS 搭配使用，在某些情況下，快照仍可派上用場。

**注意**  
`mysql` 結構描述中的系統資料表可能位於 MyISAM 儲存引擎中。

如果將現有的 MyISAM 資料表轉換為 InnoDB 資料表，您可以使用 `ALTER TABLE` 命令 (例如，`alter table TABLE_NAME engine=innodb;`)。請記得，MyISAM 和 InnoDB 各有優劣之處，以應用程式執行轉換作業之前，應先完整評估相關影響。

Amazon RDS 不再支援 MySQL 5.1、5.5 和 5.6。但您仍可使用現有的 MySQL 5.1、5.5 和 5.6 快照進行還原作業。當您還原 MySQL 5.1、5.5 或 5.6 快照時，資料庫執行個體會自動升級為 MySQL 5.7。

## Amazon RDS 上的 MySQL 搭配使用 Memcached 與其他選項
<a name="MySQL.Concepts.General.Options"></a>

大部分的 Amazon RDS 資料庫引擎均支援選項群組，讓您可為資料庫執行個體選擇其他功能。RDS for MySQL 資料庫執行個體支援 `memcached` 選項，這是一種簡單的金鑰型快取。如需 `memcached` 和其他選項的詳細資訊，請參閱[MySQL 資料庫執行個體的選項](Appendix.MySQL.Options.md)。如需使用選項群組的相關詳細資訊，請參閱[使用選項群組](USER_WorkingWithOptionGroups.md)。

## Amazon RDS 上 MySQL 的 InnoDB 快取預備
<a name="MySQL.Concepts.InnoDBCacheWarming"></a>

InnoDB 快取預備功能可在資料庫執行個體關閉時，儲存緩衝集區的當前狀態，等到資料庫執行個體啟動時，再使用儲存的資訊重新載入緩衝集區，藉此提升 MySQL 資料庫執行個體的效能。如此一來，系統不必從正常的資料庫使用方式開始為緩衝集區「熱機」，而是透過已知常用查詢的頁面預先載入緩衝集區。儲存緩衝集區資訊的檔案只會存放緩衝集區中的頁面中繼資料，而非頁面本身。因此，該檔案不需要太多儲存空間。檔案大小約為快取大小的 0.2%。例如，若為 64 GiB 的快取，則快取預備檔案大小僅會有 128 MiB。如需使用 InnoDB 快取預備功能的詳細資訊，請參閱 MySQL 文件中的[儲存和還原緩衝集區狀態](https://dev.mysql.com/doc/refman/8.0/en/innodb-preload-buffer-pool.html)。

RDS for MySQL 資料庫執行個體支援 InnoDB 快取預備。若要啟用 InnoDB 快取預備功能，請在資料庫執行個體的參數群組中，將 `innodb_buffer_pool_dump_at_shutdown` 和 `innodb_buffer_pool_load_at_startup` 參數設為 1。變更參數群組中的參數值會影響使用該參數群組的所有 MySQL 資料庫執行個體。若要為特定 MySQL 資料庫執行個體啟用 InnoDB 快取預備功能，您必須為該執行個體另外建立新的參數群組。如需參數群組的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

InnoDB 快取預備功能主要可為使用標準儲存體的資料庫執行個體提供效能方面的好處。若您使用的是 PIOPS 儲存體，一般來說不會察覺到顯著的效能優勢。

**重要**  
如果您的 MySQL 資料庫執行個體沒有正常關閉 (例如容錯移轉期間)，則緩衝集區狀態不會儲存到磁碟中。這種情形下，MySQL 會在資料庫執行個體重新啟動時，載入任何可用的緩衝集區。這不會造成任何損害，只是還原的緩衝集區無法反映緩衝集區在重新啟動之前的最新狀態。為確保您有最新狀態的緩衝集區可在啟動時預備 InnoDB 快取，建議您定期「隨需」傾印緩衝集區。  
您可建立事件，以定期自動傾印緩衝集區。舉例來說，下列陳述式會建立名為 `periodic_buffer_pool_dump` 的事件，每小時傾印緩衝集區一次。  

```
1. CREATE EVENT periodic_buffer_pool_dump 
2. ON SCHEDULE EVERY 1 HOUR 
3. DO CALL mysql.rds_innodb_buffer_pool_dump_now();
```
如需 MySQL 事件的詳細資訊，請參閱 MySQL 文件中的[事件語法](https://dev.mysql.com/doc/refman/8.0/en/events-syntax.html)。

### 隨需傾印與載入緩衝集區
<a name="MySQL.Concepts.InnoDBCacheWarming.OnDemand"></a>

您可「隨需」儲存和載入 InnoDB 快取。
+ 若要將緩衝集區的最新狀態傾印至磁碟，請呼叫 [mysql.rds\$1innodb\$1buffer\$1pool\$1dump\$1now](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_dump_now) 預存程序。
+ 若要從磁碟載入所儲存的緩衝集區狀態，請呼叫 [mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1now](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_load_now) 預存程序。
+ 若要取消進行中的載入操作，請呼叫 [mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1abort](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_load_abort) 預存程序。

## RDS for MySQL 8.4 的包容性語言變更
<a name="mysql-8-4-inclusive-language-changes"></a>

RDS for MySQL 8.4 包含 MySQL 8.4 社群版本中與包容性語言的關鍵字和系統結構描述有關的變更。例如，`SHOW REPLICA STATUS` 命令取代了 `SHOW SLAVE STATUS`。

**Topics**
+ [

### 組態參數名稱變更
](#mysql-8-4-inclusive-language-changes-params)
+ [

### 預存程序名稱變更
](#mysql-8-4-inclusive-language-changes-sp)

### 組態參數名稱變更
<a name="mysql-8-4-inclusive-language-changes-params"></a>

下列組態參數在 RDS for MySQL 8.4 中具有新名稱。

為了相容性，您可以使用任一名稱檢查 `mysql` 用戶端中的參數名稱。修改自訂 MySQL 8.4 參數群組中的值時，您只能使用新名稱。如需詳細資訊，請參閱[預設和自訂參數群組](parameter-groups-overview.md#parameter-groups-overview.custom)。


| 要移除的名稱 | 新名稱或偏好名稱 | 
| --- | --- | 
|  `init_slave`  |  `init_replica`  | 
|  `log_slave_updates`  |  `log_replica_updates`  | 
|  `log_slow_slave_statements`  |  `log_slow_replica_statements`  | 
|  `rpl_stop_slave_timeout`  |  `rpl_stop_replica_timeout`  | 
|  `skip_slave_start`  |  `skip_replica_start`  | 
|  `slave_checkpoint_group`  |  `replica_checkpoint_group`  | 
|  `slave_checkpoint_period`  |  `replica_checkpoint_period`  | 
|  `slave_compressed_protocol`  |  `replica_compressed_protocol`  | 
|  `slave_exec_mode`  |  `replica_exec_mode`  | 
|  `slave_load_tmpdir`  |  `replica_load_tmpdir`  | 
|  `slave_max_allowed_packet`  |  `replica_max_allowed_packet`  | 
|  `slave_net_timeout`  |  `replica_net_timeout`  | 
|  `slave_parallel_type`  |  `replica_parallel_type`  | 
|  `slave_parallel_workers`  |  `replica_parallel_workers`  | 
|  `slave_pending_jobs_size_max`  |  `replica_pending_jobs_size_max`  | 
|  `slave_preserve_commit_order`  |  `replica_preserve_commit_order`  | 
|  `slave_skip_errors`  |  `replica_skip_errors`  | 
|  `slave_sql_verify_checksum`  |  `replica_sql_verify_checksum`  | 
|  `slave_transaction_retries`  |  `replica_transaction_retries`  | 
|  `slave_type_conversions`  |  `replica_type_conversions`  | 
|  `sql_slave_skip_counter`  |  `sql_replica_skip_counter`  | 

**注意**  
參數 `replica_allow_batching` 無法使用，因為 Amazon RDS 不支援 NDB 叢集。

### 預存程序名稱變更
<a name="mysql-8-4-inclusive-language-changes-sp"></a>

下列預存程序在 RDS for MySQL 8.4 中具有新名稱。

為了相容性，您可以在初始的 RDS for MySQL 8.4 版本中使用任一名稱。未來版本將移除舊的程序名稱。如需詳細資訊，請參閱[設定、啟動和停止二進位日誌 (binlog) 複寫](mysql-stored-proc-replicating.md)。


| 要移除的名稱 | 新名稱或偏好名稱 | 
| --- | --- | 
|  `mysql.rds_next_master_log`  |  `mysql.rds_next_source_log `  | 
|  `mysql.rds_reset_external_master`  |  `mysql.rds_reset_external_source`  | 
|  `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_set_external_master_with_delay`  |  `mysql.rds_set_external_source_with_delay`  | 
|  `mysql.rds_set_master_auto_position`  |  `mysql.rds_set_source_auto_position`  | 

## Amazon RDS 不支援的 MySQL 功能
<a name="MySQL.Concepts.Features"></a>

Amazon RDS 目前不支援下列 MySQL 功能：
+ 身分驗證外掛程式
+ 登入系統日誌時發生錯誤
+ InnoDB 資料表空間加密
+ NDB 叢集
+ 密碼強度外掛程式
+ 持續的系統變數
+ 重寫器查詢重寫外掛程式
+ 半同步複寫，多可用區域資料庫叢集除外
+ 可傳輸的資料表空間
+ X 外掛程式

為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的殼層存取權。而且會將存取權限制在某些需要進階權限的系統程序和資料表。Amazon RDS 可支援使用任何標準 SQL 用戶端應用程式存取資料庫執行個體上的資料庫。Amazon RDS 不允許使用者利用 Telnet、安全殼層 (SSH) 或 Windows 遠端桌面連線，直接託管資料庫執行個體的存取權。在建立資料庫執行個體時，系統將您指派為該執行個體上所有資料庫的 *db\$1owner*，讓您獲得資料庫層級的所有許可 (用於備份的許可除外)。Amazon RDS 會為您管理備份。