

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

# Amazon RDS for MariaDB
<a name="CHAP_MariaDB"></a>

Amazon RDS 針對資料庫執行個體支援多個 MariaDB 版本。如需有關支援版本的完整資訊，請參閱 [Amazon RDS 上的 MariaDB 版本](MariaDB.Concepts.VersionMgmt.md)。

若要建立 MariaDB 資料庫執行個體，請使用 Amazon RDS​ 管理工具或界面。然後，您可以使用 Amazon RDS 工具對資料庫執行個體執行管理動作。這些包括如下的動作：
+ 重新設定或調整資料庫執行個體的大小
+ 授權連線到資料庫執行個體 
+ 從備份或快照建立與還原
+ 建立多可用區域次要項
+ 建立僅供讀取複本
+ 監控資料庫執行個體的效能

若要在資料庫執行個體中儲存與存取資料，請使用標準 MariaDB 公用程式與應用程式。

所有的 AWS 區域 中都有 MariaDB。如需 AWS 區域 的相關資訊，請參閱 [區域、可用區域和 Local Zones](Concepts.RegionsAndAvailabilityZones.md)。

您可以使用 Amazon RDS for MariaDB 資料庫來建置符合 HIPAA 規範的應用程式。依據與 AWS 簽署的商業夥伴協議 (BAA)，您可以存放醫療保健相關的資訊，包括受保護醫療資訊 (PHI)。如需更多詳細資訊，請參閱 [HIPAA 合規](https://aws.amazon.com/compliance/hipaa-compliance/)。AWS 服務範圍經過第三方稽核機構完整評估，已取得認證、合規證書或操作授權書 (ATO)。如需詳細資訊，請參閱[合規計劃的 AWS 服務範圍](https://aws.amazon.com/compliance/services-in-scope/)。

建立資料庫執行個體之前，請先完成 [設定您的 Amazon RDS 環境](CHAP_SettingUp.md) 中的步驟。建立資料庫執行個體時，RDS 主要使用者帳戶會取得 DBA 權限 (有一些限制)。將此帳戶用於管理任務，例如建立其他資料庫帳戶。

您可以建立下列作業：
+ 資料庫執行個體
+ 資料庫快照
+ 時間點還原
+ 自動備份
+ 手動備份

您可以在以 Amazon 虛擬私有雲端 (VPC) 為基礎的 VPC 內使用執行 MariaDB 的資料庫執行個體。您也可以透過啟用各種選項，新增功能至 MariaDB 資料庫執行個體。Amazon RDS 支援 MariaDB 的多個可用區域部署，做為高可用性、容錯移轉解決方案。

**重要**  
為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的殼層存取權。而且會將存取權限制在某些需要進階權限的系統程序和資料表。您可以使用標準 SQL 用戶端 (例如 mysql 用戶端) 存取資料庫。不過，您無法使用 Telnet 或 Secure Shell (SSH) 直接存取主機。

**Topics**
+ [Amazon RDS 上的 MariaDB 功能支援](MariaDB.Concepts.FeatureSupport.md)
+ [Amazon RDS 上的 MariaDB 版本](MariaDB.Concepts.VersionMgmt.md)
+ [連線至您的 MariaDB 資料庫執行個體](USER_ConnectToMariaDBInstance.md)
+ [保護 MariaDB 執行個體連線安全](securing-mariadb-connections.md)
+ [使用 Amazon RDS Optimized Reads 改善 RDS for MariaDB 的查詢效能](rds-optimized-reads-mariadb.md)
+ [使用 Amazon RDS Optimized Writes 改善 MariaDB 的寫入效能](rds-optimized-writes-mariadb.md)
+ [MySQL 資料庫引擎的升級](USER_UpgradeDBInstance.MariaDB.md)
+ [升級 MariaDB 資料庫快照引擎版本](mariadb-upgrade-snapshot.md)
+ [將資料匯入 Amazon RDS for MariaDB 資料庫執行個體](MariaDB.Procedural.Importing.md)
+ [使用 Amazon RDS 中的 MariaDB 複寫](USER_MariaDB.Replication.md)
+ [MariaDB 資料庫引擎的選項](Appendix.MariaDB.Options.md)
+ [MariaDB 的參數](Appendix.MariaDB.Parameters.md)
+ [將資料從 MySQL 資料庫快照遷移至 MariaDB 資料庫執行個體](USER_Migrate_MariaDB.md)
+ [Amazon RDS 上的 MariaDB SQL 參考](Appendix.MariaDB.SQLRef.md)
+ [MariaDB 資料庫執行個體的本機時區](MariaDB.Concepts.LocalTimeZone.md)
+ [RDS for MariaDB 的已知問題和限制](CHAP_MariaDB.Limitations.md)

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

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

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

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

如需 Amazon RDS 上 MariaDB 功能支援的詳細資訊，請參閱下列主題。

**主題**
+ [Amazon RDS 上的 MariaDB 支援的儲存引擎](MariaDB.Concepts.Storage.md)
+ [Amazon RDS 上 MariaDB 的快取預備](MariaDB.Concepts.XtraDBCacheWarming.md)
+ [Amazon RDS 不支援的 MariaDB 功能](MariaDB.Concepts.FeatureNonSupport.md)

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

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

**Topics**
+ [Amazon RDS 上的 MariaDB 11.8 支援](#MariaDB.Concepts.FeatureSupport.11-8)
+ [Amazon RDS 上的 MariaDB 11.4 支援](#MariaDB.Concepts.FeatureSupport.11-4)
+ [Amazon RDS 上的 MariaDB 10.11 支援](#MariaDB.Concepts.FeatureSupport.10-11)
+ [Amazon RDS 上的 MariaDB 10.6 支援](#MariaDB.Concepts.FeatureSupport.10-6)
+ [Amazon RDS 上的 MariaDB 10.5 支援](#MariaDB.Concepts.FeatureSupport.10-5)
+ [Amazon RDS 上的 MariaDB 10.4 支援](#MariaDB.Concepts.FeatureSupport.10-4)

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

### Amazon RDS 上的 MariaDB 11.8 支援
<a name="MariaDB.Concepts.FeatureSupport.11-8"></a>

對於執行 MariaDB 11.8 版或更高版本的資料庫執行個體，Amazon RDS 支援下列新功能：

**注意**  
在 MariaDB 11.8 中，`require_secure_transport` 的預設值現在為 `1`，需要安全的 SSL/TLS 連線。如果需要非安全連線，請設定為 `0`。
+ **參數的新預設值** – `require_secure_transport` 參數的預設值從 `0` 變更為 `1`，預設會強制執行安全傳輸連線。如需詳細資訊，請參閱[Amazon RDS 上的 MariaDB 資料庫執行個體的所有連線都需要 SSL/TLS](mariadb-ssl-connections.require-ssl.md)。
+ **向量支援** – 您可以使用 MariaDB 向量直接在 MariaDB 中存放及搜尋 AI 產生的向量。此功能引入下列系統變數：
  + 變數 [https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_default_distance](https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_default_distance) 會指定 MHNSW 向量索引的預設距離指標。
  + 變數 [https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_default_m](https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_default_m) 會定義 MHNSW 向量索引中 `M` 參數的預設值。
  + 變數 [https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_ef_search](https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_ef_search) 會定義向量索引搜尋的結果候選項目數量下限。
  + 變數 [https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_max_cache_size](https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_max_cache_size) 會設定一個 MHNSW 向量索引快取的上限。
+ **暫存檔案大小限制** – 您現在可以使用 RDS Maria 資料庫 11.8 參數群組中可用的兩個系統變數來限制建立的磁碟暫存檔案和資料表的大小：
  + 變數 [https://mariadb.com/docs/server/security/limiting-size-of-created-disk-temporary-files-and-tables/max_tmp_session_space_usage-system-variable](https://mariadb.com/docs/server/security/limiting-size-of-created-disk-temporary-files-and-tables/max_tmp_session_space_usage-system-variable) 會限制每位使用者的暫存空間額度。
  + 變數 [https://mariadb.com/docs/server/security/limiting-size-of-created-disk-temporary-files-and-tables/max_tmp_total_space_usage-system-variable](https://mariadb.com/docs/server/security/limiting-size-of-created-disk-temporary-files-and-tables/max_tmp_total_space_usage-system-variable) 會限制所有使用者的暫存空間額度。
+ **暫存資料表空間管理** – 暫存資料表空間會存放暫存資料表，並隨著資料新增而成長。捨棄暫存資料表時，不會自動回收空間。您可以使用 [mysql.rds\$1execute\$1operation](mysql_rds_execute_operation.md) 程序來縮小暫存資料表空間並回收磁碟空間。

如需所有 MariaDB 11.8 功能的清單及其文件，請參閱 MariaDB 網站上的 [MariaDB 11.8 的變更和改進](https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-8/)及[版本備註 - MariaDB 11.8 系列](https://mariadb.com/kb/en/release-notes-mariadb-11-8-series/)。

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

### Amazon RDS 上的 MariaDB 11.4 支援
<a name="MariaDB.Concepts.FeatureSupport.11-4"></a>

對於執行 MariaDB 11.4 版或更高版本的資料庫執行個體，Amazon RDS 支援下列新功能：
+ **密碼編譯程式庫** – RDS for MariaDB 將 OpenSSL 取代為 AWS Libcrypto (AWS-LC)，通過 FIPS 140-3 認證。
+ **簡易密碼檢查外掛程式** – 您可以使用 MariaDB [簡易密碼檢查外掛程式](https://mariadb.com/kb/en/simple-password-check-plugin/)來檢查密碼是否至少包含特定類型的特定字元數。如需詳細資訊，請參閱[使用 RDS for MariaDB 的密碼驗證外掛程式](MariaDB.Concepts.PasswordValidationPlugins.md)。
+ **Cracklib 密碼檢查外掛程式** – 您可以使用 MariaDB [Cracklib 密碼檢查外掛程式](https://mariadb.com/kb/en/cracklib-password-check-plugin/)來檢查新密碼的強度。如需詳細資訊，請參閱[使用 RDS for MariaDB 的密碼驗證外掛程式](MariaDB.Concepts.PasswordValidationPlugins.md)。
+ **InnoDB 增強功能** - 這些增強功能包括下列項目：
  + 變更緩衝區已移除。如需詳細資訊，請參閱 [InnoDB 變更緩衝](https://mariadb.com/kb/en/innodb-change-buffering/)。
  + 已移除 InnoDB 重組。如需詳細資訊，請參閱 [InnoDB 重組](https://mariadb.com/kb/en/defragmenting-innodb-tablespaces/#innodb-defragmentation)。
+ **新權限** – 管理員使用者現在也具有 `SHOW CREATE ROUTINE` 權限。此權限允許承授者檢視另一個使用者所擁有之常式的 `SHOW CREATE` 定義陳述式。如需權限的相關資訊，請參閱[資料庫權限](https://mariadb.com/kb/en/grant/#database-privileges)。
+ **改善複寫** – MariaDB 11.4 版資料庫執行個體支援 binlog 索引。您可以為每個 binlog 檔案建立 GTID 索引。這些索引可縮短尋找 GTID 所需的時間，進而改善複寫效能。如需詳細資訊，請參閱 [Binlog 索引](https://mariadb.com/kb/en/gtid/#binlog-indexing)。
+ **已棄用或移除的參數** - MariaDB 11.4 版資料庫執行個體已棄用或移除下列參數：
  + 已從 [optimizer\$1switch](https://mariadb.com/kb/en/optimizer-switch/) 中移除 `engine_condition_pushdown`
  + [innodb\$1change\$1buffer\$1max\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_change_buffer_max_size)
  + [innodb\$1defragment](https://mariadb.com/kb/en/innodb-system-variables/#innodb_defragment)
  + 已從 [tls\$1version](https://mariadb.com/kb/en/ssltls-system-variables/#tls_version) 移除 `TLSv1.0` 和 `TLSv1.1`
+ **參數的新預設值** – [innodb\$1undo\$1tablespaces](https://mariadb.com/kb/en/innodb-system-variables/#innodb_undo_tablespaces) 參數的預設值從 `0` 變更為 `3`。
+ **參數的新有效值**：下列參數在 MariaDB 11.4 版資料庫執行個體中有新的有效值：
  + [binlog\$1row\$1image](https://mariadb.com/kb/en/replication-and-binary-log-system-variables/#binlog_row_image) 參數的有效值現在包含 `FULL_NODUP`。
  + [OLD\$1MODE](https://mariadb.com/kb/en/old-mode/) 參數的有效值現在包含 `NO_NULL_COLLATION_IDS`。
+ **新參數** - 下列參數是 MariaDB 11.4 版資料庫執行個體的新參數：
  + [transaction\$1isolation](https://mariadb.com/kb/en/server-system-variables/#transaction_isolation) 參數會取代 [tx\$1isolation](https://mariadb.com/kb/en/server-system-variables/#tx_isolation) 參數。
  + [transaction\$1read\$1only](https://mariadb.com/kb/en/server-system-variables/#transaction_read_only) 參數會取代 [tx\$1read\$1only](https://mariadb.com/kb/en/server-system-variables/#tx_read_only) 參數。
  + [block\$1encryption\$1mode](https://mariadb.com/kb/en/server-system-variables/#block_encryption_mode) 參數會定義 [AES\$1ENCRYPT()](https://mariadb.com/kb/en/aes_encrypt/) 和 [AES\$1DECRYPT()](https://mariadb.com/kb/en/aes_decrypt/) 函數的預設區塊加密模式。
  + [ character\$1set\$1collations](https://mariadb.com/kb/en/server-system-variables/#character_set_collations) 會定義字元集預設定序的覆寫。
  + [binlog\$1gtid\$1index](https://mariadb.com/kb/en/system-versioned-tables/#binlog_gtid_index)、[binlog\$1gtid\$1index\$1page\$1size](https://mariadb.com/kb/en/system-versioned-tables/#binlog_gtid_index_page_size) 和 [binlog\$1gtid\$1index\$1span\$1min](https://mariadb.com/kb/en/system-versioned-tables/#binlog_gtid_index_span_min) 會定義 binlog GTID 索引的屬性。如需詳細資訊，請參閱 [Binlog 索引](https://mariadb.com/kb/en/gtid/#binlog-indexing)。

如需所有 MariaDB 11.4 功能的清單及其文件，請參閱 MariaDB 網站上的 [MariaDB 11.4 的變更和改進](https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-4/)及[版本備註 - MariaDB 11.4 系列](https://mariadb.com/kb/en/release-notes-mariadb-11-4-series/)。

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

### Amazon RDS 上的 MariaDB 10.11 支援
<a name="MariaDB.Concepts.FeatureSupport.10-11"></a>

對於執行 MariaDB 10.11 版或更高版本的資料庫執行個體，Amazon RDS 支援下列新功能：
+ **密碼重複使用檢查外掛程式** - 您可以使用 MariaDB 密碼重複使用檢查外掛程式來防止使用者重複使用密碼，以及設定密碼的保留期。如需詳細資訊，請參閱[密碼重複使用檢查外掛程式](https://mariadb.com/kb/en/password-reuse-check-plugin/)。
+ **GRANT TO PUBLIC 授權** - 您可以對能夠存取您的伺服器的所有使用者授予權限。如需詳細資訊，請參閱 [GRANT TO PUBLIC](https://mariadb.com/kb/en/grant/#to-public)。
+ **分隔 SUPER 和 READ ONLY ADMIN 權限** - 您可以移除所有使用者的 READ ONLY ADMIN 權限，即使使用者先前擁有 SUPER 權限也一樣。
+ **安全性** - 您現在可以將選項 `--ssl` 設定為 MariaDB 用戶端的預設值。MariaDB 不再於組態不正確的情況下，無訊息停用 SSL。
+ **SQL 命令和函數** - 您現在可以使用 `SHOW ANALYZE FORMAT=JSON` 命令以及 `ROW_NUMBER`、`SFORMAT` 和 `RANDOM_BYTES` 函數。`SFORMAT` 允許設定字串格式，且預設為啟用。您可以使用單一命令進行分割區與資料表的相互轉換。`JSON_*()` 函數也有幾項改進。`DES_ENCRYPT` 和 `DES_DECRYPT` 函數在 10.10 及更高版本中已棄用。如需詳細資訊，請參閱 [SFORMAT](https://mariadb.com/kb/en/sformat/)。
+ **InnoDB 增強功能** - 這些增強功能包括下列項目：
  + 重做日誌中的效能改進，可減少寫入放大現象並改善並行。
  + 您可以變更復原資料表空間，而不需重新初始化資料目錄。此增強功能可減少控制平面額外負荷。它需要重新啟動，但在變更復原資料表空間後不需重新初始化。
  + 支援 `CHECK TABLE … EXTENDED` 及在內部遞減排序索引。
  + 大量插入的改進。
+ **Binlog 變更** - 這些變更包括下列項目：
  + 分兩個階段記錄 `ALTER` 以減少複寫延遲。`binlog_alter_two_phase` 參數預設為停用，但可透過參數群組啟用。
  + 記錄 `explicit_defaults_for_timestamp`。
  + 如果交易可安全地復原，則不再記錄 `INCIDENT_EVENT`。
+ **複寫****改進** - 如果主要執行個體支援，則 MariaDB 10.11 版資料庫執行個體預設會使用 GTID 複寫。此外，`Seconds_Behind_Master` 更精確。
+ **用戶端** - 您可以使用 `mysqlbinglog` 和 `mariadb-dump` 的新命令列選項。您可以使用 `mariadb-dump` 傾印和還原歷史資料。
+ **系統版本控制** - 您可以修改歷史記錄。MariaDB 會自動建立新的分割區。
+ **原子 DDL** - `CREATE OR REPLACE` 現在為原子。陳述式成功，或是完全失敗。
+ **重做日誌寫入** - 重做日誌以非同步方式寫入。
+ **預存函數** - 預存函數現在可支援與預存程序中相同的 `IN`、`OUT` 及 `INOUT` 參數。
+ **已棄用或移除的參數** - MariaDB 10.11 版資料庫執行個體已棄用或移除下列參數：
  + [innodb\$1change\$1buffering](https://mariadb.com/kb/en/innodb-system-variables/#innodb_change_buffering)
  + [innodb\$1disallow\$1writes](https://mariadb.com/kb/en/innodb-system-variables/#innodb_disallow_writes)
  + [innodb\$1log\$1write\$1ahead\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_write_ahead_size) 
  + [ innodb\$1prefix\$1index\$1cluster\$1optimization](https://mariadb.com/kb/en/innodb-system-variables/#innodb_prefix_index_cluster_optimization)
  + [ keep\$1files\$1on\$1create](https://mariadb.com/kb/en/server-system-variables/#keep_files_on_create)
  + [old](https://mariadb.com/kb/en/server-system-variables/#old)
+ **動態參數** - 下列參數現在為 MariaDB 10.11 版資料庫執行個體的動態參數：
  + [innodb\$1log\$1file\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_file_size)
  + [innodb\$1write\$1io\$1threads](https://mariadb.com/kb/en/innodb-system-variables/#innodb_write_io_threads)
  + [innodb\$1read\$1io\$1threads](https://mariadb.com/kb/en/innodb-system-variables/#innodb_read_io_threads)
+ **參數的新預設值**：下列參數在 MariaDB 10.11 版資料庫執行個體中有新的預設值：
  + [explicit\$1defaults\$1for\$1timestamp](https://mariadb.com/kb/en/server-system-variables/#explicit_defaults_for_timestamp) 參數的預設值從 `OFF` 變更為 `ON`。
  + [optimizer\$1prune\$1level](https://mariadb.com/kb/en/server-system-variables/#optimizer_prune_level) 參數的預設值從 `1` 變更為 `2`。
+ **參數的新有效值**：下列參數在 MariaDB 10.11 版資料庫執行個體中有新的有效值：
  + [old](https://mariadb.com/kb/en/server-system-variables/#old) 參數的有效值已與 [old\$1mode](https://mariadb.com/kb/en/server-system-variables/#old_mode) 參數的有效值合併。
  + [histogram\$1type](https://mariadb.com/kb/en/server-system-variables/#histogram_type) 參數的有效值現在包括 `JSON_HB`。
  + [innodb\$1log\$1buffer\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_buffer_size) 參數的有效值範圍現在為 `262144` 至 `4294967295` (256KB 至 4096MB)。
  + [innodb\$1log\$1file\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_file_size) 參數的有效值範圍現在為 `4194304` 至 `512GB` (4MB 至 512GB)。
  + [optimizer\$1prune\$1level](https://mariadb.com/kb/en/server-system-variables/#optimizer_prune_level) 參數的有效值現在包括 `2`。
+ **新參數** - 下列參數是 MariaDB 10.11 版資料庫執行個體的新參數：
  + [binlog\$1alter\$1two\$1phase](https://mariadb.com/kb/en/replication-and-binary-log-system-variables//#binlog_alter_two_phase) 參數可改善複寫效能。
  + [log\$1slow\$1min\$1examined\$1row\$1limit](https://mariadb.com/kb/en/server-system-variables/#log_slow_min_examined_row_limit) 參數可改善效能。
  + [log\$1slow\$1query](https://mariadb.com/kb/en/server-system-variables/#log_slow_query) 參數和 [log\$1slow\$1query\$1file](https://mariadb.com/kb/en/server-system-variables/#log_slow_query_file) 參數分別是 `slow_query_log` 和 `slow_query_log_file` 的別名。
  +  [ optimizer\$1extra\$1pruning\$1depth](https://mariadb.com/kb/en/server-system-variables/#optimizer_extra_pruning_depth)
  + [system\$1versioning\$1insert\$1history](https://mariadb.com/kb/en/system-versioned-tables/#system_versioning_insert_history)

如需所有 MariaDB 10.11 功能的清單及其文件，請參閱 MariaDB 網站上的 [MariaDB 10.11 的變更和改進](https://mariadb.com/kb/en/changes-improvements-in-mariadb-1011/)及[版本備註 - MariaDB 10.11 系列](https://mariadb.com/kb/en/release-notes-mariadb-1011-series/)。

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

### Amazon RDS 上的 MariaDB 10.6 支援
<a name="MariaDB.Concepts.FeatureSupport.10-6"></a>

對於執行 MariaDB 10.6 版或更新版本的資料庫執行個體，Amazon RDS 支援下列新功能：
+ **MyRocks 儲存引擎**：您可以將 MyRocks 儲存引擎與 RDS for MariaDB 結合使用，以最佳化寫入密集型、高效能 Web 應用程序的儲存消耗量。如需詳細資訊，請參閱 [Amazon RDS 上的 MariaDB 支援的儲存引擎](MariaDB.Concepts.Storage.md) 和 [MyRocks](https://mariadb.com/kb/en/myrocks/)。
+ **AWS Identity and Access Management (IAM) 資料庫身分驗證** – 您可以使用 IAM 資料庫身分驗證來提高 MariaDB 資料庫執行個體連線的安全性和集中管理。如需詳細資訊，請參閱[適用於 MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.md)。
+ **升級選項**：您現在可從先前的任何主要版本 (10.3、10.4、10.5) 升級至 RDS for MariaDB 10.6 版。您也可以將現有 MySQL 5.6 或 5.7 資料庫執行個體的快照還原為 MariaDB 10.6 執行個體。如需詳細資訊，請參閱[MySQL 資料庫引擎的升級](USER_UpgradeDBInstance.MariaDB.md)。
+ **延遲複寫**：您現在可以設定僅供讀取複本落後於來源資料庫的可設定時間段。在標準 MariaDB 複寫配置中，來源和複本之間的複製延遲最小。藉由延遲複寫，您可以將故意延遲設定為災難復原策略。如需詳細資訊，請參閱[透過 MariaDB 設定延遲複寫](USER_MariaDB.Replication.ReadReplicas.DelayReplication.md)。
+ **Oracle PL/SQL 兼容性**：透過使用 RDS for MariaDB 10.6 版，您可以更輕鬆地將舊版 Oracle 應用程式遷移至 Amazon RDS。如需詳細資訊，請參閱 [SQL\$1MODE=ORACLE](https://mariadb.com/kb/en/sql_modeoracle/)。
+ **不可部分完成 DDL**：若使用 RDS for MariaDB 10.6 版，您的動態資料語言 (DDL) 陳述式會具有較強的損毀安全 (Crash-safe) 功能。`CREATE TABLE`、`ALTER TABLE`、`RENAME TABLE`、`DROP TABLE`、`DROP DATABASE` 和相關的 DDL 陳述式現在不可部分完成。陳述式要么成功，要么完全失敗。如需詳細資訊，請參閱[不可部分完成 DDL](https://mariadb.com/kb/en/atomic-ddl/)。
+ **其他增強功能**：這些增強功能包括在 SQL 中將 JSON 資料轉換為關係格式的 `JSON_TABLE` 函數，以及使用 Innodb 更快地加載空白資料表資料。其中還包括用於分析和故障排除的新 `sys_schema`、忽略未使用索引的最佳化程序增強功能以及效能改進。如需詳細資訊，請參閱 [JSON\$1TABLE](https://mariadb.com/kb/en/json_table/)。
+ **參數的新預設值**：下列參數具有 MariaDB 10.6 版資料庫執行個體的新預設值：
  + 下列參數的預設值已從 `utf8` 變更為 `utf8mb3`：
    + [character\$1set\$1client](https://mariadb.com/kb/en/server-system-variables/#character_set_client)
    + [character\$1set\$1connection](https://mariadb.com/kb/en/server-system-variables/#character_set_connection)
    + [character\$1set\$1results](https://mariadb.com/kb/en/server-system-variables/#character_set_results)
    + [character\$1set\$1system](https://mariadb.com/kb/en/server-system-variables/#character_set_system)

    雖然這些參數的預設值已變更，但功能並無變化。如需詳細資訊，請參閱 MariaDB 文件中的[支援的字元集和定序](https://mariadb.com/kb/en/supported-character-sets-and-collations/)。
  + [collation\$1connection](https://mariadb.com/kb/en/server-system-variables/#collation_connection) 參數的預設值已從 `utf8_general_ci` 變更為 `utf8mb3_general_ci`。雖然此參數的預設值已變更，但功能並無變化。
  + [old\$1mode](https://mariadb.com/kb/en/server-system-variables/#old_mode) 參數的預設值已從未設定變更為 `UTF8_IS_UTF8MB3`。雖然此參數的預設值已變更，但功能並無變化。

如需所有 MariaDB 10.6 功能的清單及其文件，請參閱 MariaDB 網站上的 [MariaDB 10.6 的變更和改進](https://mariadb.com/kb/en/changes-improvements-in-mariadb-106/)及[版本備註 - MariaDB 10.6 系列](https://mariadb.com/kb/en/release-notes-mariadb-106-series/)。

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

### Amazon RDS 上的 MariaDB 10.5 支援
<a name="MariaDB.Concepts.FeatureSupport.10-5"></a>

對於執行 MariaDB 10.5 版或更新版本的資料庫執行個體，Amazon RDS 支援下列新功能：
+ **InnoDB 增強** – MariaDB 10.5 版，包括 InnoDB 增強。如需詳細資訊，請參閱 MariaDB 文件中的 [InnoDB：效能改進等](https://mariadb.com/kb/en/changes-improvements-in-mariadb-105/#innodb-performance-improvements-etc)。
+ **效能結構描述更新** – MariaDB 10.5 版，包括效能結構描述更新。如需詳細資訊，請參閱 MariaDB 文件中的[效能結構描述更新以符合 MySQL 5.7 檢測和資料表](https://mariadb.com/kb/en/changes-improvements-in-mariadb-105/#performance-schema-updates-to-match-mysql-57-instrumentation-and-tables)。
+ **InnoDB 重做日誌中的一個檔案** – 在 10.5 版之前的 MariaDB 版本中，`innodb_log_files_in_group` 參數的值被設定為 `2`。在 MariaDB 10.5 版中，此參數的值設定為 `1`。

  如果您要從先前的版本升級到 MariaDB 10.5 版，並且您不修改參數，則 `innodb_log_file_size` 參數值不會變更。不過，它會套用至一個記錄檔，而不是兩個記錄檔。結果是升級後的 MariaDB 10.5 版資料庫執行個體使用升級之前所使用的重做日誌大小的一半。這項變更可能會產生明顯的效能影響。若要解決這個問題，您可以將 `innodb_log_file_size` 參數的值加倍。如需修改參數的相關資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。
+ **不支援 SHOW SLAVE STATUS 命令** – 在 10.5 版之前的 MariaDB 版本中，`SHOW SLAVE STATUS` 命令需要的 `REPLICATION SLAVE` 權限。在 MariaDB 10.5 版中，對等命令 `SHOW REPLICA STATUS` 需要 `REPLICATION REPLICA ADMIN` 權限。這個新權限不會授與 RDS 主要使用者。

  不使用 `SHOW REPLICA STATUS` 命令，而是執行新的 `mysql.rds_replica_status` 存放的程序來傳回類似的資訊。如需更多詳細資訊，請參閱 [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md)。
+ **不支援 SHOW RELAYLOG EVENTS 命令** – 在 10.5 版之前的 MariaDB 版本中，`SHOW RELAYLOG EVENTS` 命令需要 `REPLICATION SLAVE` 權限。在 MariaDB 10.5 版本中，這個命令需要 `REPLICATION REPLICA ADMIN` 權限。這個新權限不會授與 RDS 主要使用者。
+ **參數的新預設值** – 下列參數具有 MariaDB 10.5 版資料庫執行個體的新預設值：
  + [max\$1connections](https://mariadb.com/kb/en/server-system-variables/#max_connections) 參數的預設值已變更為 `LEAST({DBInstanceClassMemory/25165760},12000)`。如需有關 `LEAST` 參數函數的資訊，請參閱 [資料庫參數函數](USER_ParamValuesRef.md#USER_ParamFunctions)。
  + [innodb\$1adaptive\$1hash\$1index](https://mariadb.com/kb/en/innodb-system-variables/#innodb_adaptive_hash_index) 參數的預設值已變更為 `OFF` (`0`)。
  + [ innodb\$1checksum\$1algorithm](https://mariadb.com/kb/en/innodb-system-variables/#innodb_checksum_algorithm) 參數的預設值已變更為 `full_crc32`。
  + [innodb\$1log\$1file\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_file_size) 參數的預設值已變更為 2 GB。

如需所有 MariaDB 10.5 功能的清單及其文件，請參閱 MariaDB 網站上的 [MariaDB 10.5 的變更和改進](https://mariadb.com/kb/en/changes-improvements-in-mariadb-105/)及[版本備註 - MariaDB 10.5 系列](https://mariadb.com/kb/en/release-notes-mariadb-105-series/)。

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

### Amazon RDS 上的 MariaDB 10.4 支援
<a name="MariaDB.Concepts.FeatureSupport.10-4"></a>

對於執行 MariaDB 10.4 版或更新版本的資料庫執行個體，Amazon RDS 支援下列新功能：
+ **使用者帳戶安全性增強功能** – [密碼到期](https://mariadb.com/kb/en/user-password-expiry/) 和 [帳戶鎖定](https://mariadb.com/kb/en/account-locking/) 改進項目
+ **最佳化工具增強功能** – [最佳化工具追蹤功能](https://mariadb.com/kb/en/optimizer-trace-overview/)
+ **InnoDB 增強功能** – [即時 DROP COLUMN 支援](https://mariadb.com/kb/en/alter-table/#drop-column) 和即時 `VARCHAR` `ROW_FORMAT=DYNAMIC` 的延伸與 `ROW_FORMAT=COMPACT` 
+ **新參數** – 包括 [tcp\$1nodedelay](https://mariadb.com/kb/en/server-system-variables/#tcp_nodelay)、[tls\$1version](https://mariadb.com/kb/en/ssltls-system-variables/#tls_version)，和 [gtid\$1cleanup\$1batch\$1size](https://mariadb.com/kb/en/gtid/#gtid_cleanup_batch_size)

如需所有 MariaDB 10.4 功能的清單及其文件，請參閱 MariaDB 網站上的 [MariaDB 10.4 的變更和改進](https://mariadb.com/kb/en/library/changes-improvements-in-mariadb-104/)及[版本備註 - MariaDB 10.4 系列](https://mariadb.com/kb/en/library/release-notes-mariadb-104-series/)。

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

# Amazon RDS 上的 MariaDB 支援的儲存引擎
<a name="MariaDB.Concepts.Storage"></a>

RDS for MariaDB 支援以下儲存引擎。

**Topics**
+ [InnoDB 儲存引擎](#MariaDB.Concepts.Storage.InnoDB)
+ [MyRocks 儲存引擎](#MariaDB.Concepts.Storage.MyRocks)

RDS for MariaDB 目前不支援其他儲存引擎。

## InnoDB 儲存引擎
<a name="MariaDB.Concepts.Storage.InnoDB"></a>

雖然 MariaDB 支援多種功能不盡相同的儲存引擎，但並非所有引擎的復原能力和資料耐用性都經過最佳化設計。InnoDB 為 Amazon RDS 上 MariaDB 資料庫執行個體的推薦儲存引擎。時間點還原和快照還原等 Amazon RDS​ 功能皆須搭配可復原的儲存引擎才能執行，且僅有適用於 MariaDB 版本的建議儲存引擎才支援這些功能。

如需詳細資訊，請參閱 [InnoDB](https://mariadb.com/kb/en/innodb/)。

## MyRocks 儲存引擎
<a name="MariaDB.Concepts.Storage.MyRocks"></a>

MyRocks 儲存引擎可用於 RDS for MariaDB 10.6 版及更高版本。在生產資料庫中使用 MyRocks 儲存引擎之前，我們建議您執行徹底的基準化分析和測試，以驗證您的使用案例相對於 InnoDB 是否具有任何潛在優勢。

MariaDB 10.6 版的預設參數群組包括 MyRocks 參數。如需詳細資訊，請參閱 [MariaDB 的參數](Appendix.MariaDB.Parameters.md) 及 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

若要建立使用 MyRocks 儲存引擎的資料表，請在 `CREATE TABLE` 陳述式中指定 `ENGINE=RocksDB`。下列範例會建立使用 MyRocks 儲存引擎的資料表。

```
CREATE TABLE test (a INT NOT NULL, b CHAR(10)) ENGINE=RocksDB;
```

強烈建議您不要執行跨越 InnoDB 和 MyRocks 資料表的交易處理。MariaDB 不保證跨儲存引擎的交易處理 ACID (不可部分完成性、一致性、隔離性、持久性)。儘管可以在資料庫執行個體中同時包含 InnoDB 和 MyRocks 資料 表，但我們不建議使用此方法，除非處於從一個儲存引擎遷移至另一個儲存引擎期間。當 InnoDB 和 MyRocks 資料表都存在於資料庫執行個體中時，每個儲存引擎都有自己的緩衝集區，這可能會導致效能下降。

MyRocks 不支援 `SERIALIZABLE` 隔離或間隙鎖定。所以，通常您不能將 MyRocks 用於基於陳述句的複寫。如需詳細資訊，請參閱 [MyRocks 和複寫](https://mariadb.com/kb/en/myrocks-and-replication/)。

目前，您只能修改下列 MyRocks 參數：
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_block_cache_size](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_block_cache_size)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load_size](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load_size)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect_depth](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect_depth)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_max_latest_deadlocks](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_max_latest_deadlocks)

MyRocks 儲存引擎和 InnoDB 儲存引擎可根據 `rocksdb_block_cache_size` 和 `innodb_buffer_pool_size` 參數的設定來競爭記憶體。在某些情況下，您可能只打算在特定資料庫執行個體上使用 MyRocks 儲存引擎。如果是這樣，建議將 `innodb_buffer_pool_size minimal` 參數設定為最小值，同時將盡力提高 `rocksdb_block_cache_size` 的值。

您可以使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) 和 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html) 操作存取 MyRocks 日誌檔案。

如需有關 MyRocks 的詳細資訊，請參閱 MariaDB 網站上的 [MyRocks](https://mariadb.com/kb/en/myrocks/)。

# Amazon RDS 上 MariaDB 的快取預備
<a name="MariaDB.Concepts.XtraDBCacheWarming"></a>

InnoDB 快取預備功能可在資料庫執行個體關閉時，儲存緩衝集區的當前狀態，等到資料庫執行個體啟動時，再使用儲存的資訊重新載入緩衝集區，藉此提升 MariaDB 資料庫執行個體的效能。此方法不必在資料庫正常使用情況下將緩衝集區「熱機」，而是將已知常用查詢的頁面預先載入緩衝集區。如需快取預備功能的詳細資訊，請參閱 MariaDB 文件中的 [Dumping and restoring the buffer pool](http://mariadb.com/kb/en/mariadb/xtradbinnodb-buffer-pool/#dumping-and-restoring-the-buffer-pool) (傾印和還原緩衝集區)。

在 MariaDB 10.3 版和更新版本的資料庫執行個體上，會預設啟用快取預備功能。如果要自行啟用該功能，請在資料庫執行個體的參數群組中，將 `innodb_buffer_pool_dump_at_shutdown` 和 `innodb_buffer_pool_load_at_startup` 參數設為 1。在參數群組中變更這些參數值會影響使用該參數群組的所有 MariaDB 資料庫執行個體。請先為資料庫執行個體建立新的參數群組，才能啟用特定 MariaDB 資料庫執行個體的快取預備功能。如需參數群組的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

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

**重要**  
如果您的 MariaDB 資料庫執行個體沒有正常關閉 (例如容錯移轉期間)，則緩衝集區狀態不會儲存到磁碟中。這種情形下，MariaDB 會在資料庫執行個體重新啟動時，載入任何可用的緩衝集區檔案。這不會造成任何損害，只是還原的緩衝集區無法反映緩衝集區在重新啟動之前的最新狀態。為確保您有最新狀態的緩衝集區可在啟動時預備快取，建議您定期「隨需」傾印緩衝集區。您可以隨需傾印或載入緩衝集區。  
您可建立事件，以定期自動傾印緩衝集區。舉例來說，下列陳述式會建立名為 `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();
```
如需詳細資訊，請參閱 MariaDB 文件中的[事件](http://mariadb.com/kb/en/mariadb/stored-programs-and-views-events/)。

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

您可以使用下列預存程序來隨需儲存和載入快取：
+ 若要將緩衝集區的最新狀態傾印至磁碟，請呼叫 [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) 預存程序。

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

Amazon RDS 上不支援下列 MariaDB 功能：
+ S3 儲存引擎
+ 身分驗證外掛程式 – GSSAPI
+ 身分驗證外掛程式 – Unix Socket
+ AWS Key Management 加密外掛程式
+ 低於 MariaDB 10.6 版的延遲複寫
+ InnoDB 和 Aria 的原生 MariaDB 靜態加密

  您可以按照 [加密 Amazon RDS 資源](Overview.Encryption.md) 中的說明啟用 MariaDB 資料庫執行個體的靜態加密。
+ HandlerSocket
+ 低於 MariaDB 10.6 版的 JSON 資料表類型
+ MariaDB ColumnStore
+ MariaDB Galera 叢集
+ 多來源複寫
+ 低於 MariaDB 10.6 版的 MyRocks 儲存引擎
+ 低於 11.4 的 MariaDB 版本的密碼驗證外掛程式、`simple_password_check` 和 `cracklib_password_check` 
+ Spider 儲存引擎
+ Sphinx 儲存引擎
+ TokuDB 儲存引擎
+ 儲存引擎專屬物件屬性，如 MariaDB 文件中的[引擎定義的新資料表/欄位/索引屬性](http://mariadb.com/kb/en/mariadb/engine-defined-new-tablefieldindex-attributes/)所述
+ 資料表和資料表空間加密
+ Hashicorp 金鑰管理外掛程式
+ 同時執行兩項升級

為了提供受管理的服務體驗，Amazon RDS 並不提供資料庫執行個體的 Shell 存取權，而且會將存取權限制於某些需要進階權限的系統程序和資料表。Amazon RDS 可支援使用任何標準 SQL 用戶端應用程式存取資料庫執行個體上的資料庫。Amazon RDS 不允許使用者利用 Telnet、安全殼層 (SSH) 或 Windows 遠端桌面連線，直接託管資料庫執行個體的存取權。

# Amazon RDS 上的 MariaDB 版本
<a name="MariaDB.Concepts.VersionMgmt"></a>

對於 MariaDB，版本編號組織為版本 X.Y.Z。在 Amazon RDS 術語中，X.Y 代表主要版本，Z 則代表次要版本編號。進行 Amazon RDS 實作時，若主要版本編號有所變更 (例如從 10.5 版更新至 10.6 版)，即視為主要版本變更。如果只有次要版本編號變更 (例如從 10.6.14 版變更至 10.6.16 版)，則視為次要版本變更。

**Topics**
+ [Amazon RDS 上支援的 MariaDB 次要版本](#MariaDB.Concepts.VersionMgmt.Supported)
+ [Amazon RDS 上支援的 MariaDB 主要版本](#MariaDB.Concepts.VersionMgmt.ReleaseCalendar)
+ [使用資料庫預覽環境](#mariadb-working-with-the-database-preview-environment)
+ [資料庫預覽環境中的 MariaDB 11.7 版](#mariadb-preview-environment-version-11-7)
+ [Amazon RDS for MariaDB 的已取代版本](#MariaDB.Concepts.DeprecatedVersions)

## Amazon RDS 上支援的 MariaDB 次要版本
<a name="MariaDB.Concepts.VersionMgmt.Supported"></a>

Amazon RDS 目前支援下列 MariaDB 次要版本。

**注意**  
只有月份和年份的日期是近似值，並會在已知確切日期時進行更新。

下表顯示 Amazon RDS 目前支援的 MariaDB 11.8 次要版本。


| DB engine version (資料庫引擎版本) | 社群發佈日期 | RDS 發佈日期 | RDS 標準支援結束日期 | 
| --- | --- | --- | --- | 
|  11.8.6  | 2026 年 2 月 4 日 |  2026 年 2 月 10 日  |  2027 年 2 月  | 
|  11.8.5  | 2025 年 11 月 14 日 |  2025 年 11 月 20 日  |  2026 年 11 月  | 
|  11.8.3  | 2025 年 8 月 6 日 |  2025 年 8 月 25 日  |  2026 年 9 月  | 

下表顯示 Amazon RDS 目前支援的 MariaDB 11.4 次要版本。


| DB engine version (資料庫引擎版本) | 社群發佈日期 | RDS 發佈日期 | RDS 標準支援結束日期 | 
| --- | --- | --- | --- | 
|  11.4.10  | 2026 年 2 月 4 日 |  2026 年 2 月 10 日  |  2027 年 2 月  | 
|  11.4.9  | 2025 年 11 月 6 日 |  2025 年 11 月 18 日  |  2026 年 11 月  | 
|  11.4.8  | 2025 年 8 月 6 日 |  2025 年 8 月 13 日  |  2026 年 9 月  | 
|  11.4.7  | 2025 年 5 月 22 日 |  2025 年 6 月 4 日  |  2026 年 9 月  | 
|  11.4.5  | 2025 年 2 月 4 日 |  2025 年 2 月 24 日  |  2026 年 5 月  | 
|  11.4.4  | 2024 年 11 月 1 日 |  2024 年 12 月 20 日  |  2026 年 5 月  | 
|  11.4.3  |  2024 年 8 月 8 日  |  2024 年 10 月 15 日  |  2026 年 5 月  | 

Amazon RDS 目前支援下列 MariaDB 10.11 次要版本。


| DB engine version (資料庫引擎版本) | 社群發佈日期 | RDS 發佈日期 | RDS 標準支援結束日期 | 
| --- | --- | --- | --- | 
|  10.11.16  | 2026 年 2 月 4 日 |  2026 年 2 月 10 日  |  2027 年 2 月  | 
|  10.11.15  | 2025 年 11 月 6 日 | 2025 年 11 月 18 日 |  2026 年 11 月  | 
|  10.11.14  | 2025 年 8 月 6 日 | 2025 年 8 月 13 日 |  2026 年 9 月  | 
|  10.11.13  | 2025 年 5 月 22 日 | 2025 年 6 月 4 日 |  2026 年 9 月  | 
|  10.11.11  | 2025 年 2 月 4 日 | 2025 年 2 月 24 日 |  2026 年 5 月  | 
|  10.11.10  |  2024 年 11 月 1 日  |  2024 年 12 月 20 日  |  2026 年 5 月  | 
|  10.11.9  |  2024 年 8 月 8 日  |  2024 年 9 月 4 日  |  2026 年 5 月  | 

Amazon RDS 目前支援下列 MariaDB 10.6 次要版本。


| DB engine version (資料庫引擎版本) | 社群發佈日期 | RDS 發佈日期 | RDS 標準支援結束日期 | 
| --- | --- | --- | --- | 
|  10.6.25  | 2026 年 2 月 4 日 |  2026 年 2 月 10 日  |  2026 年 7 月  | 
|  10.6.24  |  2025 年 11 月 6 日  |  2025 年 11 月 18 日  |  2026 年 7 月  | 
|  10.6.23  |  2025 年 8 月 6 日  |  2025 年 8 月 13 日  |  2026 年 7 月  | 
|  10.6.22  |  2025 年 5 月 6 日  |  2025 年 5 月 20 日  |  2026 年 7 月  | 
|  10.6.21  |  2025 年 2 月 4 日  |  2025 年 2 月 24 日  |  2026 年 5 月  | 
|  10.6.20  |  2024 年 11 月 1 日  |  2024 年 12 月 20 日  |  2026 年 5 月  | 
|  10.6.19  |  2024 年 8 月 8 日  |  2024 年 9 月 4 日  |  2026 年 5 月  | 

Amazon RDS 目前支援下列 MariaDB 10.5 次要版本。


| DB engine version (資料庫引擎版本) | 社群發佈日期 | RDS 發佈日期 | RDS 標準支援結束日期 | 
| --- | --- | --- | --- | 
|  10.5.29  |  2025 年 5 月 6 日  |  2025 年 5 月 20 日  |  2026 年 6 月  | 
|  10.5.28  |  2025 年 2 月 4 日  |  2025 年 2 月 24 日  |  2026 年 6 月  | 
|  10.5.27  |  2024 年 11 月 1 日  |  2024 年 12 月 20 日  |  2026 年 5 月  | 

建立新的資料庫執行個體時，您可以指定使用目前支援的任一 MariaDB 版本。您可以指定主要版本 (例如 MariaDB 10.5)，並指定使用主要版本所支援的任一次要版本。若未指定版本，Amazon RDS 會預設使用支援的版本，通常是最新版本。若已指定主要版本，但未指定次要版本，Amazon RDS 會預設使用您指定主要版本的最新次要版本。若要查看支援的版本清單，以及新建立資料庫執行個體的預設值，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI 命令。

例如，若要列出 RDS for MariaDB 支援的引擎版本，請執行下列 CLI 命令：

```
aws rds describe-db-engine-versions --engine mariadb --query "*[].{Engine:Engine,EngineVersion:EngineVersion}" --output text
```

預設的 MariaDB 版本可能會隨著 AWS 區域而有所不同。若要建立具有特定次要版本的資料庫執行個體，請在建立資料庫執行個體期間指定次要版本。您可以執行下列 AWS CLI 命令 AWS 區域 來判斷 的預設次要版本：

```
aws rds describe-db-engine-versions --default-only --engine mariadb --engine-version major_engine_version --region region --query "*[].{Engine:Engine,EngineVersion:EngineVersion}" --output text
```

將 *major-engine-version* 取代為主要引擎版本，並將 *region* 取代為 AWS 區域。例如，下列 AWS CLI 命令會傳回 10.5 主要版本和美國西部 （奧勒岡） AWS 區域 (us-west-2) 的預設 MariaDB 次要引擎版本：

```
aws rds describe-db-engine-versions --default-only --engine mariadb --engine-version 10.5 --region us-west-2 --query "*[].{Engine:Engine,EngineVersion:EngineVersion}" --output text
```

### Amazon RDS 上的 MariaDB 次要版本
<a name="MySQL.Concepts.VersionMgmt.Supported.Minor"></a>

**Topics**
+ [MariaDB 11.8.6 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.6)
+ [MariaDB 11.8.5 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.5)
+ [MariaDB 11.8.3 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.3)
+ [MariaDB 11.4.10 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.10)
+ [MariaDB 11.4.9 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.9)
+ [MariaDB 11.4.8 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.8)
+ [MariaDB 11.4.7 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.7)
+ [MariaDB 11.4.5 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.5)
+ [MariaDB 11.4.4 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.4)
+ [MariaDB 10.11.16 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.16)
+ [MariaDB 10.11.15 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.15)
+ [MariaDB 10.11.14 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.14)
+ [MariaDB 10.11.13 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.13)
+ [MariaDB 10.11.11 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.11)
+ [MariaDB 10.11.10 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.10)
+ [MariaDB 10.6.25 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.25)
+ [MariaDB 10.6.24 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.24)
+ [MariaDB 10.6.23 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.23)
+ [MariaDB 10.6.22 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.22)
+ [MariaDB 10.6.21 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.21)
+ [MariaDB 10.6.20 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.20)
+ [MariaDB 10.5.29 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.29)
+ [MariaDB 10.5.28 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.28)
+ [MariaDB 10.5.27 版](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.27)

#### MariaDB 11.8.6 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.6"></a>

MariaDB 11.8.6 版現已在 Amazon RDS 上提供。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025c`。
+ 已修正可能導致某些 SQL 陳述式無法記錄在稽核日誌中的問題。

#### MariaDB 11.8.5 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.5"></a>

MariaDB 11.8.5 版現已在 Amazon RDS 上提供。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

#### MariaDB 11.8.3 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.3"></a>

MySQL 11.8.3 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ **參數的新預設值** – `require_secure_transport` 參數的預設值從 `0` 變更為 `1`，預設會強制執行安全傳輸連線。如需詳細資訊，請參閱[Amazon RDS 上的 MariaDB 資料庫執行個體的所有連線都需要 SSL/TLS](mariadb-ssl-connections.require-ssl.md)。

#### MariaDB 11.4.10 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.10"></a>

MariaDB 11.4.10 版現已在 Amazon RDS 上提供。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025c`。
+ 已修正可能導致某些 SQL 陳述式無法記錄在稽核日誌中的問題。

#### MariaDB 11.4.9 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.9"></a>

MariaDB 11.4.9 版現已在 Amazon RDS 上提供。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

#### MariaDB 11.4.8 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.8"></a>

MySQL 11.4.8 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

#### MariaDB 11.4.7 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.7"></a>

MySQL 11.4.7 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025b`。

#### MariaDB 11.4.5 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.5"></a>

MySQL 11.4.5 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025a`。

#### MariaDB 11.4.4 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.4"></a>

MySQL 11.4.4 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 還原了導致時間點復原 (PITR) 失敗的兩個 MariaDB 社群變更。如需詳細資訊，請參閱 [MariaDB Server Jira 發行 MDEV-35528](https://jira.mariadb.org/browse/MDEV-35528)。

#### MariaDB 10.11.16 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.16"></a>

MariaDB 10.11.16 版現已在 Amazon RDS 上提供。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025c`。
+ 已修正可能導致某些 SQL 陳述式無法記錄在稽核日誌中的問題。

#### MariaDB 10.11.15 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.15"></a>

MariaDB 10.11.15 版現已在 Amazon RDS 上提供。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

#### MariaDB 10.11.14 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.14"></a>

MySQL 10.11.14 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

#### MariaDB 10.11.13 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.13"></a>

MySQL 10.11.13 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025b`。

#### MariaDB 10.11.11 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.11"></a>

MySQL 10.11.11 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025a`。

#### MariaDB 10.11.10 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.10"></a>

MySQL 10.11.10 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 還原了導致時間點復原 (PITR) 失敗的兩個 MariaDB 社群變更。如需詳細資訊，請參閱 [MariaDB Server Jira 發行 MDEV-35528](https://jira.mariadb.org/browse/MDEV-35528)。

#### MariaDB 10.6.25 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.25"></a>

MariaDB 10.6.25 版現已在 Amazon RDS 上提供。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025c`。
+ 已修正可能導致某些 SQL 陳述式無法記錄在稽核日誌中的問題。

#### MariaDB 10.6.24 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.24"></a>

MariaDB 10.6.24 版現已在 Amazon RDS 上提供。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

#### MariaDB 10.6.23 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.23"></a>

MySQL 10.6.23 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

#### MariaDB 10.6.22 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.22"></a>

MySQL 10.6.22 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025b`。

#### MariaDB 10.6.21 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.21"></a>

MySQL 10.6.21 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025a`。

#### MariaDB 10.6.20 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.20"></a>

MySQL 10.6.20 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 還原了導致時間點復原 (PITR) 失敗的兩個 MariaDB 社群變更。如需詳細資訊，請參閱 [MariaDB Server Jira 發行 MDEV-35528](https://jira.mariadb.org/browse/MDEV-35528)。

#### MariaDB 10.5.29 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.29"></a>

MySQL 10.5.29 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025b`。

#### MariaDB 10.5.28 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.28"></a>

MySQL 10.5.28 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 更新了時區資訊，使其基於 `tzdata2025a`。

#### MariaDB 10.5.27 版
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.27"></a>

MySQL 10.5.27 版現已可在 Amazon RDS 上使用。此版本包含由 MariaDB 社群和 Amazon RDS 新增的修正和改進。

**新功能和增強功能**
+ 還原了導致時間點復原 (PITR) 失敗的兩個 MariaDB 社群變更。如需詳細資訊，請參閱 [MariaDB Server Jira 發行 MDEV-35528](https://jira.mariadb.org/browse/MDEV-35528)。

## Amazon RDS 上支援的 MariaDB 主要版本
<a name="MariaDB.Concepts.VersionMgmt.ReleaseCalendar"></a>

RDS for MariaDB 主要版本至少在對應社群版本的生命週期結束前都會保持可用。您可以使用下列日期來規劃測試和升級週期。如果 Amazon 延長對 RDS for MariaDB 版本的支援時間超過原先聲明的時間，我們計劃更新此表格以反映後來的日期。

**注意**  
只有月份和年份的日期是近似值，並會在已知確切日期時進行更新。  
您也可以執行 [describe-db-major-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-major-engine-versions.html) AWS CLI 命令或使用 [DescribeDBMajorEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBMajorEngineVersions.html) RDS API 操作，檢視主要引擎版本支援日期的相關資訊。


| MariaDB 主要版本 | 社群發佈日期 | RDS 發佈日期 | 社群生命週期結束日期 | RDS 標準支援結束日期 | 
| --- | --- | --- | --- | --- | 
|  MariaDB 11.8  |  2025 年 8 月 6 日  |  2025 年 8 月 25 日  |  2030 年 6 月  |  2030 年 6 月  | 
|  MariaDB 11.4  |  2024 年 8 月 8 日  |  2024 年 10 月 15 日  |  2029 年 5 月  |  2029 年 5 月  | 
|  MariaDB 10.11  |  2023 年 2 月 16 日  |  2023 年 8 月 21 日  |  2028 年 2 月 16 日  |  2028 年 2 月  | 
|  MariaDB 10.6  |  2021 年 7 月 6 日  |  2022 年 2 月 3 日  |  2026 年 7 月 6 日  |  2026 年 8 月  | 
|  MariaDB 10.5  |  2020 年 6 月 24 日  |  2021 年 1 月 21 日  |  2025 年 6 月 24 日  |  2026 年 8 月  | 

## 使用資料庫預覽環境
<a name="mariadb-working-with-the-database-preview-environment"></a>

資料庫預覽環境中的 RDS for MariaDB 資料庫執行個體是類似於其他 RDS for MariaDB 執行個體的功能。不過，您無法將資料庫預覽環境用於生產工作負載。

預覽環境具有下列限制：
+ Amazon RDS 會在您建立資料庫執行個體後 60 天將其全部刪除，也會一併刪除任何備份和快照。
+ 您只能使用一般用途 SSD 和佈建 IOPS SSD 儲存裝置。
+ 您無法從 支援 資料庫執行個體取得協助。反之，您可以將問題發佈至 AWS受管問答社群 [AWS re：Post](https://repost.aws/tags/TAsibBK6ZeQYihN9as4S_psg/amazon-relational-database-service)。
+ 您無法將資料庫執行個體的快照複製到生產環境。

預覽版支援下列選項。
+ 您可以使用 db.m6i、db.r6i、db.m6g、db.m5、db.t3、db.r6g 和 db.r5 資料庫執行個體類別建立資料庫執行個體。如需 RDS 執行個體類別的詳細資訊，請參閱[ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。
+ 您可以同時使用單一可用區和多可用區域部署。
+ 您可以使用標準 MariaDB 傾印和載入函數，從資料庫預覽環境匯出資料庫，或將資料庫匯入至資料庫預覽環境。

### 資料庫預覽環境中不支援的功能
<a name="mariadb-preview-environment-exclusions"></a>

資料庫預覽環境中無法使用下列功能：
+ 跨區域快照複製
+ 跨區域僅供讀取複本
+ RDS Proxy

### 在資料庫預覽環境中建立新的資料庫執行個體
<a name="mariadb-create-db-instance-in-preview-environment"></a>

您可以使用 AWS CLI、 AWS 管理主控台或 RDS API 在資料庫預覽環境中建立資料庫執行個體。

#### 主控台
<a name="mariadb-create-db-instance-in-preview-environment.CON"></a>

**在資料庫預覽環境中建立資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 開啟 Amazon RDS 主控台。

1. 從導覽窗格中選擇 **Dashboards (儀表板)**。

1. 在**儀表板**頁面中，找出**資料庫預覽環境**區段，如下圖所示。  
![\[Amazon RDS 主控台中包含連結的資料庫預覽環境區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/preview-environment-dashboard.png)

   您可以直接導覽至[資料庫預覽環境](https://us-east-2.console.aws.amazon.com/rds-preview/home?region=us-east-2#)。在繼續之前，您必須確認並接受限制。  
![\[資料庫預覽環境服務協議對話方塊，以確認限制。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/preview-environment-console.png)

1. 若要建立 RDS for MariaDB 資料庫執行個體，請遵循與建立任何 Amazon RDS 資料庫執行個體相同的程序。如需詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 中的 [主控台](USER_CreateDBInstance.md#USER_CreateDBInstance.CON) 程序。

#### AWS CLI
<a name="mariadb-create-db-instance-in-preview-environment.CLI"></a>

若要使用 在資料庫預覽環境中建立資料庫執行個體 AWS CLI，請使用下列端點。

```
rds-preview.us-east-2.amazonaws.com
```

若要建立 RDS for MariaDB 資料庫執行個體，請遵循與建立任何 Amazon RDS 資料庫執行個體相同的程序。如需詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 中的 [AWS CLI](USER_CreateDBInstance.md#USER_CreateDBInstance.CLI) 程序。

#### RDS API
<a name="mariadb-create-db-instance-in-preview-environment.API"></a>

若要使用 RDS API，在資料庫預覽環境中建立執行個體，請使用下列端點。

```
rds-preview.us-east-2.amazonaws.com
```

若要建立 RDS for MariaDB 資料庫執行個體，請遵循與建立任何 Amazon RDS 資料庫執行個體相同的程序。如需詳細資訊，請參閱 [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) 中的 [RDS API](USER_CreateDBInstance.md#USER_CreateDBInstance.API) 程序。

## 資料庫預覽環境中的 MariaDB 11.7 版
<a name="mariadb-preview-environment-version-11-7"></a>

MariaDB 11.7 版現可在 Amazon RDS 資料庫預覽環境中使用。MariaDB 11.7 版包含 [MariaDB 11.7 中的變更與改善項目](https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-7/)中所述的數個改善項目。此版本也包含對向量資料類型、索引和搜尋的支援。如需詳細資訊，請參閱 MariaDB 文件中的[向量概觀](https://mariadb.com/kb/en/vector-overview/)。

您可以使用 Database Preview 環境來針對此版本測試工作負載，然後再讓所有 AWS 區域 可用於生產工作負載。如需資料庫預覽環境的相關資訊，請參閱 [使用資料庫預覽環境](#mariadb-working-with-the-database-preview-environment)。若要從主控台存取預覽環境，請選取 [rds-preview/](https://console.aws.amazon.com/rds-preview/)。

## Amazon RDS for MariaDB 的已取代版本
<a name="MariaDB.Concepts.DeprecatedVersions"></a>

Amazon RDS for MariaDB 10.0、10.1、10.2 和 10.3 版已棄用。

如需適用於 MariaDB 的 Amazon RDS 淘汰政策相關資訊，請參閱 [Amazon RDS 常見問答集](https://aws.amazon.com/rds/faqs/)。

# 連線至您的 MariaDB 資料庫執行個體
<a name="USER_ConnectToMariaDBInstance"></a>

當 Amazon RDS 佈建您的資料庫執行個體後，您就可以使用任何標準 MariaDB 用戶端應用程式或公用程式來連接至執行個體。在連線字串中，指定來自主要執行個體端點的網域名稱系統 (DNS) 位址做為主機參數。您也指定來自資料庫執行個體端點的連接埠號碼做為連接埠參數。

您能夠利用 MySQL 命令列用戶端等工具，藉此連接至 Amazon RDS for MariaDB 資料庫執行個體。如需有關使用 MySQL 命令列用戶端的詳細資訊，請參閱 MariaDB 文件中的 [mysql 命令列用戶端](http://mariadb.com/kb/en/mariadb/mysql-command-line-client/)。您可以用來連線的一個 GUI 應用程式是 Heidi。如需詳細資訊，請參閱[下載 HeidiSQL](http://www.heidisql.com/download.php) 頁面。如需安裝 MySQL (包括 MySQL 命令列用戶端) 的資訊，請參閱[安裝和升級 MySQL](https://dev.mysql.com/doc/refman/8.0/en/installing.html)。

大多數的 Linux 發行版均包括 MariaDB 用戶端，而不是 Oracle MySQL 用戶端。若要在 Amazon Linux 2023 上安裝 MySQL 命令列用戶端，請執行下列命令：

```
sudo dnf install mariadb105
```

若要在 Amazon Linux 2 上安裝 MySQL 命令列用戶端，請執行下列命令：

```
sudo yum install mariadb
```

若要在大多數以 Debian 為基礎的 Linux 發行版上安裝 MySQL 命令列用戶端，請執行下列命令。

```
apt-get install mariadb-client
```

若要檢查 MySQL 命令列用戶端的版本，請執行下列命令。

```
mysql --version
```

若要讀取目前用戶端版本的 MySQL 文件，請執行下列命令。

```
man mysql
```

若要基於 Amazon VPC 從 Virtual Private Cloud (VPC) 外部連線至資料庫執行個體，資料庫執行個體必須可公開存取。此外，必須使用資料庫執行個體安全群組的入站規則授予存取權，且必須符合其他需求。如需更多詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。

您可以在 MariaDB 資料庫執行個體的連線上使用 SSL 加密。如需相關資訊，請參閱[Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。](MariaDB.Concepts.SSLSupport.md)。

若要尋找並連線至 RDS for MariaDB 資料庫執行個體，請參閱下列主題。

**Topics**
+ [尋找 MariaDB 資料庫執行個體的連線資訊](USER_ConnectToMariaDBInstance.EndpointAndPort.md)
+ [從 MySQL 命令列用戶端 (未加密) 進行 RDS for MariaDB 的連線](USER_ConnectToMariaDBInstance.CLI.md)
+ [使用 AWS JDBC 驅動程式和 AWS Python 驅動程式連線至 RDS for MariaDB；](MariaDB.Connecting.Drivers.md)
+ [對 MariaDB 資料庫執行個體的連線進行故障診斷](USER_ConnectToMariaDBInstance.Troubleshooting.md)

# 尋找 MariaDB 資料庫執行個體的連線資訊
<a name="USER_ConnectToMariaDBInstance.EndpointAndPort"></a>

資料庫執行個體的連線資訊包括其端點、連接埠，以及有效的資料庫使用者，例如主要使用者。例如，假設端點值為 `mydb.123456789012.us-east-1.rds.amazonaws.com`。在此情況下，連接埠值為 `3306`，資料庫使用者為 `admin`。藉由此資訊，您可以在連線字串中指定下列值：
+ 對於主機或主機名稱或 DNS 名稱，請指定 `mydb.123456789012.us-east-1.rds.amazonaws.com`。
+ 對於連接埠，指定 `3306`。
+ 對於使用者，請指定 `admin`。

若要連線到資料庫執行個體，請針對 MariaDB 資料庫引擎使用任何用戶端。例如，您可以使用 MySQL 命令列用戶端或 MySQL 工作台。

若要尋找資料庫執行個體的連線資訊，您可以使用 AWS 管理主控台、AWS Command Line Interface (AWS CLI) [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令或 Amazon RDS API [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 操作來列出其詳細資訊。

## 主控台
<a name="USER_ConnectToMariaDBInstance.EndpointAndPort.Console"></a>

**在 AWS 管理主控台 中尋找資料庫執行個體的連線資訊**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫) 以顯示資料庫執行個體的清單。

1. 選擇 MariaDB 資料庫執行個體名稱以顯示其詳細資訊。

1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[Amazon RDS 主控台中的資料庫執行個體的端點和連接埠。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/endpoint-port.png)

1. 如果您需要尋找主要使用者名稱，請選擇 **Configuration** (組態) 索引標籤並檢視 **Master username** (主要使用者名稱) 值。

## AWS CLI
<a name="USER_ConnectToMariaDBInstance.EndpointAndPort.CLI"></a>

若要使用 AWS CLI 尋找 MariaDB 資料庫執行個體的連線資訊，請執行 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令。在呼叫中，查詢資料庫執行個體 ID、端點、連接埠和主要使用者名稱。

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-instances \
  --filters "Name=engine,Values=mariadb" \
  --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"
```

針對 Windows：

```
aws rds describe-db-instances ^
  --filters "Name=engine,Values=mariadb" ^
  --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"
```

輸出內容應如下所示：

```
[
    [
        "mydb1",
        "mydb1.123456789012.us-east-1.rds.amazonaws.com",
        3306,
        "admin"
    ],
    [
        "mydb2",
        "mydb2.123456789012.us-east-1.rds.amazonaws.com",
        3306,
        "admin"
    ]
]
```

## RDS API
<a name="USER_ConnectToMariaDBInstance.EndpointAndPort.API"></a>

若要使用 Amazon RDS API 尋找資料庫執行個體的連線資訊，請呼叫 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 操作。在輸出中，尋找端點地址、端點連接埠和主要使用者名稱的值。

# 從 MySQL 命令列用戶端 (未加密) 進行 RDS for MariaDB 的連線
<a name="USER_ConnectToMariaDBInstance.CLI"></a>

**重要**  
僅當用戶端和伺服器位於同一 VPC 且網路受信任時，才使用未加密的 MySQL 連線。如需使用加密連線的詳細資訊，請參閱 [使用 SSL/TLS 從 MySQL 命令列用戶端連線至 Amazon RDS 上的 MariaDB 資料庫執行個體 (加密)](USER_ConnectToMariaDBInstanceSSL.CLI.md)。

若要使用 MySQL 命令列用戶端連線至資料庫執行個體，在用戶端電腦上的命令提示字元中輸入下列命令。如此，這就會將您連限制 MariaDB 資料庫執行個體上的資料庫。會取代您用於 *`<endpoint>`* 資料庫執行個體的 DNS 名稱 (端點)，以及取代您用於 *`<mymasteruser>`* 的主要使用者名稱。提示您輸入密碼時，請提供您使用的主要密碼。

```
mysql -h <endpoint> -P 3306 -u <mymasteruser> -p
```

輸入使用者的密碼之後，您會看到類似如下的輸出。

```
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.10-MariaDB-log Source distribution
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  
MariaDB [(none)]>
```

# 使用 AWS JDBC 驅動程式和 AWS Python 驅動程式連線至 RDS for MariaDB；
<a name="MariaDB.Connecting.Drivers"></a>

使用 AWS JDBC 驅動程式和 AWS Python 驅動程式連線至 RDS for MariaDB 資料庫執行個體。如需詳細資訊，請參閱下列主題。

**Topics**
+ [使用 Amazon Web Services (AWS) JDBC 驅動程式連線至 RDS for MariaDB](#MariaDB.Connecting.JDBCDriver)
+ [使用 Amazon Web Services (AWS) Python 驅動程式連線至 RDS for MariaDB](#MariaDB.Connecting.PythonDriver)

## 使用 Amazon Web Services (AWS) JDBC 驅動程式連線至 RDS for MariaDB
<a name="MariaDB.Connecting.JDBCDriver"></a>

Amazon Web Services (AWS) JDBC 驅動程式設計為進階 JDBC 包裝函式。此包裝函式是現有 JDBC 驅動程式的補充和延伸功能。驅動器與社群 MySQL Connector/J 驅動程式和社群 MariaDB Connector/J 驅動程式相容。

若要安裝 AWS JDBC 驅動程式，請附加 AWS JDBC 驅動程式 .jar 檔案 （位於應用程式 `CLASSPATH`)，並保留對個別社群驅動程式的參考。更新個別的連線 URL 字首，如下所示：
+ `jdbc:mysql://` 至 `jdbc:aws-wrapper:mysql://`
+ `jdbc:mariadb://` 至 `jdbc:aws-wrapper:mariadb://`

如需 AWS JDBC 驅動程式的詳細資訊和完整的使用說明，請參閱 [Amazon Web Services (AWS) JDBC 驅動程式 GitHub 儲存庫](https://github.com/awslabs/aws-advanced-jdbc-wrapper)。

## 使用 Amazon Web Services (AWS) Python 驅動程式連線至 RDS for MariaDB
<a name="MariaDB.Connecting.PythonDriver"></a>

Amazon Web Services (AWS) Python 驅動程式設計為進階 Python 包裝函式。此包裝函式是開放原始碼 Psycopg 驅動程式的補充和延伸功能。 AWS Python 驅動程式支援 Python 3.8 版和更高版本。您可以使用 `pip` 命令以及`psycopg`開放原始碼`aws-advanced-python-wrapper`套件來安裝套件。

如需 AWS Python 驅動程式的詳細資訊和完整的使用說明，請參閱 [Amazon Web Services (AWS) Python Driver GitHub 儲存庫](https://github.com/awslabs/aws-advanced-python-wrapper)。

# 對 MariaDB 資料庫執行個體的連線進行故障診斷
<a name="USER_ConnectToMariaDBInstance.Troubleshooting"></a>

無法連接至新的資料庫執行個體有下列兩個常見原因：
+ 建立資料庫執行個體所用的安全群組，未授權從執行 MariaDB 應用程式或公用程式的裝置或 Amazon EC2 執行個體進行連線。資料庫執行個體必須擁有能授權連線的 VPC 安全群組。如需詳細資訊，請參閱[Amazon VPC 和 Amazon RDS](USER_VPC.md)。

  您可以新增或編輯安全群組中的傳入規則。針對 **Source (來源)**，選擇 **My IP (我的 IP)**。此舉允許透過您的瀏覽器中偵測到的 IP 地址存取資料庫執行個體。
+ 資料庫執行個體是使用預設連接埠 3306 來建立，而公司的防火牆規則禁止從公司網路中的裝置連接至該連接埠。若要避免此失敗情況，請以不同的連接埠重新建立執行個體。

如需連線問題的詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。

# 保護 MariaDB 執行個體連線安全
<a name="securing-mariadb-connections"></a>

您可以管理 MariaDB 資料庫執行個體安全。

**Topics**
+ [Amazon RDS 上的 MariaDB 安全性](MariaDB.Concepts.UsersAndPrivileges.md)
+ [使用 RDS for MariaDB 的密碼驗證外掛程式](MariaDB.Concepts.PasswordValidationPlugins.md)
+ [在 Amazon RDS 上使用 SSL/TLS 加密對 MariaDB 資料庫執行個體的用戶端連線](mariadb-ssl-connections.md)
+ [更新應用程式，以使用新的 SSL/TLS 憑證連線至 MariaDB 執行個體](ssl-certificate-rotation-mariadb.md)

# Amazon RDS 上的 MariaDB 安全性
<a name="MariaDB.Concepts.UsersAndPrivileges"></a>

MariaDB 資料庫執行個體的安全性有三個管理層級：
+ AWS Identity and Access Management 會控管能在資料庫執行個體上執行 Amazon RDS 管理動作的對象。當您使用 IAM 登入資料連線至 AWS 時，IAM 帳戶必須具備能授予所需許可的 IAM 政策，才能執行 Amazon RDS 管理操作。如需更多詳細資訊，請參閱 [Amazon RDS 的 Identity and access management](UsingWithRDS.IAM.md)。
+ 建立資料庫執行個體時，您可使用 VPC 安全群組控管哪些裝置和 Amazon EC2 執行個體可以開啟與端點和資料庫執行個體連接埠的連線。您可以使用 Secure Sockets Layer (SSL) 和 Transport Layer Security (TLS) 建立這些連線。此外，貴公司的防火牆規則可控管在公司內執行的裝置是否可開啟與資料庫執行個體的連線。
+ 對 MariaDB 資料庫執行個體建立連線之後，登入和許可的驗證方式就如同在 MariaDB 獨立執行個體中一樣。`CREATE USER`、`RENAME USER`、`GRANT`、`REVOKE` 及 `SET PASSWORD` 等命令的運作方式如同在獨立資料庫中一樣，都會直接修改資料庫結構描述資料表。

 在您建立 Amazon RDS 資料庫執行個體後，主要使用者具有下列預設權限：
+  `alter` 
+  `alter routine` 
+  `create` 
+  `create routine` 
+  `create temporary tables` 
+  `create user` 
+  `create view` 
+  `delete` 
+  `drop` 
+  `event` 
+  `execute` 
+  `grant option` 
+  `index` 
+  `insert` 
+  `lock tables` 
+  `process` 
+  `references` 
+  `reload` 

  此權限在 MariaDB 資料庫執行個體上受限。它不會授予 `FLUSH LOGS` 或 `FLUSH TABLES WITH READ LOCK` 操作的存取權。
+  `replication client` 
+  `replication slave` 
+  `select` 
+  `show create routine` 

  此權限僅適用於執行 11.4 版和更新版本的 MariaDB 資料庫執行個體。
+  `show databases` 
+  `show view` 
+  `trigger` 
+  `update` 

如需這些權限的詳細資訊，請參閱 MariaDB 文件中的[使用者帳戶管理](http://mariadb.com/kb/en/mariadb/grant/)。

**注意**  
雖然您可刪除資料庫執行個體上的主要使用者，但不建議這麼做。若要重新建立主要使用者，請使用 `ModifyDBInstance` API 或 `modify-db-instance` AWS CLI，並以適當的參數指定新的主要使用者密碼。若執行個體中不存在此主要使用者，系統會以指定的密碼建立主要使用者。

為了提供各資料庫執行個體管理服務，建立資料庫執行個體時，系統會一併建立 `rdsadmin` 使用者。若企圖移除、重新命名 `rdsadmin` 帳戶或變更其密碼或權限，皆會導致錯誤。

請限制使用標準 `kill` 和 `kill_query` 命令，藉此允許資料庫執行個體的管理操作。此外，本服務還提供適用於 MariaDB 及 MySQL 的 Amazon RDS 命令 `mysql.rds_kill`、`mysql.rds_kill_query` 與 `mysql.rds_kill_query_id`，讓您能結束資料庫執行個體上的使用者工作階段或查詢。

# 使用 RDS for MariaDB 的密碼驗證外掛程式
<a name="MariaDB.Concepts.PasswordValidationPlugins"></a>

從 RDS for MariaDB 11.4 版開始，您可以使用下列密碼驗證外掛程式來增強資料庫連線的安全性：
+ [simple\$1password\$1check](https://mariadb.com/kb/en/simple-password-check-plugin/) – 檢查密碼是否至少包含特定類型的特定字元數。
+ [cracklib\$1password\$1check](https://mariadb.com/kb/en/cracklib_password_check/) – 檢查密碼是否出現在 [CrackLib](https://github.com/cracklib/cracklib) 程式庫的字典檔案中。

若要啟用這些外掛程式，請在與資料庫執行個體相關聯的資料庫參數群組中，將參數 `simple_password_check` 或 `cracklib_password_check` 的值設為 `FORCE_PLUS_PERMANENT`。設定此值時，無法在執行時期使用 `UNINSTALL PLUGIN` 陳述式將外掛程式解除安裝。

若要停用這些外掛程式，請在與資料庫執行個體相關聯的資料庫參數群組中，將參數 `simple_password_check` 或 `cracklib_password_check` 的值設為 `OFF`。設定此值時，外掛程式驗證規則不再適用於新密碼。

如需設定參數群組中之參數值的相關資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

# 在 Amazon RDS 上使用 SSL/TLS 加密對 MariaDB 資料庫執行個體的用戶端連線
<a name="mariadb-ssl-connections"></a>

Secure Sockets Layer (SSL) 是一種產業標準通訊協定，可保護用戶端與伺服器之間的網路連線。SSL 3.0 版之後，名稱已變更為 Transport Layer Security (TLS)。Amazon RDS 支援 MariaDB 資料庫執行個體的 SSL/TLS 加密。使用 SSL/TLS，您可以加密應用程式用戶端與 MariaDB 資料庫執行個體之間的連接。SSL/TLS 支援適用於所有 AWS 區域。

透過 Amazon RDS，您可以使用 SSL/TLS 加密 MariaDB 資料庫執行個體的用戶端連線、要求 MariaDB 資料庫執行個體的所有連線都必須使用 SSL/TLS，以及使用 SSL/TLS 從 MySQL 命令列用戶端連線 (加密)，藉以保護傳輸中的資料。以下幾節提供在 Amazon RDS 上為 MariaDB 資料庫執行個體設定和使用 SSL/TLS 加密的指引。

**Topics**
+ [Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。](MariaDB.Concepts.SSLSupport.md)
+ [Amazon RDS 上的特定使用者帳戶連線至 MariaDB 資料庫執行個體時需要 SSL/TLS](MariaDB-ssl-connections.require-ssl-users.md)
+ [Amazon RDS 上的 MariaDB 資料庫執行個體的所有連線都需要 SSL/TLS](mariadb-ssl-connections.require-ssl.md)
+ [使用 SSL/TLS 從 MySQL 命令列用戶端連線至 Amazon RDS 上的 MariaDB 資料庫執行個體 (加密)](USER_ConnectToMariaDBInstanceSSL.CLI.md)

# Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。
<a name="MariaDB.Concepts.SSLSupport"></a>

當 Amazon RDS 佈建執行個體時，Amazon RDS 會建立 SSL/TLS 憑證，並將該憑證安裝在資料庫執行個體上。憑證由憑證授權機構簽署。SSL/TLS 憑證會以通用名稱 (CN) 加入資料庫執行個體端點，讓 SSL/TLS 憑證免於遭受詐騙攻擊。

Amazon RDS 建立的 SSL/TLS 憑證是可信任的根實體，應可適用於大多數情況，但若您的應用程式不接受憑證鏈結，則可能無法使用。若您的應用程式不接受憑證鏈結，請嘗試使用中繼憑證連線至您的 AWS 區域。例如，您必須使用中繼憑證，以 SSL/TLS 連線至 AWS GovCloud (US) 區域。

如需有關下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。如需在使用 SSL/TLS 搭配 MySQL 的詳細資訊，請參閱 [更新應用程式，以使用新的 SSL/TLS 憑證連線至 MariaDB 執行個體](ssl-certificate-rotation-mariadb.md)。

Amazon RDS for MariaDB 支援 Transport Layer Security (TLS) 1.3、1.2、1.1 和 1.0 版。TLS 支援取決於 MariaDB 次要版本。下表顯示 MariaDB 次要版本的 TLS 支援。


| TLS 版本控制 | MariaDB 11.8 | MariaDB 11.4 | MariaDB 10.11 | MariaDB 10.6 | MariaDB 10.5 | MariaDB 10.4 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  TLS 1.3  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  | 
|  TLS 1.2  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  | 
|  TLS 1.1  |  不支援  |  不支援  |  不支援  |  10.6.16 及更低版本  |  10.5.23 及更低版本  |  10.4.32 及更低版本  | 
|  TLS 1.0  |  不支援  |  不支援  | 不支援 | 10.6.16 及更低版本 |  10.5.23 及更低版本  |  10.4.32 及更低版本  | 

# Amazon RDS 上的特定使用者帳戶連線至 MariaDB 資料庫執行個體時需要 SSL/TLS
<a name="MariaDB-ssl-connections.require-ssl-users"></a>

指定的使用者帳戶在 Amazon RDS 上連線至您的 MariaDB 資料庫執行個體時，您可以要求 SSL/TLS 加密。保護敏感資訊不受未經授權的存取或攔截影響，對於強制執行重視資料機密性的安全政策至關重要。

若要對特定使用者的帳戶要求 SSL/TLS 連線，請根據您的 MySQL 版本使用下列其中一個陳述式，要求使用者帳戶 `encrypted_user` 必須採用 SSL/TLS 連線。

若要這麼做，請使用下列陳述式。

```
ALTER USER 'encrypted_user'@'%' REQUIRE SSL;
```

如需使用 MariaDB 的 SSL/TLS 連線詳細資訊，請參閱 MariaDB 文件中的[保護用戶端和伺服器的連線](https://mariadb.com/kb/en/securing-connections-for-client-and-server/)。

# Amazon RDS 上的 MariaDB 資料庫執行個體的所有連線都需要 SSL/TLS
<a name="mariadb-ssl-connections.require-ssl"></a>

使用 `require_secure_transport` 參數來要求使用者與 MariaDB 資料庫執行個體的所有連線都使用 SSL/TLS。對於 11.4 版和更早版本，`require_secure_transport` 參數預設為 `OFF`。對於 11.8 和更新版本，預設值設定為 `ON`，強制執行 SSL/TLS 以連線至資料庫執行個體。如果需要不安全的連線，您可以將 `require_secure_transport` 參數變更為 `OFF`。

**注意**  
僅 MariaDB 10.5 版和更新版本支援 `require_secure_transport` 參數。

您可以更新資料庫執行個體的資料庫參數群組，以設定 `require_secure_transport` 參數值。您不需要重新啟動資料庫執行個體，變更即可生效。

當資料庫執行個體的 `require_secure_transport` 參數設為 `ON` 時，如果可以建立加密的連線，則資料庫用戶端即可連線到該資料庫叢集。否則，類似下列內容的錯誤訊息會傳回至用戶端：

```
ERROR 1045 (28000): Access denied for user 'USER'@'localhost' (using password: YES | NO)
```

如需有關設定參數的詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

如需 `require_secure_transport` 參數的詳細資訊，請參閱 [MariaDB 文件](https://mariadb.com/docs/ent/ref/mdb/system-variables/require_secure_transport/)。

# 使用 SSL/TLS 從 MySQL 命令列用戶端連線至 Amazon RDS 上的 MariaDB 資料庫執行個體 (加密)
<a name="USER_ConnectToMariaDBInstanceSSL.CLI"></a>

如果您使用的是 MySQL 5.7 版、MySQL 8.0 版或 MariaDB 版本，`mysql` 用戶端程式的參數略有不同。

若要找出您擁有的版本，請執行具有 `--version` 選項的 `mysql` 命令。在以下範例中，輸出顯示了用戶端程式是來自 MariaDB。

```
$ mysql --version
mysql  Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1
```

大多數 Linux 發行版本，例如 Amazon Linux、CentOS、SUSE 和 Debian 都用 MariaDB 取代 MySQL，而且發行版本中的 `mysql` 版是來自 MariaDB。

若要使用 SSL/TLS 連線到資料庫執行個體，請執行以下步驟：

**使用 MySQL 命令列用戶端搭配 SSL/TLS 連接至資料庫執行個體**

1. 下載適用於所有 的根憑證 AWS 區域。

   如需有關下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

1. 使用 MySQL 命令列用戶端搭配 SSL/TLS 加密連接至資料庫執行個體。在 `-h` 參數中，將 DNS 名稱 (端點) 取代為您的資料庫執行個體。在 `--ssl-ca` 參數中，取代 SSL/TLS 憑證檔名稱。在 `-P` 參數中，取代為您的資料庫執行個體連接埠。在 `-u` 參數中，請以有效資料庫使用者取代使用者名稱，例如主要使用者。出現提示時，輸入主要使用者密碼。

   下列範例顯示如何對於 MariaDB 用戶端更新的版本使用 `--ssl-ca` 參數啟動用戶端：

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p
   ```

   若要要求 SSL/TLS 連線根據 SSL/TLS 憑證中的端點來驗證資料庫執行個體端點，請輸入下列命令：

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-verify-server-cert -P 3306 -u myadmin -p
   ```

   下列範例顯示如何對於 MySQL 5.7 用戶端更新的版本使用 `--ssl-ca` 參數啟動用戶端：

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p
   ```

1. 出現提示時，輸入主要使用者密碼。

您應該會看到類似下列的輸出。

```
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.10-MariaDB-log Source distribution
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
```

# 更新應用程式，以使用新的 SSL/TLS 憑證連線至 MariaDB 執行個體
<a name="ssl-certificate-rotation-mariadb"></a>

自 2023 年 1 月 13 日起，Amazon RDS 已發佈新的憑證認證機構 (CA) 憑證，使用 Secure Socket Layer 或 Transport Layer Security (SSL/TLS) 來連線至 RDS 資料庫執行個體。接下來，您可以找到更新應用程式使用新憑證的相關資訊。

本主題可協助您決定應用程式是否需要驗證憑證，才能連線至您的資料庫執行個體。

**注意**  
有些應用程式設定為只有在成功驗證伺服器上的憑證時，才能連線至 MariaDB。對於這些應用程式，您必須更新用戶端應用程式信任存放區來包含新的 CA 憑證。  
您可以指定下列 SSL 模式：`disabled`、`preferred` 及 `required`。當您使用 `preferred` SSL 模式且 CA 憑證不存在或不是最新版本時，連線會回復為未使用 SSL，並且仍然成功連線。  
我們建議您避免使用 `preferred` 模式。在 `preferred` 模式中，如果連線遇到無效憑證，則會停止使用加密並繼續使用未加密連線。

更新用戶端應用程式信任存放區中的 CA 憑證之後，您就可以在資料庫執行個體輪換憑證。強烈建議先在開發或預備環境中測試這些步驟，再於生產環境中實作。

如需憑證輪換的詳細資訊，請參閱[輪換您的 SSL/TLS 憑證](UsingWithRDS.SSL-certificate-rotation.md)。如需下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。如需對 MariaDB 資料庫執行個體使用 SSL/TLS 的資訊，請參閱[Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。](MariaDB.Concepts.SSLSupport.md)。

**Topics**
+ [判斷用戶端是否需要驗證憑證才能連線](#ssl-certificate-rotation-mariadb.determining)
+ [更新應用程式信任存放區](#ssl-certificate-rotation-mariadb.updating-trust-store)
+ [建立 SSL 連線的 Java 程式碼範例](#ssl-certificate-rotation-mariadb.java-example)

## 判斷用戶端是否需要驗證憑證才能連線
<a name="ssl-certificate-rotation-mariadb.determining"></a>

您可以檢查 JDBC 用戶端和 MySQL 用戶端是否需要驗證憑證才能連線。

### JDBC
<a name="ssl-certificate-rotation-mysql.determining-client.jdbc"></a>

以下 MySQL Connector/J 8.0 範例指出一種方式來檢查應用程式的 JDBC 連線屬性，以判斷是否需要有效憑證才能成功連線。如需 MySQL 的所有 JDBC 連線選項的詳細資訊，請參閱 MySQL 文件中的[組態屬性](https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html)。

使用 MySQL Connector/J 8.0 時，如果連線屬性的 `sslMode` 設為 `VERIFY_CA` 或 `VERIFY_IDENTITY`，則需要以伺服器 CA 憑證來驗證 SSL 連線，如下列範例所示。

```
Properties properties = new Properties();
properties.setProperty("sslMode", "VERIFY_IDENTITY");
properties.put("user", DB_USER);
properties.put("password", DB_PASSWORD);
```

**注意**  
如果您使用 MySQL Java Connector v5.1.38 或更高版本，或 MySQL Java Connector v8.0.9 或更高版本來連線至您的資料庫，即使您尚未明確設定應用程式在連線到資料庫時使用 SSL/TLS，這些用戶端驅動程式會預設為使用 SSL/TLS。此外，使用 SSL/TLS 時，它們會執行部分憑證驗證，如果資料庫伺服器憑證已過期，則無法連線。  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

### MySQL
<a name="ssl-certificate-rotation-mysql.determining-client.mysql"></a>

以下 MySQL 用戶端範例指出兩種方式來檢查指令碼的 MySQL 連線，以判斷是否需要有效憑證才能成功連線。如需 MySQL 用戶端所有連線選項的詳細資訊，請參閱 MySQL 文件中的[加密連線的用戶端組態](https://dev.mysql.com/doc/refman/en/using-encrypted-connections.html#using-encrypted-connections-client-side-configuration)。

使用 MySQL 5.7 或 MySQL 8.0 用戶端時，如果您將 `--ssl-mode` 選項指定為 `VERIFY_CA` 或 `VERIFY_IDENTITY`，則需要以伺服器 CA 憑證來驗證 SSL 連線，如下列範例所示。

```
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-mode=VERIFY_CA                
```

使用 MySQL 5.6 用戶端時，如果您指定 `--ssl-verify-server-cert` 選項，則需要以伺服器 CA 憑證來驗證 SSL 連線，如下列範例所示。

```
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-verify-server-cert            
```

## 更新應用程式信任存放區
<a name="ssl-certificate-rotation-mariadb.updating-trust-store"></a>

如需為 MySQL 應用程式更新信任存放區的資訊，請參閱 MariaDB 文件中的[搭配 MariaDB Connector/J 使用 TLS/SSL](https://mariadb.com/kb/en/library/using-tls-ssl-with-mariadb-java-connector/)。

如需下載根憑證的資訊，請參閱 [使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

如需匯入憑證的範例指令碼，請參閱 [將憑證匯入信任存放區的範例指令碼](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script)。

**注意**  
更新信任存放區時，除了新增憑證，您還可以保留舊憑證。

如果您在應用程式中使用 MariaDB Connector/J JDBC 驅動程式，請在應用程式中設定下列屬性。

```
System.setProperty("javax.net.ssl.trustStore", certs);
System.setProperty("javax.net.ssl.trustStorePassword", "password");
```

啟動應用程式時，設定下列屬性。

```
java -Djavax.net.ssl.trustStore=/path_to_truststore/MyTruststore.jks -Djavax.net.ssl.trustStorePassword=my_truststore_password com.companyName.MyApplication        
```

**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

## 建立 SSL 連線的 Java 程式碼範例
<a name="ssl-certificate-rotation-mariadb.java-example"></a>

下列程式碼範例示範如何使用 JDBC 來設定 SSL 連線。

```
private static final String DB_USER = "admin";

        private static final String DB_USER = "user name";
        private static final String DB_PASSWORD = "password";
        // This key store has only the prod root ca.
        private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore";
        private static final String KEY_STORE_PASS = "keystore-password";
        
    public static void main(String[] args) throws Exception {
        Class.forName("org.mariadb.jdbc.Driver");

        System.setProperty("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH);
        System.setProperty("javax.net.ssl.trustStorePassword", KEY_STORE_PASS);

        Properties properties = new Properties();
        properties.put("user", DB_USER);
        properties.put("password", DB_PASSWORD);


        Connection connection = DriverManager.getConnection("jdbc:mysql://ssl-mariadb-public.cni62e2e7kwh.us-east-1.rds.amazonaws.com:3306?useSSL=true",properties);
        Statement stmt=connection.createStatement();

        ResultSet rs=stmt.executeQuery("SELECT 1 from dual");

        return;
    }
```

**重要**  
在確定了資料庫連線使用 SSL/TLS 並已更新應用程式信任存放區之後，您可以將資料庫更新為使用 rds-ca-rsa2048-g1 憑證。如需說明，請參閱[透過修改資料庫執行個體或叢集來更新憑證授權機構憑證](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating)中的步驟 3。  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

# 使用 Amazon RDS Optimized Reads 改善 RDS for MariaDB 的查詢效能
<a name="rds-optimized-reads-mariadb"></a>

您可以使用 Amazon RDS Optimized Reads，為 RDS for MariaDB 實現更快的查詢處理。使用 RDS Optimized Reads 的 RDS for MariaDB 資料庫執行個體，相較於不使用它的情況，查詢處理速度最高可以快上 2 倍。

**Topics**
+ [RDS Optimized Reads 的概觀](#rds-optimized-reads-mariadb-overview)
+ [RDS Optimized Reads 的使用案例](#rds-optimized-reads-mariadb-use-cases)
+ [RDS Optimized Reads 的最佳實務](#rds-optimized-reads-mariadb-best-practices)
+ [使用 RDS Optimized Reads](#rds-optimized-reads-mariadb-using)
+ [監控使用 RDS Optimized Reads 的資料庫執行個體](#rds-optimized-reads-mariadb-monitoring)
+ [RDS Optimized Reads 的限制](#rds-optimized-reads-mariadb-limitations)

## RDS Optimized Reads 的概觀
<a name="rds-optimized-reads-mariadb-overview"></a>

當您使用已開啟 RDS Optimized Reads 的 RDS for MariaDB 資料庫執行個體時，您的資料庫執行個體可透過使用執行個體儲存體實現更快的查詢效能。*執行個體存放區*為資料庫執行個體提供暫時的區塊層級儲存空間。儲存體位於實際連接至主機伺服器的非揮發性記憶體儲存裝置 (NVMe) 固態硬碟 (SSD) 中。此儲存體已針對低延遲、高隨機 I/O 效能，以及高循序讀取輸送量進行最佳化。

當資料庫執行個體使用資料庫執行個體類別搭配執行個體儲存體 (例如 db.m5d 或 db.m6gd) 時，預設會開啟 RDS Optimized Reads。使用 RDS Optimized Reads，部分臨時物件會存放在執行個體儲存體上。這些暫存物件包括內部暫存檔、內部磁碟上暫存資料表、記憶體對應檔案，以及二進位日誌 (binlog) 快取檔案。如需執行個體儲存體的詳細資訊，請參閱《適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南》**中的 [Amazon EC2 執行個體儲存體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)。

在 MariaDB 中產生臨時物件以進行查詢處理的工作負載，可以利用執行個體儲存體來加快查詢處理速度。這種類型的工作負載包括涉及排序、雜湊彙總、高負載聯結、一般資料表運算式 (CTE) 的查詢，以及未編製索引之資料欄上的查詢。無論用於持久性 Amazon EBS 儲存體的儲存體組態為何，這些執行個體儲存體都會提供更高的 IOPS 和效能。因為 RDS Optimized Reads 將臨時物件上的操作卸載至執行個體儲存體，所以持久性儲存體 (Amazon EBS) 的每秒讀寫次數 (IOPS)或輸送量現在可以用於持久性物件上的操作。這些操作包括一般資料檔案讀取和寫入，以及背景引擎操作，例如排清和插入緩衝區合併。

**注意**  
手動和自動 RDS 快照都只包含持久性物件的引擎檔案。在執行個體儲存體中建立的臨時物件不會包含在 RDS 快照集中。

## RDS Optimized Reads 的使用案例
<a name="rds-optimized-reads-mariadb-use-cases"></a>

如果您的工作負載嚴重依賴臨時物件 (例如內部資料表或檔案) 進行其查詢執行，則您可以從開啟 RDS Optimized Reads 中獲益。下列使用案例為 RDS Optimized Reads 的候選項目：
+ 使用複雜的一般資料表運算式 (CTE)、衍生資料表和群組操作來執行分析查詢的應用程式
+ 使用未最佳化查詢提供大量讀取流量的僅供讀取複本
+ 執行涉及複雜作業之隨需或動態報告查詢的應用程式，例如搭配 `GROUP BY` 和 `ORDER BY` 子句的查詢
+ 使用內部暫存資料表進行查詢處理的工作負載

  您可以監控引擎狀態變數 `created_tmp_disk_tables`，以判斷在資料庫執行個體上建立的磁碟型暫存資料表數目。
+ 直接或在程序中建立大型暫存資料表以儲存中繼結果的應用程式
+ 對未編製索引之資料欄執行分組或排序的資料庫查詢

## RDS Optimized Reads 的最佳實務
<a name="rds-optimized-reads-mariadb-best-practices"></a>

請使用 RDS Optimized Reads 的下列最佳實務：
+ 針對唯讀查詢新增重試邏輯，以防這些查詢在執行期間由於執行個體儲存體已滿而失敗。
+ 使用 CloudWatch 指標 `FreeLocalStorage` 監控執行個體儲存體上的可用儲存空間。如果執行個體儲存體由於資料庫執行個體的工作負載而達到其限制，請修改資料庫執行個體，以使用較大的資料庫執行個體類別。
+ 當您的資料庫執行個體有足夠的記憶體，但仍達到執行個體儲存體的儲存限制時，請增加 `binlog_cache_size` 值以在記憶體中維護工作階段特定的 binlog 項目。此組態可防止將 binlog 項目寫入至磁碟上的暫存 binlog 快取檔案。

  `binlog_cache_size` 參數是工作階段特有的。您可以變更每個新工作階段的值。此參數的設定可以在尖峰工作負載期間增加資料庫執行個體的記憶體使用率。因此，請考慮根據您應用程式的工作負載模式和資料庫執行個體上的可用記憶體來增加參數值。
+ 將 `MIXED` 的預設值用於 `binlog_format`。根據交易的大小，將 `binlog_format` 設為 `ROW` 可能會在執行個體儲存體上產生大型 binlog 快取檔案。
+ 避免在單一交易中執行大量變更。這些類型的交易可能會在執行個體儲存體上產生大型 binlog 快取檔案，並在執行個體儲存體已滿時產生問題。請考慮將寫入分割成多個小型交易，以將 binlog 快取檔案使用的儲存體減至最少。

## 使用 RDS Optimized Reads
<a name="rds-optimized-reads-mariadb-using"></a>

當您在單一可用區域資料庫執行個體部署或多可用區域資料庫執行個體部署中，佈建具有下列其中一個資料庫執行個體類別的 RDS for MariaDB 資料庫執行個體時，資料庫執行個體會自動使用 RDS Optimized Reads。

若要開啟 RDS Optimized Reads，請執行下列其中一項：
+ 使用其中一個資料庫執行個體類別，建立 RDS for MariaDB 資料庫執行個體。如需詳細資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 修改現有的 RDS for MariaDB 資料庫執行個體，以使用其中一個資料庫執行個體類別。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

RDS Optimized Reads 適用於支援 AWS 區域 一或多個具有本機 NVMe SSD 儲存體的資料庫執行個體類別的所有 。如需資料庫執行個體類別的相關資訊，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。

資料庫執行個體類別可用性會有所不同 AWS 區域。若要判斷特定 是否支援資料庫執行個體類別 AWS 區域，請參閱 [在 中判斷資料庫執行個體類別支援 AWS 區域](Concepts.DBInstanceClass.RegionSupport.md)。

如果您不想要使用 RDS Optimized Reads，請修改資料庫執行個體，以便其不使用支援該功能的資料庫執行個體類別。

## 監控使用 RDS Optimized Reads 的資料庫執行個體
<a name="rds-optimized-reads-mariadb-monitoring"></a>

您可以透過下列 CloudWatch 指標，監控使用 RDS Optimized Reads 的資料庫執行個體：
+ `FreeLocalStorage`
+ `ReadIOPSLocalStorage`
+ `ReadLatencyLocalStorage`
+ `ReadThroughputLocalStorage`
+ `WriteIOPSLocalStorage`
+ `WriteLatencyLocalStorage`
+ `WriteThroughputLocalStorage`

這些指標提供可用執行個體儲存體、IOPS 和輸送量的相關資料。如需這些指標的詳細資訊，請參閱 [Amazon RDS 的 Amazon CloudWatch 執行個體層級指標](rds-metrics.md#rds-cw-metrics-instance)。

## RDS Optimized Reads 的限制
<a name="rds-optimized-reads-mariadb-limitations"></a>

下列限制適用於 RDS Optimized Reads：
+ 下列 RDS for MariaDB 版本支援 RDS Optimized Reads:
  + 11.4 和更高主要版本的所有可用次要版本
  + 10.11.4 和更高的 10.11 版本
  + 10.6.7 和更新的 10.6 版本
  + 10.5.16 和更新的 10.5 版本
  + 10.4.25 和更新的 10.4 版本

  如需 RDS for MariaDB 版本的相關資訊，請參閱 [Amazon RDS 上的 MariaDB 版本](MariaDB.Concepts.VersionMgmt.md)。
+ 您無法在支援 RDS Optimized Reads 的資料庫執行個體類別上，將臨時物件的位置變更為持久性儲存體 (Amazon EBS)。
+ 在資料庫執行個體上啟用二進位記錄時，交易大小上限受執行個體儲存體的大小限制。在 MariaDB 中，任何需要儲存體超過 `binlog_cache_size` 寫入交易值的工作階段，都會變更為暫存 binlog 快取檔案，這些檔案是在執行個體儲存體上建立的。
+ 執行個體儲存體已滿時，交易會失敗。

# 使用 Amazon RDS Optimized Writes 改善 MariaDB 的寫入效能
<a name="rds-optimized-writes-mariadb"></a>

您可以使用 RDS Optimized Writes for MariaDB 來改善寫入交易的效能。當您的 RDS for MariaDB 資料庫使用 RDS Optimized Writes 時，它可以實現高達兩倍的寫入交易輸送量。

**Topics**
+ [RDS Optimized Writes 的概觀](#rds-optimized-writes-overview)
+ [使用 RDS Optimized Writes](#rds-optimized-writes-using-mariadb)
+ [在現有資料庫上啟用 RDS Optimized Writes](#rds-optimized-writes-modify-enable-mariadb)
+ [RDS Optimized Writes 的限制](#rds-optimized-writes-limitations-mariadb)

## RDS Optimized Writes 的概觀
<a name="rds-optimized-writes-overview"></a>

當您開啟 RDS Optimized Writes 時，您的 RDS for MariaDB 資料庫只會在將資料排清至持久性儲存體時寫入一次，而不需要雙寫緩衝區。資料庫會繼續為可靠的資料庫交易提供 ACID 屬性保護，以及改善的效能。

關聯式資料庫 (例如 MariaDB) 為可靠的資料庫交易提供不可分割性、一致性、隔離和耐久性的 *ACID 屬性*。為了協助提供這些屬性，MariaDB 會使用稱為*雙寫緩衝區*的資料儲存區域，防止部分頁面寫入錯誤。當資料庫正在更新頁面時發生硬體故障 (例如停電) 時，就會發生這些錯誤。MariaDB 資料庫可以偵測部分頁面寫入，並使用雙寫緩衝區中的頁面複本進行復原。雖然這項技術可提供保護，但也會產生額外的寫入操作。如需 MariaDB 雙寫緩衝區的詳細資訊，請參閱 MariaDB 文件中的[雙寫緩衝區](https://mariadb.com/kb/en/innodb-doublewrite-buffer/)。

開啟 RDS Optimized Reads 後，您的 RDS for MariaDB 資料庫只會在將資料排清至持久性儲存體時寫入一次，而不需使用雙寫緩衝區。如果您在 RDS for MariaDB 資料庫上執行大量寫入工作負載，則 RDS Optimized Reads 很有用。具有大量寫入工作負載的資料庫範例包括支援數位支付、金融交易和遊戲應用程式的資料庫。

這些資料庫會在使用 AWS Nitro 系統的資料庫執行個體類別上執行。由於這些系統中的硬體組態，資料庫可以在一個步驟中可靠且持久地將 16 KiB 頁面直接寫入至資料檔案。 AWS Nitro 系統讓 RDS Optimized Writes 成為可能。

您可以設定新的資料庫參數 `rds.optimized_writes`，以控制 RDS for MariaDB 資料庫的 RDS Optimized Writes 功能。在下列版本的 RDS for MariaDB 的資料庫參數群組中存取此參數：
+ 11.8 所有可用的次要版本和更高的主要版本
+ 11.4.3 版和更高的 11.4 版
+ 10.11.4 和更高的 10.11 版本
+ 10.6.10 和更高的 10.6 版本

請使用下列值設定參數：
+ `AUTO` – 開啟 RDS Optimized Writes (如果資料庫支援它)。關閉 RDS Optimized Writes (如果資料庫不支援它)。此設定是預設值。
+ `OFF` – 關閉 RDS Optimized Writes，即使資料庫支援它也一樣。

如果您將設定為使用 RDS Optimized Writes 的 RDS for MariaDB 資料庫遷移至不支援此功能的資料庫執行個體類別，RDS 會自動關閉資料庫的 RDS Optimized Writes。

當 RDS Optimized Writes 關閉時，資料庫會使用 MariaDB 雙寫緩衝區。

若要判斷 RDS for MariaDB 資料庫是否使用 RDS Optimized Writes，請檢視資料庫 `innodb_doublewrite` 參數目前的值。如果資料庫使用 RDS Optimized Writes，則此參數會設為 `FALSE` (`0`)。

## 使用 RDS Optimized Writes
<a name="rds-optimized-writes-using-mariadb"></a>

當您使用 RDS 主控台 AWS CLI、 或 RDS API 建立 RDS for MariaDB 資料庫時，可以開啟 RDS Optimized Writes。在資料庫建立期間滿足下列兩個條件時，RDS Optimized Writes 會自動開啟：
+ 您指定一個支援 RDS Optimized Writes 的資料庫引擎版本和資料庫執行個體類別。
  + 下列 RDS for MariaDB 版本支援 RDS Optimized Writes：
    + 11.8 所有可用的次要版本和更高的主要版本
    + 11.4.3 版和更高的 11.4 版
    + 10.11.4 和更高的 10.11 版本
    + 10.6.10 和更高的 10.6 版本

    如需 RDS for MariaDB 版本的相關資訊，請參閱 [Amazon RDS 上的 MariaDB 版本](MariaDB.Concepts.VersionMgmt.md)。
  + 使用下列資料庫執行個體類別的 RDS for MariaDB 資料庫支援 RDS Optimized Writes：
    + db.m7i
    + db.m7g
    + db.m6g
    + DB.m6gd
    + db.m6i
    + db.m5
    + db.m5d
    + db.r7i
    + db.r7g
    + db.r6g
    + db.r6gd
    + db.r6i
    + db.r5
    + db.r5b
    + db.r5d
    + db.x2idn
    + db.x2iedn

    如需資料庫執行個體類別的相關資訊，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。

    資料庫執行個體類別可用性會有所不同 AWS 區域。若要判斷特定 是否支援資料庫執行個體類別 AWS 區域，請參閱 [在 中判斷資料庫執行個體類別支援 AWS 區域](Concepts.DBInstanceClass.RegionSupport.md)。
+ 在與資料庫相關聯的參數群組中，`rds.optimized_writes` 參數設為 `AUTO`。在預設參數群組中，此參數一律設為 `AUTO`。

如果您想要使用支援 RDS Optimized Writes 的資料庫引擎版本和資料庫執行個體類別，但不想要使用此功能，則請在建立資料庫時指定自訂參數群組。在此參數群組中，將 `rds.optimized_writes` 參數設為 `OFF`。如果您想要資料庫稍後使用 RDS Optimized Writes，則可以將參數設為 `AUTO` 將其開啟。如需建立自訂參數群組和設定參數的相關資訊，請參閱 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

如需建立資料庫執行個體的相關資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

### 主控台
<a name="rds-optimized-writes-using-console"></a>

使用 RDS 主控台建立 RDS for MariaDB 資料庫時，您可以篩選支援 RDS Optimized Writes 的資料庫引擎版本和資料庫執行個體類別。開啟篩選條件後，您可以從可用的資料庫引擎版本和資料庫執行個體類別中進行選擇。

若要選擇支援 RDS 最佳化寫入的資料庫引擎版本，請在**引擎版本**中篩選支援它的 RDS for MariaDB 資料庫引擎版本，然後選擇版本。

![\[為引擎版本開啟了 Amazon RDS Optimized Writes 篩選條件的引擎選項區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/rds-optimized-writes-version-filter-mariadb.png)


在 **Instance configuration** (執行個體組態) 區段中，篩選支援 RDS Optimized Writes 的資料庫執行個體類別，然後選擇資料庫執行個體類別。

![\[為資料庫執行個體類別開啟了 Amazon RDS Optimized Writes 篩選條件的執行個體組態區段。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/rds-optimized-writes-class-filter.png)


在做出這些選擇之後，您可以選擇其他符合您需求的設定，並使用主控台完成建立 RDS for MariaDB 資料庫。

### AWS CLI
<a name="rds-optimized-writes-using-cli"></a>

若要使用 建立資料庫執行個體 AWS CLI，請執行 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令。確定 `--engine-version` 和 `--db-instance-class` 值支援 RDS Optimized Writes。此外，確定與資料庫執行個體相關聯的參數群組已將 `rds.optimized_writes` 參數設為 `AUTO`：此範例會將預設參數群組與資料庫執行個體建立關聯。

**Example 建立使用 RDS Optimized Writes 的資料庫執行個體**  
針對 Linux、macOS 或 Unix：  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --engine mariadb \
4.     --engine-version 10.6.10 \
5.     --db-instance-class db.r5b.large \
6.     --manage-master-user-password \
7.     --master-username admin \
8.     --allocated-storage 200
```
在 Windows 中：  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --engine mariadb ^
4.     --engine-version 10.6.10 ^
5.     --db-instance-class db.r5b.large ^
6.     --manage-master-user-password ^
7.     --master-username admin ^
8.     --allocated-storage 200
```

### RDS API
<a name="rds-optimized-writes-using-api"></a>

您可以使用 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 操作，建立資料庫執行個體。使用此操作時，確定 `EngineVersion` 和 `DBInstanceClass` 值支援 RDS Optimized Writes。此外，確定與資料庫執行個體相關聯的參數群組已將 `rds.optimized_writes` 參數設為 `AUTO`：

## 在現有資料庫上啟用 RDS Optimized Writes
<a name="rds-optimized-writes-modify-enable-mariadb"></a>

為了修改現有的 RDS for MariaDB，以開啟 RDS Optimized Writes，必須已使用支援的資料庫引擎版本和資料庫執行個體類別建立資料庫。此外，必須在 2023 年 3 月 7 日發行 RDS Optimized Writes *之後*建立了資料庫，因為所需的基礎檔案系統組態與發行之前所建立之資料庫的組態不相容。如果符合這些條件，您可以透過將 `rds.optimized_writes` 參數設定為 `AUTO` 來開啟 RDS Optimized Writes。

如果*未*使用支援的引擎版本、執行個體類別或檔案系統組態，來建立您的資料庫，您可以使用 RDS 藍/綠部署遷移至支援的組態。建立藍/綠部署時，請執行以下動作：
+ 選取**在綠色資料庫上啟用 Optimized Writes**，然後指定支援 RDS Optimized Writes 的引擎版本和資料庫執行個體。如需受支援引擎版本和執行個體類別的清單，請參閱 [使用 RDS Optimized Writes](#rds-optimized-writes-using-mariadb)。
+ 在**儲存體**下，選擇**升級儲存體檔案系統組態**。此選項會將資料庫升級為相容的基礎檔案系統組態。

建立藍/綠部署時，如果將 `rds.optimized_writes` 參數設定為 `AUTO`，則會在綠色環境上自動啟用 RDS Optimized Writes。然後，您可以轉換藍/綠部署，將綠色環境提升至新的生產環境。

如需詳細資訊，請參閱[在 Amazon RDS 中建立藍/綠部署](blue-green-deployments-creating.md)。

## RDS Optimized Writes 的限制
<a name="rds-optimized-writes-limitations-mariadb"></a>

當您從快照還原 RDS for MariaDB 資料庫時，只有在下列所有條件都滿足時，才能開啟資料庫的 RDS Optimized Writes：
+ 快照集是從支援 RDS Optimized Writes 的資料庫建立的。
+ 快照是從發佈 RDS Optimized Writes *之後*所建立的資料庫中建立的。
+ 快照還原至支援 RDS Optimized Writes 的資料庫。
+ 還原的資料庫與將 `rds.optimized_writes` 參數設為 `AUTO` 的參數群組相關聯。

# MySQL 資料庫引擎的升級
<a name="USER_UpgradeDBInstance.MariaDB"></a>

當 Amazon RDS 支援新版本的資料庫引擎時，您可以將資料庫執行個體升級為新版本。MariaDB 資料庫執行個體有兩種升級方式︰主要版本升級和次要版本升級。

*主要版本升級* 可能包含與現有應用程式回溯不相容的資料庫變更。因此，您必須手動執行資料庫執行個體的主要版本升級。您可以修改資料庫執行個體，啟動主要版本升級。然而在您執行主要的版本升級之前，建議您遵循 [RDS for MariaDB 的主要版本升級](USER_UpgradeDBInstance.MariaDB.Major.md) 中描述的指示。

反之，*次要版本升級* 只包含與現有應用程式回溯相容的變更。您可以修改資料庫執行個體，手動啟動次要版本升級。或者，您也可以在建立或修改資料庫執行個體時，啟用 **Auto minor version upgrade (自動次要版本升級)** 選項。這麼做代表 Amazon RDS 測試與核准新版本後，您的資料庫執行個體將會自動升級。如需執行升級的相關資訊，請參閱[升級資料庫執行個體 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。

如果 MariaDB 資料庫執行個體使用僅供讀取複本，則升級來源執行個體之前，您必須升級所有僅供讀取複本。如果資料庫執行個體位於異地同步備份部署中，則寫入器和待命複本都會升級。在升級完成之前，您的資料庫執行個體可能無法使用。

如需 MariaDB 支援版本和版本管理的詳細資訊，請參閱 [Amazon RDS 上的 MariaDB 版本](MariaDB.Concepts.VersionMgmt.md)。

資料庫引擎升級需要停機。停機持續時間依資料庫執行個體大小而有所不同。

Amazon RDS 也支援升級推展政策，以管理跨多個資料庫資源和 的自動次要版本升級 AWS 帳戶。如需詳細資訊，請參閱[使用 AWS Organizations 升級推展政策進行自動次要版本升級](RDS.Maintenance.AMVU.UpgradeRollout.md)。

**提示**  
您可以使用藍/綠部署，將資料庫執行個體升級所需的停機時間降至最低。如需詳細資訊，請參閱[使用 Amazon RDS 藍/綠部署進行資料庫更新](blue-green-deployments.md)。

**Topics**
+ [MariaDB 升級的考量](#USER_UpgradeDBInstance.MariaDB.Considerations)
+ [尋找有效的升級目標](#USER_UpgradeDBInstance.MariaDB.FindingTargets)
+ [MariaDB 版本號碼](USER_UpgradeDBInstance.MariaDB.VersionID.md)
+ [RDS for MariaDB 中的 RDS 版本號碼](USER_UpgradeDBInstance.MariaDB.rds.version.md)
+ [RDS for MariaDB 的主要版本升級](USER_UpgradeDBInstance.MariaDB.Major.md)
+ [升級 MariaDB 資料庫執行個體](#USER_UpgradeDBInstance.MariaDB.Upgrading)
+ [RDS for MariaDB 的自動次要版本升級](USER_UpgradeDBInstance.MariaDB.Minor.md)
+ [使用僅供讀取複本在升級 RDS for MariaDB 資料庫時減少停機時間](USER_UpgradeDBInstance.MariaDB.ReducedDowntime.md)
+ [使用事件監控 RDS for MariaDB 資料庫引擎升級](USER_UpgradeDBInstance.MariaDB.Monitoring.md)

## MariaDB 升級的考量
<a name="USER_UpgradeDBInstance.MariaDB.Considerations"></a>

Amazon RDS 在升級過程中會建立兩個以上的資料庫快照。Amazon RDS 在進行任何升級變更*之前*，最多會建立兩個資料庫執行個體快照。如果升級對資料庫沒有用處，您可以還原其中一個快照，以建立執行舊版本的資料庫執行個體。升級完成時，Amazon RDS 會建立資料庫執行個體的另一個快照。無論 是否 AWS Backup 管理資料庫執行個體的備份，Amazon RDS 都會拍攝這些快照。

**注意**  
只在您將資料庫執行個體的備份保留期設為大於 0 的數字時，Amazon RDS 才會建立資料庫快照。若要變更備份保留期，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

升級完成之後，您就無法回復至前一版的資料庫引擎。如果您想要回到前一版，請還原第一個建立的資料庫快照，以建立新的資料庫執行個體。

您可以控制何時將資料庫執行個體升級至 Amazon RDS 支援的新版本。這一層控制協助您維持與特定資料庫版本的相容性，並且先在您的應用程式上測試新版本，再部署於生產環境。準備好時，您就可以在最適合排程的時間執行版本升級。

如果資料庫執行個體使用讀取複寫，則在升級來源執行個體之前，您必須升級所有僅供讀取複本。

如果資料庫執行個體位於異地同步備份部署中，則主要和待命資料庫執行個體都會升級。主要和待命資料庫執行個體會同時升級，在升級完成之前會經歷停機情況。停機時間依資料庫引擎、引擎版本和資料庫執行個體大小而有所不同。

## 尋找有效的升級目標
<a name="USER_UpgradeDBInstance.MariaDB.FindingTargets"></a>

當您使用 AWS 管理主控台 來升級資料庫執行個體時，會顯示資料庫執行個體的有效升級目標。您也可以執行下列 AWS CLI 命令來識別資料庫執行個體的有效升級目標：

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
  --engine mariadb \
  --engine-version version_number \
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

在 Windows 中：

```
aws rds describe-db-engine-versions ^
  --engine mariadb ^
  --engine-version version_number ^
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

例如，若要識別 MariaDB 10.5.17 版資料庫執行個體的有效升級目標，請執行下列 AWS CLI 命令：

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
  --engine mariadb \
  --engine-version 10.5.17 \
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

在 Windows 中：

```
aws rds describe-db-engine-versions ^
  --engine mariadb ^
  --engine-version 10.5.17 ^
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

# MariaDB 版本號碼
<a name="USER_UpgradeDBInstance.MariaDB.VersionID"></a>

RDS for MariaDB 資料庫引擎的版本編號順序為 *major.minor.patch.YYYYMMDD* 或 *major.minor.patch* 格式，例如 10.11.5.R2.20231201 或 10.4.30。使用的格式取決於 MariaDB 引擎版本。

**主要**  
主要引擎版本號碼是整數和版本號碼的第一個小數部分，例如 10.11。主要版本升級會增加版本號碼的主要部分。例如，從 *10.5*.20 升級至 10.6.12 是主要版本升級，其中 *10.5* 和 *10.6* 是主要版本號碼。

**minor**  
次要版本號碼是版本號碼的第三部分，例如 10.11.5 中的 5。

**patch**  
修補程式是版本號碼的第四部分，例如 10.11.5.R2 中的 R2。RDS 修補程式版本中包含發行後新增到次要版本的重要錯誤修正。

**YYYYMMDD**  
日期是版本號碼的第五部分，例如 10.11.5.R2.20231201 中的 20231201。RDS 含日期的版本中包含發佈後新增到次要版本的重要錯誤修正。其中不包含任何可能變更引擎行為的修正。

下表說明 RDS for MariaDB 10.11 版的命名配置。


| 10.11 次要版本 | 命名配置 | 
| --- | --- | 
| ≥5  | 新的資料庫執行個體會使用 *major.minor.patch.YYMMDD*，例如 10.11.5.R2.20231201。 現有的資料庫執行個體可能會使用 *major.minor.patch* (例如 10.11.5.R2)，直到您下一次的主要或次要版本升級。 | 
| < 5 |  現有的資料庫執行個體會使用 *major.minor.patch*，例如 10.11.4.R2。  | 

下表說明 RDS for MariaDB 10.6 版的命名配置。


| 10.6 次要版本 | 命名配置 | 
| --- | --- | 
| ≥ 14 |  新的資料庫執行個體會使用 *major.minor.patch.YYMMDD*，例如 10.6.14.R2.20231201。 現有的資料庫執行個體可能會使用 *major.minor.patch* (例如 10.6.14.R2)，直到您下一次的主要或次要版本升級。 | 
| < 14 | 現有的資料庫執行個體會使用 *major.minor.patch*，例如 10.6.13.R2。 | 

下表說明 RDS for MariaDB 10.5 版的命名配置。


| 10.5 次要版本 | 命名配置 | 
| --- | --- | 
| ≥ 21 |  新的資料庫執行個體會使用 *major.minor.patch.YYMMDD*，例如 10.5.21.R2.20231201。 現有的資料庫執行個體可能會使用 *major.minor.patch* (例如 10.5.21.R2)，直到您下一次的主要或次要版本升級。 | 
| < 21 |  現有的資料庫執行個體會使用 *major.minor.patch*，例如 10.5.20.R2。  | 

下表說明 RDS for MariaDB 10.4 版的命名配置。


| 10.4 次要版本 | 命名配置 | 
| --- | --- | 
| ≥ 30 |  新的資料庫執行個體會使用 *major.minor.patch.YYMMDD*，例如 10.4.30.R2.20231201。 現有的資料庫執行個體可能會使用 *major.minor.patch* (例如 10.4.30.R2)，直到您下一次的主要或次要版本升級。 | 
| < 30 |  現有的資料庫執行個體會使用 *major.minor.patch*，例如 10.4.29.R2。  | 

# RDS for MariaDB 中的 RDS 版本號碼
<a name="USER_UpgradeDBInstance.MariaDB.rds.version"></a>

RDS 版本號碼會使用 `major.minor.patch` 或 `major.minor.patch.YYYYMMDD` 命名配置。RDS 修補程式版本中包含發行後新增到次要版本的重要錯誤修正。RDS 日期版本 (*YYMMDD*) 是安全性修補程式。安全性修補程式不包含任何可能變更引擎行為的修正。

若要識別資料庫的 Amazon RDS 版本編號，您必須先使用下列命令建立 `rds_tools` 延伸模組：

```
CREATE EXTENSION rds_tools;
```

您可以透過下列 SQL 查詢找出 RDS for MariaDB 資料庫的 RDS 版本號碼：

```
mysql> select mysql.rds_version();
```

例如，查詢 RDS for MariaDB 10.6.14 資料庫，會傳回下列輸出：

```
+---------------------+
| mysql.rds_version() |
+---------------------+
| 10.6.14.R2.20231201  |
+---------------------+
1 row in set (0.01 sec)
```

# RDS for MariaDB 的主要版本升級
<a name="USER_UpgradeDBInstance.MariaDB.Major"></a>

主要版本升級 可能包含與現有應用程式回溯不相容的資料庫變更。因此，Amazon RDS 不會自動套用主要版本升級。您必須手動修改資料庫執行個體。我們建議您在將任何升級套用至生產執行個體之前，先進行完整測試。

**注意**  
在 MariaDB 11.8 中，`require_secure_transport` 的預設值現在為 `1`，需要安全的 SSL/TLS 連線。如果需要非安全連線，請設定為 `0`。

對於 MariaDB 資料庫引擎的主要版本，Amazon RDS 支援以下的就地升級：
+ 從任何 MariaDB 版本升級至 MariaDB 11.8
+ 從任何 MariaDB 版本升級至 MariaDB 11.4
+ 從任何 MariaDB 版本升級至 MariaDB 10.11
+ 從任何 MariaDB 版本升級至 MariaDB 10.6
+ MariaDB 10.4 至 MariaDB 10.5

如果您是使用自訂參數群組，而且欲執行主要版本升級，則必須對新的資料庫引擎版本指定預設參數群組，或對新的資料庫引擎版本建立您自己的自訂參數群組。讓新的參數群組與資料庫執行個體產生關聯，需要客戶啟動的資料庫在升級完成時重新啟動。如果需要重新啟動執行個體，才能套用參數群組變更，執行個體的參數群組將顯示 `pending-reboot`。執行個體的參數群組狀態可在 AWS 管理主控台 中檢視，或藉由執行 "describe" 呼叫 (例如 `describe-db-instances`) 來檢視。

## 升級 MariaDB 資料庫執行個體
<a name="USER_UpgradeDBInstance.MariaDB.Upgrading"></a>

如需有關手動或自動升級 MariaDB 資料庫執行個體的資訊，請參閱[升級資料庫執行個體 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。

# RDS for MariaDB 的自動次要版本升級
<a name="USER_UpgradeDBInstance.MariaDB.Minor"></a>

如果您在建立或修改資料庫執行個體時指定下列設定，則可以讓資料庫執行個體自動升級。
+ 已啟用 **Auto minor version upgrade (自動次要版本升級)** 設定。
+ **Backup retention period (備份保留期間)** 設定大於 0。

在 AWS 管理主控台 中，這些設定位於 **Additional configuration** (其他組態) 下。下圖顯示 **Auto minor version upgrade** (自動次要版本升級) 設定。

![\[自動次要版本升級設定\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/amvu.png)


如需這些設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

針對某些 AWS 區域 中的某些 RDS for MariaDB 主要版本，RDS 會將一個次要版本指定為自動升級版本。次要版本經過測試，並由 Amazon RDS 核准之後，在您的維護時段期間，會自動發生次要版本升級。RDS 不會自動將較新發行的次要版本設定為自動升級版本。在 RDS 指派較新的自動升級版本之前，會考慮數個準則，例如下列：
+ 已知安全性問題
+ MariaDB 社群版本中的錯誤
+ 從發行次要版本以來的整體機群穩定性

**注意**  
從 MariaDB 的特定次要版本開始，已移除使用 TLS 1.0 和 1.1 版的支援。如需支援的 MariaDB 次要版本的相關資訊，請參閱 [Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。](MariaDB.Concepts.SSLSupport.md)。

您可以執行下列 AWS CLI 命令，判斷特定 AWS 區域 中的指定 MariaDB 次要版本目前的自動次要升級目標版本。

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
--engine mariadb \
--engine-version minor_version \
--region region \
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \
--output text
```

針對 Windows：

```
aws rds describe-db-engine-versions ^
--engine mariadb ^
--engine-version minor_version ^
--region region ^
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^
--output text
```

例如，下列 AWS CLI 命令會判斷美國東部 (俄亥俄) AWS 區域 (us-east-2) 中 MariaDB 次要版本 10.5.16 的自動次要升級目標。

針對 Linux、macOS 或 Unix：

```
aws rds describe-db-engine-versions \
--engine mariadb \
--engine-version 10.5.16 \
--region us-east-2 \
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \
--output table
```

針對 Windows：

```
aws rds describe-db-engine-versions ^
--engine mariadb ^
--engine-version 10.5.16 ^
--region us-east-2 ^
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^
--output table
```

輸出類似如下。

```
----------------------------------
|    DescribeDBEngineVersions    |
+--------------+-----------------+
|  AutoUpgrade |  EngineVersion  |
+--------------+-----------------+
|  True        |  10.5.17        |
|  False       |  10.5.18        |
|  False       |  10.5.19        |
|  False       |  10.6.5         |
|  False       |  10.6.7         |
|  False       |  10.6.8         |
|  False       |  10.6.10        |
|  False       |  10.6.11        | 
|  False       |  10.6.12        |
+--------------+-----------------+
```

在此範例中，`AutoUpgrade` 值是 `True` (若為 MariaDB 10.5.17 版)。因此，自動次要升級目標是 MariaDB 10.5.17 版，其已在輸出中反白顯示。

如果符合下列準則，在維護時段期間會自動升級 MariaDB 資料庫執行個體：
+ 已啟用 **Auto minor version upgrade (自動次要版本升級)** 設定。
+ **Backup retention period (備份保留期間)** 設定大於 0。
+ 資料庫執行個體執行的次要資料庫引擎版本小於目前的自動升級次要版本。

如需詳細資訊，請參閱 [自動升級次要引擎版本](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades)。

# 使用僅供讀取複本在升級 RDS for MariaDB 資料庫時減少停機時間
<a name="USER_UpgradeDBInstance.MariaDB.ReducedDowntime"></a>

在大多數情況下，藍/綠部署是升級 MariaDB 資料庫執行個體時減少停機時間的最佳選項。如需詳細資訊，請參閱 [使用 Amazon RDS 藍/綠部署進行資料庫更新](blue-green-deployments.md)。

如果您無法使用藍/綠部署，且您的 MariaDB 資料庫執行個體目前與生產應用程式搭配使用，您可以使用下列程序來升級資料庫執行個體的資料庫版本。此程序可降低應用程式的停機時間。

透過使用僅供讀取複本，您可以提前執行大部分的維護步驟，並將實際中斷期間的必要變更降到最低。使用此技術，您可以測試和準備新的資料庫執行個體，而無需對現有的資料庫執行個體進行任何變更。

下列程序顯示從 MariaDB 10.5 版升級至 MariaDB 10.6 版的範例。您可以使用同樣的一般步驟升級到其他的主要版本。

**在資料庫執行個體處於使用中的情況下升級 MariaDB 資料庫**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 建立 MariaDB 10.5 資料庫執行個體的僅供讀取複本。此程序建立資料庫的可升級副本。資料庫執行個體的其他僅供讀取複本也可能存在。

   1. 在主控台中，選擇 **Databases** (資料庫)，然後選擇您要升級的資料庫執行個體。

   1. 在 **Actions (動作)** 中選擇 **Create read replica (建立僅供讀取複本)**。

   1. 在僅供讀取複本的 **DB instance identifier** (資料庫執行個體識別符) 中提供一個值，並確定 **DB instance class** (資料庫執行個體類別) 和其他設定符合您的 MariaDB 10.5 資料庫執行個體。

   1. 選擇 **Create read replica (建立僅供讀取複本)**。

1. (選用) 當僅供讀取複本已建立且**狀態**顯示為**可用**時，請將僅供讀取複本轉換為多可用區域部署，並啟用備份。

   依預設，僅供讀取複本會建立為單一可用區域部署，並停用備份。由於僅供讀取複本最終會成為生產資料庫執行個體，因此最佳實務是設定多可用區部署並立即啟用備份。

   1. 在主控台中，選擇 **Databases** (資料庫)，然後選擇您剛建立的僅供讀取複本。

   1. 選擇 **Modify (修改)**。

   1. 針對**多可用區域部署**，選擇**建立待命執行個體**。

   1. 對於 **Backup Retention Period** (備份保留期)，選擇非零正值 (例如 3 天)，然後選擇 **Continue** (繼續)。

   1. 在 **Scheduling of modifications** (修改排程) 中，選擇 **Apply immediately** (立即套用)。

   1. 選擇 **Modify DB instance (修改資料庫執行個體)**。

1. 僅供讀取複本的 **Status** (狀態) 顯示為 **Available** (可用) 時，請將僅供讀取複本升級至 MariaDB 10.6。

   1. 在主控台中，選擇 **Databases** (資料庫)，然後選擇您剛建立的僅供讀取複本。

   1. 選擇 **Modify** (修改)。

   1. 在 **DB engine version** (資料庫引擎版本) 中，選擇升級到 MariaDB 10.6 版，然後選擇 **Continue** (繼續)。

   1. 在 **Scheduling of modifications** (修改排程) 中，選擇 **Apply immediately** (立即套用)。

   1. 選擇 **Modify DB instance (修改資料庫執行個體)** 以開始升級。

1. 當升級完成且 **Status** (狀態) 顯示為 **Available** (可用) 時，請確認升級的僅供讀取複本已和來源 MariaDB 10.5 資料庫執行個體維持在相同的最新狀態。若要驗證，請連線至僅供讀取複本並執行 `SHOW REPLICA STATUS` 命令。如果 `Seconds_Behind_Master` 欄位是 `0`，表示複寫是最新狀態。
**注意**  
MariaDB 以前的版本使用 `SHOW SLAVE STATUS` 而不是 `SHOW REPLICA STATUS`。如果您使用的 MariaDB 是 10.6 之前的版本，請使用 `SHOW SLAVE STATUS`。

1. (選擇性) 建立僅供讀取複本的僅供讀取複本。

   如果您希望資料庫執行個體在提升為獨立資料庫執行個體後擁有僅供讀取複本，您可以立即建立僅供讀取複本。

   1. 在主控台中，選擇 **Databases** (資料庫)，然後選擇您剛升級的僅供讀取複本。

   1. 在 **Actions (動作)** 中選擇 **Create read replica (建立僅供讀取複本)**。

   1. 在僅供讀取複本的 **DB instance identifier** (資料庫執行個體識別符) 中提供一個值，並確定 **DB instance class** (資料庫執行個體類別) 和其他設定符合您的 MariaDB 10.5 資料庫執行個體。

   1. 選擇 **Create read replica (建立僅供讀取複本)**。

1. (選擇性) 為僅供讀取複本設定自訂資料庫參數群組。

   如果您希望資料庫執行個體在提升為獨立資料庫執行個體後使用自訂參數群組，您現在可以建立資料庫參數群組，並將其與僅供讀取複本建立關聯。

   1. 建立 MariaDB 10.6 的自訂資料庫參數群組。如需說明，請參閱「[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)」。

   1. 修改您想要在剛才建立的資料庫參數群組中變更的參數。如需說明，請參閱「[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)」。

   1. 在主控台中，選擇 **Databases** (資料庫)，然後選擇僅供讀取複本。

   1. 選擇 **Modify** (修改)。

   1. 對於 **DB parameter group** (資料庫參數群組)，請選擇您剛才建立的 MariaDB 10.6 資料庫參數群組，然後選擇 **Continue** (繼續)。

   1. 在 **Scheduling of modifications** (修改排程) 中，選擇 **Apply immediately** (立即套用)。

   1. 選擇 **Modify DB instance (修改資料庫執行個體)** 以開始升級。

1. 將 MariaDB 10.6 僅供讀取複本變成獨立資料庫執行個體。
**重要**  
當 MariaDB 10.6 僅供讀取複本提升為獨立資料庫執行個體時，就不再是 MariaDB 10.5 資料庫執行個體的複本。建議在維護時段提升 MariaDB 10.6 僅供讀取複本，因為此時來源 MariaDB 10.5 資料庫執行個體處於唯讀模式，且所有寫入操作都已暫停。提升完成時，您可以將寫入操作導向已升級的 MariaDB 10.6 資料庫執行個體，以確保不會遺漏任何寫入操作。  
此外，在提升 MariaDB 10.6 僅供讀取複本之前，建議您在 MariaDB 10.6 僅供讀取複本上執行所有必要的資料定義語言 (DDL) 操作。範例是建立索引。此方法可避免 MariaDB 10.6 僅供讀取複本在提升之後效能降低。若要提升僅供讀取複本，請使用以下程序。

   1. 在主控台中，選擇 **Databases** (資料庫)，然後選擇您剛升級的僅供讀取複本。

   1. 針對 **Actions** (動作)，選擇 **Promote** (提升)。

   1. 選擇 **Yes (是)**，對僅供讀取複本執行個體啟用自動備份。如需詳細資訊，請參閱 [備份簡介](USER_WorkingWithAutomatedBackups.md)。

   1. 選擇 **Continue (繼續)**。

   1. 選擇 **Promote Read Replica** (提升僅供讀取複本)。

1. 您現在已升級 MariaDB 資料庫的版本。此時，您可以將應用程式導向至新的 MariaDB 10.6 資料庫執行個體。

# 使用事件監控 RDS for MariaDB 資料庫引擎升級
<a name="USER_UpgradeDBInstance.MariaDB.Monitoring"></a>

當您升級 RDS for MariaDB 資料庫的引擎版本時，Amazon RDS 會在程序的每個階段發出特定事件。若要追蹤升級進度，您可以檢視或訂閱這些事件。

 如需 RDS 事件的詳細資訊，請參閱 [監控 Amazon RDS 事件](working-with-events.md)。

如需引擎升級期間發生之特定 Amazon RDS 事件的詳細資訊，請參閱 [ Amazon RDS 事件類別和事件訊息](USER_Events.Messages.md)。

# 升級 MariaDB 資料庫快照引擎版本
<a name="mariadb-upgrade-snapshot"></a>

利用 Amazon RDS，您可以為您的 MariaDB 資料庫執行個體建立儲存體磁碟區資料庫快照。建立資料庫快照時，該快照會基於您的資料庫執行個體使用的引擎版本。您可以升級資料庫快照的引擎版本。

針對 RDS for MariaDB，您可以升級至所有可用的引擎版本。您可以升級加密或未加密的資料庫快照。

若要檢視 RDS for MariaDB 資料庫快照的可用引擎版本，請使用下列 AWS CLI 範例。

```
aws rds describe-db-engine-versions --engine mariadb --include-all --engine-version example-engine-version --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

如果您沒有看到快照的結果，則您的引擎版本可能已棄用。如果您的引擎版本已棄用，建議您升級到最新的主要版本升級目標，或升級到該版本的其他可用升級目標之一。如需詳細資訊，請參閱[RDS for MariaDB 不支援引擎版本的資料庫快照升級選項](mariadb-upgrade-snapshot.upgrade-options.md)。

還原升級至新引擎版本的資料庫快照之後，務必測試升級已成功。如需主要版本升級的詳細資訊，請參閱[MySQL 資料庫引擎的升級](USER_UpgradeDBInstance.MariaDB.md)。若要了解如何還原資料庫快照，請參閱[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。

**注意**  
您無法升級在自動備份程序期間建立的自動資料庫快照。

您可以使用 AWS 管理主控台 AWS CLI或 RDS API 升級資料庫快照。

------
#### [ Console ]

若要使用 升級資料庫快照引擎版本 AWS 管理主控台，請使用下列程序。

**升級資料庫快照**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Snapshots (快照)**。

1. 選擇您要升級的快照。

1. 針對 **Actions (動作)**，選擇 **Upgrade snapshot (升級快照)**。**Upgrade snapshot (升級快照)** 頁面隨即出現。

1. 選擇要升級到的 **New engine version (新引擎版本)**。

1. 選擇 **Save changes (儲存變更)** 以升級快照。

   升級程序期間，此資料庫快照的所有快照動作會停用。同時，資料庫快照狀態會從**可用**變更為**升級中**，然後在完成時變更為**作用中**。如果資料庫快照因為快照損毀問題而無法升級，狀態會變更為**無法使用**。您無法從此狀態復原快照。
**注意**  
如果資料庫升級失敗，快照會轉返至原始版本的原始狀態。

------
#### [ AWS CLI ]

若要將資料庫快照升級至新的資料庫引擎版本，請執行 AWS CLI [modify-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-snapshot.html) 命令。

**選項**
+ `--db-snapshot-identifier` – 要升級的資料庫快照識別碼。識別符必須是唯一的 Amazon Resource Name (ARN)。如需詳細資訊，請參閱 [Amazon RDS 中的 Amazon Resource Name (ARN)](USER_Tagging.ARN.md)。
+ `--engine-version` – 資料庫快照會以此引擎版本為目標進行升級。

**Example**  
針對 Linux、macOS 或 Unix：  

```
1. aws rds modify-db-snapshot \
2. 
3.     --db-snapshot-identifier my_db_snapshot \
4.     --engine-version new_version
```
在 Windows 中：  

```
1. aws rds modify-db-snapshot ^
2.     --db-snapshot-identifier my_db_snapshot ^
3.     --engine-version new_version
```

------
#### [ Amazon RDS API ]

若要將資料庫快照升級為新的資料庫引擎版本，請呼叫 RDS API [ModifyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSnapshot.html) 作業。

**Parameters**
+ `DBSnapshotIdentifier` – 要升級的資料庫快照識別碼。識別符必須是唯一的 Amazon Resource Name (ARN)。如需詳細資訊，請參閱 [Amazon RDS 中的 Amazon Resource Name (ARN)](USER_Tagging.ARN.md)。
+ `EngineVersion` – 資料庫快照會以此引擎版本為目標進行升級。

------

# RDS for MariaDB 不支援引擎版本的資料庫快照升級選項
<a name="mariadb-upgrade-snapshot.upgrade-options"></a>

下表顯示您可以從 RDS for MariaDB 資料庫快照不支援的引擎版本升級到哪些引擎版本。

**注意**  
您可能需要多次升級資料庫快照，才能升級至您選擇的引擎版本。


| 資料庫快照引擎版本 | 可用於升級的引擎版本 | 
| --- | --- | 
| 10.0.17、10.0.24、10.0.28、10.0.31、10.0.32、10.0.34、10.0.35 |  10.0.38、10.1.48、10.6.19、10.6.20、10.11.9、10.11.10、11.4.3、11.4.4、11.8.3  | 
| 10.1.14、10.1.16、10.1.19、10.1.23、10.1.26、10.1.31、10.1.34 |  10.1.48、10.2.44、10.6.19、10.6.20、10.11.9、10.11.10、11.4.3、11.4.4、11.8.3  | 
| 10.2.11、10.2.12、10.2.15、10.2.21、10.2.32、10.2.37、10.2.39、10.2.40、10.2.41、10.2.43 |  10.2.44、10.3.39、10.6.19、10.6.20、10.6.21、10.11.9、10.11.10、10.11.11、11.4.3、11.4.4、11.8.3  | 
| 10.3.8、10.3.13、10.3.20、10.3.23、10.3.28、10.3.31、10.3.32 |  10.3.39、10.4.34、10.6.19、10.6.20、10.6.21、10.11.9、10.11.10、10.11.11、11.4.3、11.4.4、11.8.3  | 
| 10.4.8 |  10.4.34、10.5.16、10.5.17、10.5.18、10.5.20、10.5.21、10.5.22、10.5.23、10.5.24、10.5.25、10.5.26、10.5.27、10.5.28、10.6.8、10.6.10、10.6.11、10.6.13、10.6.14、10.6.15、10.6.16、10.6.18、10.6.19、10.6.20、10.6.21、10.11.4、10.6.17、10.11.5、10.11.6、10.11.7、10.11.8、10.11.9、10.11.10、10.11.11  | 

# 將資料匯入 Amazon RDS for MariaDB 資料庫執行個體
<a name="MariaDB.Procedural.Importing"></a>

您可使用多種不同技術，將資料匯入 RDS for MariaDB 資料庫執行個體。最佳方法取決於多種因素：
+ 資料來源
+ 資料量
+ 一次性匯入或持續性
+ 停機時間

 如要連同資料一起遷移應用程式，則務必考量停機時間。

下表列出將資料匯入 RDS for MariaDB 資料庫執行個體的各種技術：

**注意**  
Amazon RDS 不支援 `mariadb-backup` 或從 Amazon S3 for MariaDB 匯入。


| 來源 | 資料量 | 一次性或持續性 | 應用程式停機時間 | 技術 | 其他資訊 | 
| --- | --- | --- | --- | --- | --- | 
|  內部部署或 Amazon EC2 現有的 MariaDB 資料庫  |  任何  |  持續性  |  極小  |  使用現有 MariaDB 資料庫為複寫來源來設定複寫。 若要設定複寫至 MariaDB 資料庫執行個體：當外部執行個體是 MariaDB 10.0.24 版或更新版本時，您可以使用 MariaDB 全域交易識別符 (GTID)；當執行個體是 10.0.24 以前的版本時，您可以使用 MariaDB 執行個體的二進位日誌座標。MariaDB GTID 的實作不同於 MySQL GTID (在 Amazon RDS 中不支援)。  |  [使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.ReplMariaDB.md) [減少將資料匯入 Amazon RDS for MariaDB 資料庫執行個體時的停機時間](mariadb-importing-data-reduced-downtime.md)  | 
|  任何現有資料庫  |  任何  |  一次性或持續性  |  極小  |  使用 AWS Database Migration Service 以最少的停機時間遷移資料庫，對於許多資料庫資料庫引擎，則繼續持續複寫。  |  《AWS Database Migration Service 使用者指南》**中的[什麼是 AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 和[使用與 MySQL 相容的資料庫作為 AWS DMS的目標](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)  | 
|  現有的 MariaDB 資料庫執行個體  |  任何  |  一次性或持續性  |  極小  |  為持續複寫建立僅供讀取複本。升級僅供讀取複本，以便一次性建立新的資料庫執行個體。  |  [使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)  | 
|  現有的 MariaDB 資料庫  |  小型  |  一次性  |  一些  |  使用命令列公用程式，直接將資料複製到您的 MariaDB 資料庫執行個體。  |  [從外部 MariaDB 資料庫將資料匯入 Amazon RDS for MariaDB 資料庫執行個體](mariadb-importing-data-external-database.md)  | 
|  未存放在現有資料庫的資料  |  中型  |  一次性  |  一些  |  建立一般檔案，並使用 MariaDB `LOAD DATA LOCAL INFILE` 陳述式將其匯入。  |  [匯入任何 Amazon RDS for MariaDB 資料庫執行個體來源的資料](mariadb-importing-data-any-source.md)  | 

**注意**  
`mysql` 系統資料庫包含登入資料庫執行個體與存取資料所需的身分驗證和授權資訊。卸除、更改、重新命名或截斷資料庫執行個體中 `mysql` 資料庫的資料表、資料或其他內容，可能會導致發生錯誤，造成無法存取資料庫執行個體與資料的情形。如果發生這種情況，您可以使用 命令從快照 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)還原資料庫執行個體。您可以利用 [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 命令復原資料庫執行個體。

# MariaDB 的匯入資料考量事項
<a name="MariaDB.Procedural.Importing.Advanced"></a>

下列內容包含有關將資料載入 MariaDB 的技術資訊。此內容的目標是熟悉 MariaDB 伺服器架構的使用者。

## 二進位記錄
<a name="MariaDB.Procedural.Importing.Advanced.Log"></a>

啟用二進位記錄可降低資料載入效能，且相較於停用的記錄，最多需要額外四倍的磁碟空間。用於載入資料的交易大小會直接影響系統效能和磁碟空間需求 - 較大的交易需要更多資源。

## 交易大小
<a name="MariaDB.Procedural.Importing.Advanced.Size"></a>

交易大小會影響 MariaDB 資料載入的下列層面：
+ 資源耗用
+ 磁碟空間使用率
+ 繼續程序
+ 復原時間
+ 輸入格式 (一般檔案或 SQL)

本節會說明交易大小如何影響二進位日誌，並解釋為何要在大型資料載入期間停用此功能。您可以設定 Amazon RDS 自動備份保留期間，藉此啟用及停用二進位記錄。非零的數值會啟用二進位日誌，而零則會停用此功能。如需詳細資訊，請參閱[Backup retention period (備份保留期間)](USER_WorkingWithAutomatedBackups.BackupRetention.md)。

我們也會說明大型交易對 InnoDB 的影響，以及為何需要盡量縮減交易大小的原因。

### 小型交易
<a name="MariaDB.Procedural.Importing.Advanced.Log.Small"></a>

若為小型交易，二進位日誌會將載入資料所需的磁碟寫入次數加倍。此效果會嚴重降低其他資料庫作業階段的效能，並增加載入資料所需的時間。經歷的降級部分取決於下列因素：
+ 上傳率
+ 載入期間發生的其他資料庫活動
+ Amazon RDS 資料庫執行個體的容量

二進位日誌在完成備份及移除前，也會佔用與載入資料量約莫相等的磁碟空間。Amazon RDS 會頻繁備份並移除二進位日誌，盡可能避免這種情況。

### 大型交易
<a name="MariaDB.Procedural.Importing.Advanced.Log.Large"></a>

對於大型交易，二進位日誌記錄會將 IOPS 和磁碟用量增加三倍，原因如下：
+ 二進位日誌快取會將交易資料暫時存放在磁碟上。
+ 此快取會隨著交易大小而增加，這會耗用磁碟空間。
+ 當交易 (遞交或轉返) 完成時，系統會將快取複製到二進位日誌。

此程序會建立三份資料副本：
+ 原始資料
+ 磁碟上的快取
+ 最終二進位日誌項目

每個寫入作業都會產生額外的 IO，進一步影響效能。

因此，相較於停用的記錄，二進位記錄需要三倍的磁碟空間。例如，將 10 GiB 的資料載入為單一交易會建立三個複本：
+ 資料表資料的 10 GiB
+ 二進位日誌快取為 10 GiB
+ 二進位日誌檔案為 10 GiB

所需的暫存磁碟空間總計為 30 GiB。

重要的磁碟空間考量：
+ 快取檔案會持續存在，直到工作階段結束或新的交易建立另一個快取為止。
+ 二進位日誌會保留到備份為止，可能會長時間保留 20 GiB (快取和日誌)。

如果您使用 `LOAD DATA LOCAL INFILE` 載入資料，則資料復原會建立第四個複本，以防必須從載入之前進行的備份中復原資料庫。復原期間，MariaDB 會擷取二進位日誌的資料，放入一般檔案中。接著，MariaDB 會執行 `LOAD DATA LOCAL INFILE`。根據上述範例，此復原需要 40 GiB 的總暫存磁碟空間，或是資料表、快取、日誌和本機檔案各 10 GiB。如果沒有至少 40 GiB 的可用磁碟空間，則復原會失敗。

### 最佳化大型資料負載
<a name="MariaDB.Procedural.Importing.AnySource.Advanced.Disable"></a>

對於大型資料載入，請停用二進位記錄，以減少額外負荷和磁碟空間需求。您可以將備份保留期設定為 0，以停用二進位記錄。載入完成後，將備份保留期還原至適當的非零值。如需詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md) 和設定資料表中的[備份保留期間](USER_ModifyInstance.Settings.md)。

**注意**  
如果資料庫執行個體是僅供讀取複本的來源資料庫執行個體，則不可將備份保留期設為 0。

載入資料之前，建議您建立資料庫快照。如需詳細資訊，請參閱[管理手動備份](USER_ManagingManualBackups.md)。

## InnoDB
<a name="MariaDB.Procedural.Importing.Advanced.InnoDB"></a>

下列復原記錄和復原選項的相關資訊支援將 InnoDB 交易保持為小型，以最佳化資料庫效能。

### 了解 InnoDB 復原記錄
<a name="MariaDB.Procedural.Importing.Advanced.InnoDB.Undo"></a>

復原是一種記錄機制，可啟用交易轉返，並支援多版本並行控制 (MVCC)。

對於 MariaDB 10.11 和更低版本，復原日誌存放在 InnoDB 系統資料表空間 (通常是 ibdata1) 中並予以保留，直到清除執行緒將其移除為止。因此，大型資料載入交易可能會造成系統資料工作表變得無比龐大並佔用磁碟空間，且若未重新重建資料庫，將無法回收這些空間。

對於所有 MariaDB 版本，清除執行緒必須等待移除任何復原日誌，直到最舊的作用中交易遞交或復原為止。如果資料庫在載入期間同時處理其他交易，則即使這些交易皆已遞交，且沒有其他交易需要因為 MVCC 而復原，這些復原也會累積在系統資料表空間中，並且無法移除。在這種情況下，包括唯讀交易在內的所有交易都會變慢。此速度變慢是因為所有交易都會存取任何交易 (而不只是載入交易) 變更的所有資料列。實際上，交易必須掃描復原日誌，避免長時間執行的載入交易在復原日誌清除期間遭到清除。這會影響存取修改資料列的任何作業之效能。

### InnoDB 交易復原選項
<a name="MariaDB.Procedural.Importing.Advanced.InnoDB.Rollback"></a>

雖然 InnoDB 最佳化遞交作業，但大型交易復原速度緩慢。為了加快復原速度，請執行時間點復原或還原資料庫快照。如需詳細資訊，請參閱[時間點復原](USER_PIT.md)及[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。

## 資料匯入格式
<a name="MariaDB.Procedural.Importing.Advanced.InputFormat"></a>

MariaDB 支援兩種資料匯入格式：一般檔案和 SQL。檢閱每個格式的相關資訊，以判斷符合您需求的最佳選項。

### 一般檔案
<a name="MariaDB.Procedural.Importing.Advanced.InputFormat.FlatFiles"></a>

對於小型交易，使用 `LOAD DATA LOCAL INFILE` 載入一般檔案。相較於使用 SQL，此資料匯入格式可提供下列優點：
+ 較少網路流量
+ 降低資料傳輸成本
+ 減少資料庫處理開銷
+ 更快的處理速度

`LOAD DATA LOCAL INFILE` 會將整個一般檔案載入為一筆交易。將個別檔案的大小保持為小型，以獲得下列優點：
+ **繼續執行功能** – 輕鬆追蹤哪些檔案已載入完成。如果載入期間發生問題，您可以從中止的地方繼續工作。有些資料可能需要重新傳輸到 Amazon RDS，但若使用小型檔案，要重新傳輸的內容就可以減至最少。
+ **平行資料載入** – 如果您有足夠的 IOPS 和網路頻寬進行單一檔案載入，則平行載入可以節省時間。
+ **負載率控制 **– 如果您的資料負載對其他程序造成負面影響，您可以透過增加檔案之間的間隔來控制負載率。

大型交易會減少使用 `LOAD DATA LOCAL INFILE` 匯入資料的優點。當您無法將大量資料分解為較小型的檔案時，請考慮使用 SQL。

### SQL
<a name="MariaDB.Procedural.Importing.Advanced.InputFormat.SQL"></a>

SQL 具備一項一般檔案所缺乏的主要優點，亦即您可輕鬆將交易大小維持在較小的狀態。不過，SQL 載入的時間可能會較一般檔案長得多。此外，在失敗之後，很難判斷要繼續的位置，您無法重新啟動 mariadb-dump 檔案。如果在載入 mariadb-dump 檔案時發生錯誤，您必須修改或替換檔案，才能繼續載入檔案。或者，替代方案是在修正失敗原因後，還原至載入前的時間點，然後重新傳送檔案。如需詳細資訊，請參閱[時間點復原](USER_PIT.md)。

## 將 Amazon RDS 資料庫快照用於資料庫檢查點
<a name="MariaDB.Procedural.Importing.Advanced.Checkpoints"></a>

如果您載入資料的時間很長 (例如數小時或數天) 而沒有二進位記錄，請使用資料庫快照來提供資料安全的定期檢查點。每個資料庫快照都會建立資料庫執行個體的一致複本，以做為系統故障或資料損毀事件期間的復原點。由於資料庫快照速度很快，經常檢查點對負載效能的影響極小。您可以刪除先前的資料庫快照，而不會影響資料庫耐久性或復原功能。如需資料庫快照的詳細資訊，請參閱 [管理手動備份](USER_ManagingManualBackups.md)。

## 縮短資料庫載入時間
<a name="MariaDB.Procedural.Importing.Advanced.LoadTime"></a>

以下是縮短載入時間的其他秘訣：
+ 在將資料載入 MariaDB 資料庫之前，先建立所有次要索引。與其他資料庫系統不同，MariaDB 會在新增或修改次要索引時，重建整個資料表。此程序會建立新的資料表，其中包含索引變更、複製所有資料，以及捨棄原始資料表。
+ 依主索引鍵順序載入資料。對於 InnoDB 資料表，這可以縮短載入時間達 75%–80%，並將資料檔案大小減少 50%。
+ 將 `foreign_key_checks` 設定為 `0` 來停用外部金鑰限制條件。對於使用 `LOAD DATA LOCAL INFILE` 載入的一般檔案，這通常是必要作業。對於任何載入，停用外部金鑰檢查可加速資料載入。載入完成後，將 `foreign_key_checks` 設定為 `1` 並驗證資料，以重新啟用限制條件。
+ 除非接近資源限制，否則請平行載入資料。若要啟用跨多個資料表區段的並行載入，請適時使用分割的資料表。
+ 若要降低 SQL 執行負荷，請將多個 `INSERT` 陳述式合併為單一多值 `INSERT` 作業。`mariadb-dump` 會自動實作此最佳化。
+ 將 `innodb_flush_log_at_trx_commit` 設定為 `0`，以減少 InnoDB 日誌 IO 作業。載入完成後，將 `innodb_flush_log_at_trx_commit` 還原至 `1`。
**警告**  
將 `innodb_flush_log_at_trx_commit` 設定為 `0` 會導致 InnoDB 每秒排清其日誌，而不是在每次遞交時排清日誌。此設定可提高效能，但可能會在系統故障期間造成交易遺失的風險。
+ 如果您要將資料載入至沒有僅供讀取複本的資料庫執行個體，請將 `sync_binlog` 設定為 `0`。載入完成後，將 `sync_binlog parameter` 還原至 `1`。
+ 在資料庫執行個體轉換為多可用區域部署前，將資料載入至單一可用區域資料庫執行個體。如果資料庫執行個體已使用多可用區域部署，則不建議切換至單一可用區域部署來進行資料載入。這麼做只會提供邊際改善

# 從外部 MariaDB 資料庫將資料匯入 Amazon RDS for MariaDB 資料庫執行個體
<a name="mariadb-importing-data-external-database"></a>

您可將資料從現有的 MariaDB 資料庫匯入 RDS for MariaDB 資料庫執行個體。做法是以 [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) 或 [mariadb-dump](https://mariadb.com/kb/en/mariadb-dump/) 命令複製資料庫，然後將資料庫直接傳輸到 RDS for MariaDB 資料庫執行個體。`mysqldump` 或 `mariadb-dump` 命令列公用程式普遍用於製作備份，以及將資料從 MariaDB 伺服器傳輸到另一個伺服器上。MariaDB 用戶端軟體皆隨附這個程式。

從 MariaDB 11.0.1 開始，您必須使用 `mariadb-dump` 而非 `mysqldump`。

典型的 `mysqldump` 命令會將資料從外部資料庫移入 Amazon RDS 資料庫執行個體，如下列範例所示。將值取代為您自己的資訊。對於 MariaDB 11.0.1 及更高版本，請將 `mysqldump` 取代為 `mariadb-dump`。

```
mysqldump -u local_user \
    --databases database_name \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mariadb -u RDS_user \
        --port=port_number \
        --host=host_name \
        -pRDS_password
```

**重要**  
切勿在 `-p` 選項與輸入的密碼間插入空白。  
指定此範例中所顯示提示以外的憑證，作為安全最佳實務。

請確認您了解下列建議和注意事項：
+ 從傾印檔案中排除下列結構描述：
  + `sys`
  + `performance_schema`
  + `information_schema`

  `mysqldump` 和 `mariadb-dump` 公用程式已預設排除這些結構描述。
+ 如需遷移使用者與權限，建議您使用可產生資料控制語言 (DCL) 以重建使用者與權限的工具，例如 [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html) 公用程式。
+ 若要執行匯入，請確認執行此程序的使用者能夠存取資料庫執行個體。如需詳細資訊，請參閱 [使用安全群組控制存取](Overview.RDSSecurityGroups.md)。

使用的參數如下：
+ `-u local_user` – 用來指定使用者名稱。首次使用此參數時，需在 `--databases` 參數所識別的本機 MariaDB 資料庫中指定使用者帳戶名稱。
+ `--databases database_name` – 在您要匯入至 Amazon RDS 的本機 MariaDB 執行個體上，指定資料庫名稱。
+ `--single-transaction` – 確保從本機資料庫負載的所有資料均與單一時間點一致。如有其他程序在 `mysqldump` 或 `mariadb-dump` 讀取資料時變更資料，使用此參數有助於維持資料完整性。
+ `--compress` – 在本機資料庫的資料傳送到 Amazon RDS 前先完成壓縮，以減少耗用的網路頻寬。
+ `--order-by-primary` – 以資料的主索引鍵排序各資料表的資料，以減少載入時間。
+ `--routines` – 如果預存程序或函數等常式存在於您要複製的資料庫中，則應使用。將參數設定為 `0`，這會在匯入程序期間排除常式。然後，在 Amazon RDS 資料庫中手動重新建立常式。
+ `--triggers` – 如果觸發程序存在於您要複製的資料庫中，則應使用。將參數設定為 `0`，這會在匯入程序期間排除觸發程序。然後，在 Amazon RDS 資料庫中手動重新建立觸發程序。
+ `--events` – 如果事件存在於您要複製的資料庫中，則應使用。將參數設定為 `0`，這會在匯入程序期間排除事件。然後，在 Amazon RDS 資料庫中手動重新建立事件。
+ `-plocal_password` – 用來指定密碼。首次使用此參數時，請指定您以第一個 `-u` 參數識別的使用者帳戶的密碼。
+ `-u RDS_user` – 用來指定使用者名稱。第二次使用此參數時，需在 `--host` 參數所識別的 MariaDB 資料庫執行個體的預設資料庫上，指定使用者帳戶名稱。
+ `--port port_number` – 用於指定 MariaDB 資料庫執行個體的連接埠。預設值為 3306，除非您在建立資料庫執行個體時另行變更。
+ `--host host_name` – 用來指定 Amazon RDS 資料庫執行個體端點的網域名稱系統 (DNS) 名稱，例如 。`myinstance.123456789012.us-east-1.rds.amazonaws.com`您可在 Amazon RDS 主控台的資料庫執行個體詳細資訊中找到端點值。
+ `-pRDS_password` – 用來指定密碼。第二次使用此參數時，需指定第二個 `-u` 參數所識別的使用者帳戶密碼。

必須在 Amazon RDS 資料庫中手動建立預存程序、觸發程序、函數或事件。如果您正在複製的資料庫中存有上述物件，則請在執行 `mysqldump` 或 `mariadb-dump` 時排除這些物件。為此，請在 `mysqldump` 或 `mariadb-dump` 命令中包含以下參數：
+ `--routines=0`
+ `--triggers=0`
+ `--events=0`

**範例**

下列範例會將本機主機上的 `world` 範例資料庫複製到 RDS for MariaDB 資料庫執行個體。將值取代為您自己的資訊。

針對 Linux、macOS 或 Unix：

```
sudo mariadb-dump -u local_user \
    --databases world \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mariadb -u rds_user \
        --port=3306 \
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com \
        -pRDS_password
```

在 Windows 中：

在命令提示字元中執行下列命令，方法是對 Windows 程式功能表中的**命令提示字元**按一下滑鼠右鍵，然後選擇**以系統管理員身分執行**。將值取代為您自己的資訊。

```
mariadb-dump -u local_user ^
    --databases world ^
    --single-transaction ^
    --compress ^
    --order-by-primary  ^
    --routines=0 ^
    --triggers=0 ^
    --events=0 ^
    -plocal_password | mariadb -u RDS_user ^
        --port=3306 ^
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com ^
        -pRDS_password
```

**注意**  
指定此範例中所顯示提示以外的憑證，作為安全最佳實務。

# 減少將資料匯入 Amazon RDS for MariaDB 資料庫執行個體時的停機時間
<a name="mariadb-importing-data-reduced-downtime"></a>

某些情況下，您可能需要將資料從支援即時應用程式的外部 MariaDB 資料庫，匯入 RDS for MariaDB 資料庫執行個體。使用下列程序，將對應用程式可用性的影響降至最低。如果您使用的是超大型資料庫，也可使用這個程序。使用此程序，您可以減少透過網路傳遞的資料量，以降低匯入成本 AWS。

此程序中，您需將資料庫資料的複本傳輸至 Amazon EC2 執行個體，並將資料匯入至新的 Amazon RDS 資料庫。接著，將應用程式重新導向 Amazon RDS 資料庫前，請使用複寫功能將 Amazon RDS 資料庫更新至與即時外部執行個體相同的最新狀態。如果外部執行個體版本是 MariaDB 10.0.24 或更高版本，且目標執行個體為 RDS for MariaDB 時，請根據全域交易識別符 (GTID) 來設定 MariaDB 複寫。若為其他情況，請根據二進位日誌座標設定複寫。建議 GTID 型複寫 (如果您的外部資料庫可以支援它)，因為 GTID 型複寫是更可信賴的方法。如需詳細資訊，請參閱 MariaDB 文件中的 [Global transaction ID](http://mariadb.com/kb/en/mariadb/global-transaction-id/) 一節。

下圖顯示將外部 MariaDB 資料庫匯入 Amazon RDS 上的 MariaDB 資料庫。

![\[工作流程，顯示將外部 MariaDB 資料庫匯入 Amazon RDS 上的 MariaDB 資料庫。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_1.png)


## 任務 1：建立現有資料庫的複本
<a name="mariadb-importing-data-reduced-downtime-copy-database"></a>

要將大量資料遷移至 RDS for MariaDB 資料庫，並將停機時間降至最低，第一步是建立來源資料的複本。

下圖顯示建立 MariaDB 資料庫的備份。

![\[顯示建立 MariaDB 資料庫備份的工作流程。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_2.png)


您可使用 `mysqldump` 或 `mariadb-dump` 公用程式，以 SQL 或分隔符號文字等任一格式建立資料庫備份。在 MariaDB 10.5 中，用戶端稱為 [mariadb-dump](https://mariadb.com/kb/en/mariadb-dump/)。從 MariaDB 11.0.1 開始，您必須使用 `mariadb-dump` 而非 `mysqldump`。建議您在非生產環境中分別測試各種格式，以了解哪種方法能將 `mysqldump` 或 `mariadb-dump` 的執行時間減至最少。

亦建議您衡量 `mysqldump` 或 `mariadb-dump` 的效能與使用分隔符號文字格式載入所帶來的效益。使用分隔符號文字格式的備份會為每個傾印的資料表分別建立定位鍵分隔文字檔案。您可以使用 `LOAD DATA LOCAL INFILE` 命令平行載入這些檔案，縮短匯入資料庫所需的時間。如需詳細資訊，請參閱《從任何來源程序匯入資料》中的 [步驟 5：載入資料](mariadb-importing-data-any-source.md#mariadb-importing-data-any-source-load-data)。

開始備份作業前，請確認在要複製到 Amazon RDS 的 MariaDB 資料庫上設定複寫選項。複寫選項包括開啟二進位日誌及設定獨一無二的伺服器 ID。設定這些選項後，伺服器會開始記錄資料庫交易，並調整至就緒狀態，以擔任後續程序的來源複寫執行個體。

請確認您了解下列建議和注意事項：
+ 對 `mysqldump` 或 `mariadb-dump` 使用 `--single-transaction` 選項，因為它會傾印資料庫的一致狀態。若要確保有效的傾印檔案，請勿在執行 `mysqldump` 或 `mariadb-dump` 時執行資料定義語言 (DDL) 陳述式。您可以為這些作業排定維護時段。
+ 從傾印檔案中排除下列結構描述：
  + `sys`
  + `performance_schema`
  + `information_schema`

  `mysqldump` 或 `mariadb-dump` 公用程式預設已排除這些結構描述。
+ 如需遷移使用者與權限，建議您使用可產生資料控制語言 (DCL) 以重建使用者與權限的工具，例如 [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html) 公用程式。

### 設定複寫選項
<a name="mariadb-importing-data-reduced-downtime-set-replication-options"></a>

1. 編輯 `my.cnf` 檔案。這個檔案通常位於 `/etc` 底下。

   ```
   sudo vi /etc/my.cnf
   ```

   將 `log_bin` 和 `server_id` 選項新增至 `[mysqld]` 部分。`log_bin` 選項會提供二進位記錄檔的檔案名稱識別符。`server_id` 選項會為來源與複本關係提供伺服器唯一識別碼。

   以下範例顯示 `my.cnf` 檔案的 `[mariadb]` 部分的更新結果。

   ```
   [mariadb]
   log-bin
   server-id=1 
   log-basename=master1
   binlog-format=mixed
   ```

   如需詳細資訊，請參閱 MariaDB 說明文件中的 [Setting the Replication Master Configuration](https://mariadb.com/docs/server/ha-and-performance/standard-replication/setting-up-replication) 一節。

1. 若要使用多可用區域資料庫叢集進行複寫，請啟用 `gtid_strict_mode`。如需詳細資訊，請參閱 MariaDB 文件中的 [gtid\$1strict\$1mode](https://mariadb.com/docs/server/ha-and-performance/standard-replication/gtid#gtid_strict_mode)。

   使用資料庫執行個體複寫不需要啟用 `gtid_strict_mode`。

1. 重新啟動 `mariadb` 服務。

   ```
   sudo service mariadb restart
   ```

### 建立現有資料庫的備份複本
<a name="mariadb-importing-data-reduced-downtime-create-backup"></a>

1. 您可使用 `mysqldump` 或 `mariadb-dump` 公用程式，以 SQL 或分隔符號文字等任一格式建立資料備份。

   如需提升效能並確保資料完整性，請使用 `mysqldump` 和 `mariadb-dump` 的 `--order-by-primary` 和 `--single-transaction` 選項。

   為避免備份中包含 MySQL 系統資料庫，請勿以 `mysqldump` 或 `mariadb-dump` 搭配使用 `--all-databases` 選項。如需詳細資訊，請參閱 MySQL 文件中的[使用 mysqldump 建立資料快照](https://dev.mysql.com/doc/mysql-replication-excerpt/8.0/en/replication-howto-mysqldump.html)。

   如有必要請使用 `chmod`，確保建立備份檔案的目錄可以寫入。
**重要**  
在 Windows 上，以管理員身分執行命令視窗。
   + 若要產生 SQL 輸出，請使用下列命令。對於 MariaDB 10.11 及更低版本，請將 `mariadb-dump` 取代為 `mysqldump`。

     在 Linux、macOS 或 Unix 中：

     ```
     sudo mariadb-dump \
         --databases database_name \
         --master-data=2  \
         --single-transaction \
         --order-by-primary \
         -r backup.sql \
         -u local_user \
         -ppassword
     ```
**注意**  
指定此範例中所顯示提示以外的憑證，作為安全最佳實務。

     在 Windows 中：

     ```
     mariadb-dump ^
         --databases database_name ^
         --master-data=2  ^
         --single-transaction ^
         --order-by-primary ^
         -r backup.sql ^
         -u local_user ^
         -ppassword
     ```
**注意**  
指定此範例中所顯示提示以外的憑證，作為安全最佳實務。
   + 若要產生分隔文字輸出，請使用下列命令。對於 MariaDB 11.01 及更高版本，請將 `mysqldump` 取代為 `mariadb-dump`。

     在 Linux、macOS 或 Unix 中：

     ```
     sudo mysqldump \
         --tab=target_directory \
         --fields-terminated-by ',' \
         --fields-enclosed-by '"' \
         --lines-terminated-by 0x0d0a \
         database_name \
         --master-data=2 \
         --single-transaction \
         --order-by-primary \
         -ppassword
     ```

     在 Windows 中：

     ```
     mysqldump ^
         --tab=target_directory ^
         --fields-terminated-by "," ^
         --fields-enclosed-by """ ^
         --lines-terminated-by 0x0d0a ^
         database_name ^
         --master-data=2 ^
         --single-transaction ^
         --order-by-primary ^
         -ppassword
     ```
**注意**  
指定此範例中所顯示提示以外的憑證，作為安全最佳實務。  
必須在 Amazon RDS 資料庫中手動建立預存程序、觸發程序、函數或事件。如果您正在複製的資料庫中存有上述物件，則請在執行 `mysqldump` 或 `mariadb-dump` 時排除這些物件。為此，請在 `mysqldump` 或 `mariadb-dump` 命令中包含以下參數：。  
`--routines=0`
`--triggers=0`
`--events=0`

     當您執行 `mysqldump` 命令並指定使用分隔符號文字格式時，系統會傳回 `CHANGE MASTER TO` 註解。此註解會包含主控端日誌檔案的名稱與位置。如果外部執行個體不是 MariaDB 10.0.23 或更舊版本，請注意 `MASTER_LOG_FILE` 和 `MASTER_LOG_POS` 的值。設定複寫時您需要這些值。

     MariaDB 版本會傳回下列輸出。

     ```
     -- Position to start replication or point-in-time recovery from
     --
     -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
     ```

1. 如果您正在使用的外部執行個體是 MariaDB 10.0.24 或更新版本，可使用 GTID 型複寫功能。在外部 MariaDB 執行個體上執行 `SHOW MASTER STATUS` 命令，以取得二進位日誌檔案的名稱和位置，接著在外部 MariaDB 執行個體上執行 `BINLOG_GTID_POS` 命令，將其轉換為 GTID。

   ```
   SELECT BINLOG_GTID_POS('binary_log_file_name', binary_log_file_position);
   ```

   請記下系統傳回的 GTID。您設定複寫時會需要使用。

1. 壓縮複製的資料，以減少複製資料到 Amazon RDS 資料庫所需的網路資源量。請記下備份檔案的大小。決定要建立多大的 Amazon EC2 執行個體時，您需要此資訊。完成後，請使用 GZIP 或您慣用的壓縮公用程式壓縮備份檔。
   + 若要壓縮 SQL 輸出，請使用下列命令：

     ```
     gzip backup.sql
     ```
   + 若要壓縮分隔符號文字輸出，請使用下列命令：

     ```
     tar -zcvf backup.tar.gz target_directory
     ```

## 任務 2：建立 Amazon EC2 執行個體並複製壓縮的資料庫
<a name="mariadb-importing-data-reduced-downtime-create-ec2-copy-database"></a>

比起直接在資料庫執行個體間複製未壓縮的資料，將壓縮的資料庫備份檔複製到 Amazon EC2 執行個體，需要的網路資源較少。資料放進 Amazon EC2 後，即可將資料直接複製到 MariaDB 資料庫。若要節省網路資源的成本，Amazon EC2 執行個體必須與 AWS 區域 Amazon RDS 資料庫執行個體位於相同的 中。在 AWS 區域 與 Amazon RDS 資料庫相同的 中擁有 Amazon EC2 執行個體，也會降低匯入期間的網路延遲。

下圖說明如何將資料庫備份複製到 Amazon EC2 執行個體。

![\[說明如何將資料庫備份複製到 Amazon EC2 執行個體的工作流程。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_3.png)


### 建立 Amazon EC2 執行個體並複製資料
<a name="mariadb-importing-data-reduced-downtime-create-ec2"></a>

1. 在您 AWS 區域 計劃建立 Amazon RDS 資料庫的 中，建立虛擬私有雲端 (VPC)、VPC 安全群組和 VPC 子網路。確認 VPC 安全群組的傳入規則會允許您應用程式連線至 AWS所需的 IP 地址。您可以指定 IP 位址範圍 (例如 `203.0.113.0/24`) 或另一個 VPC 安全群組。您可以使用 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc)來建立及管理 VPC、子網路和安全群組。如需詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的 [Amazon VPC 入門](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#getting-started)。

1. 開啟 [Amazon EC2 主控台](https://console.aws.amazon.com/ec2)，然後選擇 AWS 區域 以同時包含您的 Amazon EC2 執行個體和 Amazon RDS 資料庫。使用您在步驟 1 中建立的 VPC、子網路和安全群組，啟動 Amazon EC2 執行個體。確認您選取的執行個體類型具有足夠的儲存空間，足以供未壓縮的資料庫備份檔使用。如需 Amazon EC2 執行個體的詳細資訊，請參閱《Amazon Elastic Compute Cloud 使用者指南》**中的 [Amazon EC2 入門](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)。

1.  若要從 Amazon EC2 執行個體連線至 Amazon RDS 資料庫，請編輯您的 VPC 安全群組。新增會指定您 EC2 執行個體私有 IP 地址的傳入規則。您可在 EC2 主控台視窗中，從 **Instance** (執行個體) 窗格的 **Details** (詳細資訊) 分頁標籤找到私有 IP 地址。若要編輯 VPC 安全群組並新增傳入規則，請選取 EC2 主控台導覽窗格中的 **Security Groups** (安全群組)，接著選擇您的安全群組，然後新增 MySQL 或 Aurora 的傳入規則，指定 EC2 執行個體的私有 IP 地址。如需了解如何將傳入規則新增至 VPC 安全群組，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的[安全群組規則](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html)。

1. 將壓縮的資料庫備份檔從本機系統複製到 Amazon EC2 執行個體。如有必要請使用 `chmod`，確認您擁有 Amazon EC2 執行個體的目標目錄寫入許可。您可使用 `scp` 命令或 Secure Shell (SSH) 用戶端來複製檔案。下列命令是範例 `scp` 命令：

   ```
   scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
   ```
**重要**  
務必使用安全網路傳輸通訊協定來複製敏感資料。

1. 使用下列命令連線至您的 Amazon EC2 執行個體，並安裝最新更新與 MariaDB 客戶端工具：

   ```
   sudo yum update -y
   sudo yum install mariadb1011-client-utils -y
   ```

   如需詳細資訊，請參閱《Amazon Elastic Compute Cloud 使用者指南》**中的[連線到您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux)和 MariaDB 文件中的[MariaDB 連接器](https://mariadb.com/docs/connectors)。

1. 連線到 Amazon EC2 執行個體後，將您的資料庫備份檔解壓縮。下列命令為範例。
   + 若要將 SQL 輸出解壓縮，請使用下列命令：

     ```
     gzip backup.sql.gz -d
     ```
   + 若要將分隔符號文字輸出解壓縮，請使用下列命令：

     ```
     tar xzvf backup.tar.gz
     ```

## 任務 3：建立 MariaDB 資料庫，並從 Amazon EC2 執行個體匯入資料
<a name="mariadb-importing-data-reduced-downtime-create-database-import-data"></a>

透過在 AWS 區域 與 Amazon EC2 執行個體相同的 中建立 RDS for MariaDB 資料庫執行個體，您可以比透過網際網路從 Amazon EC2 匯入資料庫備份檔案更快。

下圖顯示將備份從 Amazon EC2 執行個體匯入 MariaDB 資料庫。

![\[工作流程，顯示將備份從 EC2 執行個體匯入 MariaDB 資料庫。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_4.png)


### 建立 MariaDB 資料庫並匯入資料
<a name="mariadb-importing-data-reduced-downtime-create-database"></a>

1. 判斷需要何種資料庫執行個體類別及多大的儲存空間，才能支援這個 Amazon RDS 資料庫預計的工作負載。在此流程的過程中，決定資料載入程序需要多少空間與處理容量才夠。同時決定處理生產工作負載所需的資源。您可根據來源 MariaDB 資料庫的大小與資源加以估計。如需詳細資訊，請參閱[ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。

1. 在 中建立包含 Amazon EC2 執行個體 AWS 區域 的資料庫執行個體。請遵循 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md) 中的指示，並使用下列準則：
   + 指定與您來源資料庫執行個體相容的資料庫引擎版本。
   + 指定與 Amazon EC2 執行個體相同的虛擬私有雲端 (VPC) 和 VPC 安全群組。這種作法可確保您的 Amazon EC2 執行個體與 Amazon RDS 執行個體能在網路上看見彼此。確保您的資料庫執行個體可以公開存取。若要如下一節中說明的方式，以您的來源資料庫設定複寫，必須將資料庫執行個體設為公開存取。
   + 匯入資料庫備份前，請勿設定多個可用區域、備份保留期或僅供讀取複本。匯入完成後，您可以設定生產執行個體的多可用區域和備份保留。

1. 檢視 Amazon RDS 資料庫的預設組態選項。如果資料庫的預設參數群組沒有您想要的組態選項，請尋找其他提供您所需選項的參數群組，或者建立新的參數群組。如需建立參數群組的詳細資訊，請參閱 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

1. 以主要使用者身分連線至新的 Amazon RDS 資料庫。建立必要的使用者，以支援需存取資料庫執行個體的管理員、應用程式和服務。Amazon RDS 資料庫的主機名稱是此資料庫執行個體的**端點**值 (不含連接埠號碼)，例如 `mysampledb.123456789012.us-west-2.rds.amazonaws.com`。端點值可在 Amazon RDS 主控台的資料庫詳細資訊中找到。

1. 連線到您的 Amazon EC2 執行個體。如需詳細資訊，請參閱《Amazon Elastic Compute Cloud 使用者指南》**中適用於 Linux 執行個體的[連線到您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux)。

1. 使用 `mysql` 命令，以遠端主機的形式從 Amazon EC2 執行個體連線至 Amazon RDS 資料庫。下列命令為範例：

   ```
   mysql -h host_name -P 3306 -u db_master_user -p
   ```

   *host\$1name* 是 Amazon RDS 資料庫端點。

1. 出現 `mysql` 提示時，請執行 `source` 命令，並傳入資料庫傾印檔案的名稱。此命令會將資料載入至 Amazon RDS 資料庫執行個體。
   + 若為 SQL 格式，請使用下列命令：

     ```
     MariaDB [(none)]> source backup.sql;
     ```
   + 若為分隔符號文字格式，請先建立資料庫 (如果它不是您在設定 Amazon RDS 資料庫時建立的預設資料庫)。

     ```
     MariaDB [(none)]> create database database_name;
     MariaDB [(none)]> use database_name;
     ```

     接著建立資料表。

     ```
     MariaDB [(none)]> source table1.sql
     MariaDB [(none)]> source table2.sql
     etc...
     ```

     然後匯入資料。

     ```
     MariaDB [(none)]> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a';
     MariaDB [(none)]> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a';
     etc...
     ```

     若要提升效能，您可透過多個連線平行執行這些操作，如此您的所有資料表就會建立並隨後載入。
**注意**  
在您一開始傾印資料表時，如果有透過 `mysqldump` 或 `mariadb-dump` 使用任何資料格式設定選項，請確認 `LOAD DATA LOCAL INFILE` 使用相同選項，才能確保資料檔案內容可順利解讀。

1. 在匯入的資料庫中，對一兩個資料表執行簡單的 `SELECT` 查詢，確認匯入作業執行成功。

如果您不再需要此程序中使用的 Amazon EC2 執行個體，請終止 EC2 執行個體以減少 AWS 資源用量。若要終止 EC2 執行個體，請參閱《Amazon Elastic Compute Cloud 使用者指南》**中的[終止執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#terminating-instances-console)。

## 任務 4：從外部資料庫將資料複寫到新的 Amazon RDS 資料庫
<a name="mariadb-importing-data-reduced-downtime-replicate-data"></a>

在複製資料並傳輸至 MariaDB 資料庫期間，您的來源資料庫可能就會完成更新。您可以使用複寫功能，讓複製的資料庫保持在與來源資料庫相同的最新狀態。

![\[工作流程，顯示將資料從外部 Amazon RDS 資料庫複寫到 Amazon RDS 上的資料庫。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_5.png)


在 Amazon RDS 資料庫上啟動複寫功能所需的許可有其限制，不供 Amazon RDS 主要使用者使用。因此，請使用適當的 Amazon RDS 預存程序：
+ [mysql.rds\$1set\$1external\$1master](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 
+ [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) 設定複寫和 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 開始複寫

### 啟動複寫
<a name="mariadb-importing-data-reduced-downtime-start-replication"></a>

在任務 1 中，[當您設定複寫選項時](#mariadb-importing-data-reduced-downtime-set-replication-options)，您會開啟二進位記錄，並為來源資料庫設定唯一的伺服器 ID。現在，您可將 Amazon RDS 資料庫設為複本，並將即時資料庫設為來源複寫執行個體。

1. 在 Amazon RDS 主控台中，將託管來源資料庫之伺服器的 IP 位址，新增至 Amazon RDS 資料庫的 VPC 安全群組。如需 VPC 安全群組的詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的[設定安全群組規則](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html)。

   您可能還需要設定本機網路，以允許從 Amazon RDS 資料庫的 IP 位址建立連線，使其能與來源執行個體通訊。若要尋找 Amazon RDS 資料庫的 IP 位址，請使用 `host` 命令：

   ```
   host host_name
   ```

   *host\$1name* 是來自 Amazon RDS 資料庫端點的 DNS 名稱，例如 `myinstance.123456789012.us-east-1.rds.amazonaws.com`。您可在 Amazon RDS 主控台的資料庫執行個體詳細資訊中找到端點值。

1. 使用您選擇的用戶端，連線至來源執行個體，然後建立複寫作業所需的使用者。此帳戶只供複寫作業使用，務必限制其存取您的網域，以提升安全性。下列命令為範例：

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**注意**  
指定此處所顯示提示以外的憑證，作為安全最佳實務。

1. 若為來源執行個體，請將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。舉例來說，若要將所有資料庫的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的「`repl_user`」使用者，請發出下列命令：

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. 如果您使用 SQL 格式建立備份檔，且外部執行個體並非 MariaDB 10.0.24 或更新版本，請透過執行下列命令來查看該檔案的內容：

   ```
   cat backup.sql
   ```

   該檔案包括 `CHANGE MASTER TO` 註解，內含主控端日誌檔案的名稱與位置。若您使用 `--master-data` 命令的 `mysqldump` 選項，備份檔內就會包含這個註解。請注意 `MASTER_LOG_FILE` 和 `MASTER_LOG_POS` 的值。

   ```
   --
   -- Position to start replication or point-in-time recovery from
   --
   
   -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
   ```

   如果您使用分隔符號文字格式來建立備份檔，且外部執行個體並非 MariaDB 10.0.24 或更高版本，您應該已在任務 1 [當您建立現有資料庫的備份複本時](#mariadb-importing-data-reduced-downtime-create-backup)中的步驟 1 時，就取得二進位日誌座標。

   如果外部執行個體是 MariaDB 10.0.24 或更高版本，您應該已在任務 1 [當您建立現有資料庫的備份複本時](#mariadb-importing-data-reduced-downtime-create-backup)中的步驟 2 時，就取得 GTID，以此啟動複寫作業。

1. 使 Amazon RDS 資料庫成為複本。如果外部執行個體並非 MariaDB 10.0.24 或更高版本，請以主要使用者身分連線至 Amazon RDS 資料庫，接著使用 [mysql.rds\$1set\$1external\$1master](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 預存程序找到來源資料庫，將其視為來源複寫執行個體。

   如果您有 SQL 格式的備份檔，請使用您在步驟 4 中所確定的主控端日誌檔案名稱和主控端日誌位置。如果您使用的是分隔符號文字格式，請使用您在建立備份檔時確定的名稱和位置。下列命令為範例：

   ```
   CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306,
       'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```
**注意**  
指定此處所顯示提示以外的憑證，作為安全最佳實務。

   如果外部執行個體是 MariaDB 10.0.24 或更高版本，請以主要使用者身分連線至 Amazon RDS 資料庫，接著使用 [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) 預存程序找到來源資料庫，將其視為來源複寫執行個體。請使用您在任務 1 [當您建立現有資料庫的備份副本時](#mariadb-importing-data-reduced-downtime-create-backup)中的步驟 2 中確定的 GTID。下列命令為範例：

   ```
   CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 1); 
   ```

   `source_server_ip_address` 是來源複寫執行個體的 IP 地址。目前不支援 EC2 私有 DNS 地址。
**注意**  
指定此處所顯示提示以外的憑證，作為安全最佳實務。

1. 在 Amazon RDS 資料庫上，若要開始複寫，請執行下列使用 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 預存程序的命令：

   ```
   CALL mysql.rds_start_replication;
   ```

1. 在 Amazon RDS 資料庫上，執行 [SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html) 命令，以判斷複本與來源複寫執行個體的狀態是否一致。`SHOW REPLICA STATUS` 命令的結果包括 `Seconds_Behind_Master` 欄位。若 `Seconds_Behind_Master` 欄位傳回的值為 0，即表示複本已是來源複寫執行個體的最新狀態。

   若為 MariaDB 10.5、10.6、10.11、11.4 或 11.8 資料庫執行個體，請使用 [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md) 預存程序，而非執行 MySQL 命令。

1. 在 Amazon RDS 資料庫處於最新狀態之後，請開啟自動備份，如此您就可以在需要時還原該資料庫。您可以使用 [Amazon RDS 主控台](https://console.aws.amazon.com/rds/)，開啟或修改 Amazon RDS 資料庫的自動備份。如需詳細資訊，請參閱[備份簡介](USER_WorkingWithAutomatedBackups.md)。

## 任務 5：將即時應用程式重新導向至 Amazon RDS 執行個體
<a name="mariadb-importing-data-reduced-downtime-redirect-app"></a>

在 MariaDB 資料庫處於來源複寫執行個體的最新狀態之後，現在您可以更新即時應用程式，以使用 Amazon RDS 執行個體。

![\[顯示停止複寫並將即時應用程式導向至 Amazon RDS 上資料庫的工作流程。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_6.png)


### 將您的即時應用程式重新導向至 MariaDB 資料庫並停止複寫
<a name="mariadb-importing-data-reduced-downtime-redirect-app-stop-app"></a>

1. 若要新增 Amazon RDS 資料庫的 VPC 安全群組，請新增託管應用程式之伺服器的 IP 地址。如需有關修改 VPC 安全群組的詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的[設定安全群組規則](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html)。

1. 確認 [SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html) 命令結果中的 `Seconds_Behind_Master` 欄位為 0，這表示複本與來源複寫執行個體保持同步。

   ```
   SHOW REPLICA STATUS;
   ```

   若為 MariaDB 10.5、10.6、10.11、11.4 或 11.8 資料庫執行個體，請使用 [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md) 程序，而非執行 MySQL 命令。

1. 交易完成時關閉所有與此來源的連線。

1. 更新您的應用程式，以使用 Amazon RDS 資料庫。這裡所謂的更新，通常包括變更連線設定，以識別 Amazon RDS 資料庫的主機名稱和連接埠、要與其連線的使用者帳戶和密碼，以及要使用的資料庫。

1. 連線到資料庫執行個體。

1. 執行下列使用 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 預存程序的命令來停止 Amazon RDS 執行個體的複寫：

   ```
   CALL mysql.rds_stop_replication;
   ```

1. 在您的 Amazon RDS 資料庫上執行下列使用 [mysql.rds\$1reset\$1external\$1master](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 預存程序來重設複寫組態，使得此執行個體不再視為複本。

   ```
   CALL mysql.rds_reset_external_master;
   ```

1. 開啟其他 Amazon RDS 功能，例如多可用區域支援和僅供讀取複本。如需詳細資訊，請參閱[設定及管理 Amazon RDS 的多可用區域部署](Concepts.MultiAZ.md)及[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

# 匯入任何 Amazon RDS for MariaDB 資料庫執行個體來源的資料
<a name="mariadb-importing-data-any-source"></a>

使用 Amazon RDS，您可以將現有的 MariaDB 資料從任何來源遷移至 RDS for MariaDB 資料庫執行個體。您可以將資料從內部部署資料庫、其他雲端提供者或現有的 RDS for MariaDB 資料庫執行個體傳輸到目標 RDS for MariaDB 資料庫執行個體。透過此功能，您可以合併資料庫、實作災難復原解決方案，或是從自我管理的資料庫轉換。常見案例包括從自我託管 MariaDB 伺服器移至完全受管的 Amazon RDS 資料庫執行個體、將多個 MariaDB 資料庫合併為單一資料庫執行個體，或使用生產資料建立測試環境。以下各節提供使用 `mariadb-dump`、備份檔案或複寫等方法來匯入 MariaDB 資料的逐步說明。

## 步驟 1：建立一般檔案，其中需包含要載入的資料
<a name="mariadb-importing-data-any-source-create-flat-files"></a>

使用逗號分隔值 (CSV) 等通用格式存放要載入的資料。每個資料表必須擁有各自的檔案 - 您無法將不同資料表的資料結合為同一檔案。以對應資料表的相同名稱命名各個檔案。副檔名可隨意指定。例如，如果資料表名稱為 `sales`，則檔案名稱可以是 `sales.csv` 或 `sales.txt`。

可以的話，依照預計載入之資料表的主索引鍵排序資料。這樣可以大幅縮短載入時間，並將磁碟儲存空間需求降至最低。

檔案越小，此程序的速度就會越快，效率越高。如有個別檔案未壓縮前的大小大於 1 GiB，請將檔案分割成多個檔案，再分別載入。

在泛 Unix 系統 (包括 Linux) 上，使用 `split` 命令。舉例來說，下列命令會將 `sales.csv` 檔案分割成多個小於 1 GiB 的檔案，且只會於分行處分割 (-C 1024m)。新檔案的名稱包含遞增數值尾碼。下列命令會產生具有 `sales.part_00` 和 `sales.part_01` 等名稱的檔案。

```
split -C 1024m -d sales.csv sales.part_ 
```

其他作業系統也有類似的公用程式可用。

您可以將一般檔案存放在任何位置。不過，當您在[步驟 5](#mariadb-importing-data-any-source-load-data) 中載入資料時，您必須從檔案所在的相同位置叫用 `mysql` Shell，或使用您在執行 `LOAD DATA LOCAL INFILE` 時的檔案絕對路徑。

## 步驟 2：禁止任何應用程式存取目標資料庫執行個體
<a name="mariadb-importing-data-any-source-stop-apps"></a>

開始載入大量資料前，請先禁止所有應用程式活動存取您預計要載入資料的目標資料庫執行個體。如果有其他工作階段會修改要載入或參考的資料表，我們尤其建議執行這項操作。這麼做可以降低載入期間違反限制條件的風險，並提升載入效能。此外，還可以將資料庫執行個體還原至載入前的時間點，以免遺失非載入作業程序所做的變更。

當然，這可能無法盡如人願，或可能不切實際。如果您無法在載入作業前停止應用程式存取資料庫執行個體，請採取因應措施，確保資料的可用性與完整性。所需的確切步驟會因特定使用案例與現場需求而異。

## 步驟 3：建立資料庫快照
<a name="mariadb-importing-data-any-source-create-snapshot"></a>

如果您預計要載入資料的新資料庫執行個體內沒有資料，您可略過此步驟。否則，建議您在資料載入前後，都要建立目標 Amazon RDS 資料庫執行個體的資料庫快照。Amazon RDS 資料庫快照是您資料庫執行個體的完整備份，可用來將您的資料庫執行個體還原至已知狀態。啟動資料庫快照作業時，資料庫執行個體的輸入/輸出操作會在資料庫備份時暫停。

若在載入前先建立資料庫快照，一旦有需要，就能將資料庫還原至載入前的狀態。若能在載入後立即拍攝資料庫快照，萬一發生事故，就不必重新載入資料。您也可以在載入後使用資料庫快照將資料匯入新的資料庫執行個體中。

下列範例會執行 AWS CLI [create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) 命令來建立`AcmeRDS`執行個體的資料庫快照，並為資料庫快照提供識別符 `"preload"`。

針對 Linux、macOS 或 Unix：

```
aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload
```

在 Windows 中：

```
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload
```

您也可以使用從資料庫快照還原的功能，建立試轉用的測試資料庫執行個體，或復原載入期間所做的變更。

請注意，如從資料庫快照還原資料庫，系統會建立新的資料庫執行個體，且如同所有資料庫執行個體一樣，該執行個體會具備獨一無二的識別碼與端點。若要還原資料庫執行個體，且不會變更端點，請先刪除資料庫執行個體，如此才能重新使用端點。

舉例來說，若要建立試轉或其他測試所需的資料庫執行個體，您必須賦予資料庫執行個體專屬識別符。在此例中，識別符是 `AcmeRDS-2`。範例使用與 `AcmeRDS-2` 關聯的端點連線至資料庫執行個體。如需詳細資訊，請參閱 [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)。

對於 Linux、macOS 或 Unix：

```
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload
```

在 Windows 中：

```
aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS-2 ^
    --db-snapshot-identifier preload
```

若要重新使用現有端點，請先刪除資料庫執行個體，然後指定相同的識別碼給還原的資料庫。如需詳細資訊，請參閱 [delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html)。

下列範例也會在刪除資料庫執行個體前擷取其最終資料庫快照。此為選用操作，但建議您採用。

對於 Linux、macOS 或 Unix：

```
aws rds delete-db-instance \
    --db-instance-identifier AcmeRDS \
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload
```

在 Windows 中：

```
aws rds delete-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload
```

## 步驟 4 (選用)：關閉 Amazon RDS 自動備份
<a name="mariadb-importing-data-any-source-turn-off-automated-backups"></a>

**警告**  
如果您需要執行時間點復原，請勿關閉自動備份。

關閉自動備份可產生最佳化效能，但並非資料載入作業的必要功能。關閉自動備份會清除所有現有的備份。因此，在您關閉自動備份後，就無法執行時間點復原。關閉自動備份不會影響手動資料庫快照。所有現有手動資料庫快照仍可用於復原作業。

關閉自動備份功能可將載入時間減少約 25%，並可降低載入期間所需的儲存空間。如果您預計載入資料的新資料庫執行個體不含任何資料，則要加快載入速度，並避免備份產生額外的儲存空間需求，關閉備份功能是最簡單的方式。不過，在某些情況下，您可能會計劃載入已包含資料的資料庫執行個體。如果是這樣，請權衡關閉備份功能的好處，以及無法執行時間點復原功能的影響。

預設情況下，資料庫執行個體會開啟自動備份功能 (保留期為 1 天)。若要關閉自動備份，請將備份保留期設為零。載入後，您可以將備份保留期設為非零的值，以重新開啟自動備份功能。若要開啟或關閉備份功能，Amazon RDS 會關閉資料庫執行個體，然後重新啟動，以便開啟或關閉 MariaDB 記錄功能。

執行 AWS CLI `modify-db-instance`命令將備份保留期設定為零，並立即套用變更。將保留期設為 0 需要重新啟動資料庫執行個體，請靜待重新啟動作業完成，再繼續操作。如需詳細資訊，請參閱 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)。

對於 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --apply-immediately \
    --backup-retention-period 0
```

在 Windows 中：

```
aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --apply-immediately ^
    --backup-retention-period 0
```

您可以使用 AWS CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令來檢查資料庫執行個體的狀態。下列範例顯示 `AcmeRDS` 資料庫執行個體的資料庫執行個體狀態：

```
aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"
```

當資料庫執行個體狀態為 `available` 時，您即可繼續進行下一個步驟。

## 步驟 5：載入資料
<a name="mariadb-importing-data-any-source-load-data"></a>

若要將資料列從一般檔案讀取至資料庫資料表，請使用 MariaDB `LOAD DATA LOCAL INFILE` 陳述式。

**注意**  
您必須從一般檔案所在的相同位置或使用您在執行 `LOAD DATA LOCAL INFILE` 時的檔案絕對路徑來調用 `mariadb` Shell。

下列範例說明如何從名為 `sales.txt` 的檔案將資料載入至資料庫中名為 `Sales` 的資料表：

```
MariaDB [(none)]> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\';
Query OK, 1 row affected (0.01 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0
```

如需 `LOAD DATA` 陳述式的詳細資訊，請參閱 MariaDB 文件中的 [LOAD DATA INFILE](https://mariadb.com/docs/server/reference/sql-statements/data-manipulation/inserting-loading-data/load-data-into-tables-or-index/load-data-infile)。

## 步驟 6：重新開啟 Amazon RDS 自動備份
<a name="mariadb-importing-data-any-source-turn-on-automated-backups"></a>

如果您在[步驟 4](#mariadb-importing-data-any-source-turn-off-automated-backups) 關閉了 Amazon RDS 自動備份，在載入完成後，您可以將備份保留期間設回載入前的值，以重新開啟 Amazon RDS 自動備份。如步驟 4 所述，Amazon RDS 會重新啟動資料庫執行個體，所以短暫停機是正常現象。

下列範例會執行 AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) `AcmeRDS` 命令，以開啟資料庫執行個體的自動備份，並將保留期間設定為一天：

針對 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --backup-retention-period 1 \
    --apply-immediately
```

在 Windows 中：

```
aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --backup-retention-period 1 ^
    --apply-immediately
```

# 使用 Amazon RDS 中的 MariaDB 複寫
<a name="USER_MariaDB.Replication"></a>

您通常會使用僅供讀取複本來設定 Amazon RDS 資料庫執行個體間的複寫。如需僅供讀取複本的一般資訊，請參閱 [使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。如需在 Amazon RDS for MariaDB 上使用僅供讀取複本的特定資訊，請參閱[使用 MariaDB 僅供讀取複本](USER_MariaDB.Replication.ReadReplicas.md)。

您也可依據二進位日誌座標設定複寫供 MariaDB 資料庫執行個體使用。以 MariaDB 執行個體而言，您也可依據毀損安全功能提升的全域交易 ID (GTID) 來設定複寫。如需詳細資訊，請參閱[使用外部來源執行個體設定 GTID 式複寫](MariaDB.Procedural.Replication.GTID.md)。

下列為適用於 RDS for MariaDB 的其他複寫選項：
+ 您可以在 RDS for MariaDB 資料庫執行個體，以及位於 Amazon RDS 外部的 MySQL 或 MariaDB 執行個體之間，設定複寫。如需使用外部來源設定複寫的詳細資訊，請參閱 [使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.ReplMariaDB.md)。
+ 您可將複寫作業設定為從 Amazon RDS 外部的 MySQL 或 MariaDB 執行個體匯入資料庫，或者設定為將資料庫匯出至這類執行個體。如需詳細資訊，請參閱[減少將資料匯入 Amazon RDS for MariaDB 資料庫執行個體時的停機時間](mariadb-importing-data-reduced-downtime.md)及[使用複寫從 MySQL 資料庫執行個體匯出資料](MySQL.Procedural.Exporting.NonRDSRepl.md)。

對於以上任何複寫選項，您可以使用基於列的複寫、基於陳述式或混合式複寫。基於列的複寫只會複寫 SQL 陳述式所變更的列。基於陳述式的複寫會複寫整個 SQL 陳述式。混合式複寫會盡可能使用基於陳述式的複寫，但是當基於陳述式的複寫有不安全的 SQL 陳述式執行時，則會切換到基於列的複寫。在大多數情況下，建議使用混合式複寫。資料庫執行個體的二進位日誌格式決定複寫是基於列、基於陳述式或混合式。如需有關設定二進位日誌格式的資訊，請參閱[設定 MariaDB 二進位記錄](USER_LogAccess.MariaDB.BinaryFormat.md)。

如需 MariaDB 版本之間複寫相容性的相關資訊，請參閱 MariaDB 文件中的[複寫相容性](https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/#replication-compatibility)。

**Topics**
+ [使用 MariaDB 僅供讀取複本](USER_MariaDB.Replication.ReadReplicas.md)
+ [使用外部來源執行個體設定 GTID 式複寫](MariaDB.Procedural.Replication.GTID.md)
+ [使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.ReplMariaDB.md)

# 使用 MariaDB 僅供讀取複本
<a name="USER_MariaDB.Replication.ReadReplicas"></a>

接下來，您可以找到在 Amazon RDS for MariaDB 上使用僅供讀取複本的特定資訊。如需僅供讀取複本的一般資訊及使用說明，請參閱 [使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。
+ [設定與 MariaDB 的複寫篩選條件](USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.md)
+ [透過 MariaDB 設定延遲複寫](USER_MariaDB.Replication.ReadReplicas.DelayReplication.md)
+ [使用 MariaDB 更新僅供讀取複本](USER_MariaDB.Replication.ReadReplicas.Updates.md)
+ [使用 MariaDB 處理多可用區域僅供讀取複本的部署](USER_MariaDB.Replication.ReadReplicas.MultiAZ.md)
+ [搭配 RDS for MariaDB 使用階層式僅供讀取複本](USER_MariaDB.Replication.ReadReplicas.Cascading.md)
+ [監控 MariaDB 僅供讀取複本](USER_MariaDB.Replication.ReadReplicas.Monitor.md)
+ [透過 MariaDB 僅供讀取複本啟動與停用複寫](USER_MariaDB.Replication.ReadReplicas.StartStop.md)
+ [對 MariaDB 僅供讀取複本的問題進行故障診斷](USER_ReadRepl.Troubleshooting.MariaDB.md)

## 使用 MariaDB 設定僅供讀取複本
<a name="USER_MariaDB.Replication.ReadReplicas.Configuration"></a>

MariaDB 資料庫執行個體做為複寫來源前，務必將備份保留期設定為 0 以外的值，藉此開啟來源資料庫執行個體的自動備份。若僅供讀取複本能讓其他僅供讀取複本做為來源資料庫執行個體，則亦適用此要求。

您可以從相同區域內的一個資料庫執行個體建立至多 15 個僅供讀取複本。若希望複寫作業順利運作，每個僅供讀取複本具備的運算和儲存資源數量應與來源資料庫執行個體相同。若您擴展來源資料庫執行個體，也要擴展僅供讀取複本。

RDS for MariaDB 支援階層式僅供讀取複本。若要了解如何設定階層式僅供讀取複本，請參閱 [搭配 RDS for MariaDB 使用階層式僅供讀取複本](USER_MariaDB.Replication.ReadReplicas.Cascading.md)。

您可以同時執行多個僅供讀取複本建立，並刪除參考相同來源資料庫執行個體的動作。執行這些動作時，請將每個來源執行個體的僅供讀取複本數目限制在 15 個之內。

# 設定與 MariaDB 的複寫篩選條件
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters"></a>

您可以使用複寫篩選條件來指定要與僅供讀取複本一起複寫的資料庫和資料表。複寫篩選條件可以包含複寫中的資料庫和資料表，或將其排除在複寫之外。

下列是複寫篩選條件的一些應用案例：
+ 要縮小僅供讀取複本的大小。使用複寫篩選，您可以排除僅供讀取複本不需要的資料庫和資料表。
+ 基於安全考量，要將資料庫和資料表從僅供讀取複本中排除。
+ 為不同僅供讀取複本的特定應用案例複寫不同的資料庫和資料表。例如，您可以使用特定僅供讀取複本進行分析或分區。
+ 對於在不同 AWS 區域 中具有僅供讀取複本的資料庫執行個體，可在不同 AWS 區域 中複寫不同的資料庫或資料表。

**注意**  
您也可以使用複寫篩選條件來指定要與主要 MariaDB 資料庫執行個體 (設定為輸入複寫拓撲中的複寫) 一起複寫的資料庫和資料表。如需此組態的詳細資訊，請參閱「[使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.Repl.md)」。

**Topics**
+ [設定適用於 RDS for MariaDB 的複寫篩選參數](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Configuring)
+ [RDS for MariaDB 的複寫篩選限制](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Limitations)
+ [RDS for MariaDB 的複寫篩選範例](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Examples)
+ [檢視僅供讀取複本的複寫篩選條件](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Viewing)

## 設定適用於 RDS for MariaDB 的複寫篩選參數
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Configuring"></a>

要設定複寫篩選條件，請在僅供讀取複本上設定下列複寫篩選參數：
+ `replicate-do-db` – 將變更複寫至指定的資料庫。當您為僅供讀取複本設定此參數時，只會複寫參數中指定的資料庫。
+ `replicate-ignore-db` – 請勿將變更複寫至指定的資料庫。為僅供讀取複本設定 `replicate-do-db` 參數時，不會評估此參數。
+ `replicate-do-table` – 將變更複製到指定的資料表。當您為僅供讀取複本設定此參數時，只會複寫參數中指定的資料表。此外，設定 `replicate-do-db` 或 `replicate-ignore-db` 參數時，必須使用僅供讀取複本將包含指定資料表的資料庫納入複寫中。
+ `replicate-ignore-table` – 請勿將變更複寫至指定的資料表。為僅供讀取複本設定 `replicate-do-table` 參數時，不會評估此參數。
+ `replicate-wild-do-table` – 根據指定的資料庫和資料表名稱模式複寫資料表。支援 `%` 和 `_` 萬用字元。設定 `replicate-do-db` 或 `replicate-ignore-db` 參數時，請務必使用僅供讀取複本將包含指定資料表的資料庫納入複寫中。
+ `replicate-wild-ignore-table` – 請勿根據指定的資料庫和資料表名稱模式複寫資料表。支援 `%` 和 `_` 萬用字元。為僅供讀取複本設定 `replicate-do-table` 或 `replicate-wild-do-table` 參數時，不會評估此參數。

系統會按照列出的順序對參數進行評估。如需有關這些參數如何運作的詳細資訊，請參閱 [MariaDB 文件](https://mariadb.com/kb/en/replication-filters/#replication-filters-for-replication-slaves)。

根據預設，這些參數中的每個參數都有一個空值。在每個僅供讀取複本上，您可以使用這些參數來設定、變更和刪除複寫篩選條件。當您設定其中一個參數時，請使用逗號將每個篩選條件與其他篩選條件分隔。

您可以在 `%` 和 `_` 參數中使用 `replicate-wild-do-table` 和 `replicate-wild-ignore-table` 萬用字元。`%` 萬用字元等同於任意數目的字元，而 `_` 萬用字元只會等同於一個字元。

來源資料庫執行個體的二進位記錄格式對複寫非常重要，因為它會決定資料變更的記錄。`binlog_format` 參數的設定會決定複寫是以資料列為基礎還是以陳述式為基礎。如需詳細資訊，請參閱 [設定 MariaDB 二進位記錄](USER_LogAccess.MariaDB.BinaryFormat.md)。

**注意**  
無論來源資料庫執行個體上的 `binlog_format` 設定為何，所有資料定義語言 (DDL) 陳述式都會複寫為陳述式。

## RDS for MariaDB 的複寫篩選限制
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Limitations"></a>

下列限制適用於 RDS for MariaDB 的複寫篩選：
+ 每個複寫篩選參數都有 2,000 個字元的限制。
+ 複寫篩選條件不支援逗號。
+ 不支援用於二進位日誌篩選的 MariaDB `binlog_do_db` 和 `binlog_ignore_db` 選項。
+ 複寫篩選不支援 XA 交易。

  如需詳細資訊，請參閱 MySQL 文件中的 [XA 交易的限制](https://dev.mysql.com/doc/refman/8.0/en/xa-restrictions.html)。
+ RDS for MariaDB 10.2 版不支援複寫篩選。

## RDS for MariaDB 的複寫篩選範例
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Examples"></a>

若要設定僅供讀取複本的複寫篩選，請修改與僅供讀取複本關聯之參數群組中的複寫篩選參數。

**注意**  
您無法修改預設參數群組。如果僅供讀取複本使用預設參數群組，請建立新的參數群組，並將它與僅供讀取複本建立關聯。如需資料庫參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

您可以使用 AWS 管理主控台、AWS CLI 或 RDS API 在參數群組中設定參數。如需有關設定參數的詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。當您在參數群組中設定參數時，與參數群組關聯的所有資料庫執行個體都會使用參數設定。如果您在參數群組中設定複寫篩選參數，請確定參數群組僅與僅供讀取複本相關聯。將來源資料庫執行個體的複寫篩選參數保留空白。

下列範例會使用 AWS CLI 設定參數。這些範例將 `ApplyMethod` 設定為 `immediate`，以便在 CLI 命令完成後立即發生參數變更。如果您想要在僅供讀取複本重新啟動後套用擱置變更，請將設定 `ApplyMethod` 為 `pending-reboot`。

下列範例會設定複寫篩選條件：
+ [Including databases in replication](#rep-filter-in-dbs-mariadb)
+ [Including tables in replication](#rep-filter-in-tables-mariadb)
+ [Including tables in replication with wildcard characters](#rep-filter-in-tables-wildcards-mariadb)
+ [Escaping wildcard characters in names](#rep-filter-escape-wildcards-mariadb)
+ [Excluding databases from replication](#rep-filter-ex-dbs-mariadb)
+ [Excluding tables from replication](#rep-filter-ex-tables-mariadb)
+ [Excluding tables from replication using wildcard characters](#rep-filter-ex-tables-wildcards-mariadb)<a name="rep-filter-in-dbs-mariadb"></a>

**Example 在複寫中包含資料庫**  
下列範例包含複寫中的 `mydb1` 和 `mydb2` 資料庫。當您為僅供讀取複本設定 `replicate-do-db` 時，只會複寫參數中指定的資料庫。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```
針對 Windows：  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-in-tables-mariadb"></a>

**Example 在複寫中包含資料表**  
下列範例包含複寫資料庫 `table1` 中的 `table2` 和 `mydb1` 資料表。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```
針對 Windows：  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-in-tables-wildcards-mariadb"></a>

**Example 使用萬用字元在複寫中包含資料表**  
下列範例包含複寫時在資料庫 `orders` 中名稱開頭為 `returns` 和 `mydb` 的資料表。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```
針對 Windows：  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-escape-wildcards-mariadb"></a>

**Example 逸出名稱中的萬用字元**  
下列範例會示範如何使用逸出字元 `\` 來逸出屬於名稱一部分的萬用字元。  
假設您在資料庫 `mydb1` 中有數個以 `my_table` 開頭的資料庫名稱，而且您想要在複寫中包含這些資料表。資料表名稱包含底線，也是萬用字元，因此此範例會逸出資料表名稱中的底線。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"
```
針對 Windows：  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-dbs-mariadb"></a>

**Example 從複寫中排除資料庫**  
下列範例會從複寫中排除 `mydb1` 和 `mydb2` 資料庫。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```
針對 Windows：  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-tables-mariadb"></a>

**Example 從複寫中排除資料表**  
下列範例會從複寫中排除資料庫 `table1` 中的資料表 `table2` 和 `mydb1`。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```
針對 Windows：  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-tables-wildcards-mariadb"></a>

**Example 使用萬用字元從複寫中排除資料表**  
下列範例會從複寫中排除資料庫 `orders` 中名稱開頭為 `returns` 和 `mydb` 的資料表。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```
針對 Windows：  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```

## 檢視僅供讀取複本的複寫篩選條件
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Viewing"></a>

您可以使用下列方式檢視僅供讀取複本的複寫篩選條件：
+ 檢查與僅供讀取複本關聯之參數群組中複寫篩選參數的設定。

  如需說明，請參閱「[在 Amazon RDS 中檢視資料庫參數群組的參數值](USER_WorkingWithParamGroups.Viewing.md)」。
+ 在 MariaDB 用戶端中，連線至僅供讀取複本並執行 `SHOW REPLICA STATUS` 陳述式。

  在輸出中，下列欄位會顯示僅供讀取複本的複寫篩選條件：
  + `Replicate_Do_DB`
  + `Replicate_Ignore_DB`
  + `Replicate_Do_Table`
  + `Replicate_Ignore_Table`
  + `Replicate_Wild_Do_Table`
  + `Replicate_Wild_Ignore_Table`

  如需有關這些欄位的詳細資訊，請參閱 MySQL 文件中的[檢查複寫狀態](https://dev.mysql.com/doc/refman/8.0/en/replication-administration-status.html)。
**注意**  
MariaDB 以前的版本使用 `SHOW SLAVE STATUS` 而不是 `SHOW REPLICA STATUS`。如果您使用的 MariaDB 是 10.5 之前的版本，請使用 `SHOW SLAVE STATUS`。

# 透過 MariaDB 設定延遲複寫
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication"></a>

您可以將延遲複寫做為災難復原的策略。利用延遲複寫功能來指定最短時間 (以秒為單位)，即可延遲來源到僅供讀取複本的複寫作業。在發生損毀之時 (例如不小心刪除資料表)，若要快速完成事後復原作業，則請執行下列步驟：
+ 停止僅供讀取複本的複寫作業，以免系統將造成損毀的變更內容傳送到該複本。

  若要停止複寫作業，請使用 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 預存程序。
+ 若要將僅供讀取複本提升為新的來源資料庫執行個體，請參照[提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md)中的指示。

**注意**  
MariaDB 10.6 及更高版本支援延遲複寫。
使用預存程序來設定延遲複寫。您無法透過 AWS 管理主控台、AWS CLI 或 Amazon RDS API 設定延遲複寫。
您可以在延遲複寫組態中使用基於全域交易識別符 (GTID) 的複寫。

**Topics**
+ [在僅供讀取複本建立期間設定延遲複寫](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.ReplicaCreation)
+ [修改現有僅供讀取複本的延遲複寫](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.ExistingReplica)
+ [提升僅供讀取複本](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.Promote)

## 在僅供讀取複本建立期間設定延遲複寫
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication.ReplicaCreation"></a>

若要為任何未來從資料庫執行個體建立的僅供讀取複本設定延遲複寫，請利用 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 參數來執行 `target delay` 預存程序。

**在僅供讀取複本建立期間設定延遲複寫**

1. 透過 MariaDB 用戶端，以主要使用者的身分連接至 MariaDB 資料庫執行個體，該執行個體將成為僅供讀取複本的來源。

1. 利用 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 參數來執行 `target delay` 預存程序。

   例如，您可以執行下列預存程序，藉此設定複寫至少會延遲一小時 (3600 秒)，並將該設定套用至目前資料庫執行個體所建立的任何僅供讀取複本。

   ```
   call mysql.rds_set_configuration('target delay', 3600);
   ```
**注意**  
一旦執行此預存程序，系統即會針對任何透過 AWS CLI 或 Amazon RDS API 建立的僅供讀取複本，將複寫延遲時間設定為指定的秒數。

## 修改現有僅供讀取複本的延遲複寫
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication.ExistingReplica"></a>

若要修改現有僅供讀取複本的延遲複寫，請執行 [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) 預存程序。

**修改現有僅供讀取複本的延遲複寫**

1. 透過 MariaDB 用戶端，以主要使用者的身分連接至僅供讀取複本。

1. 使用 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 預存程序來停止複寫作業。

1. 執行 [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) 預存程序。

   例如，您可以執行下列預存程序，藉此設定複寫至少會延遲一小時 (3600 秒)，並將該設定套用至僅供讀取複本。

   ```
   call mysql.rds_set_source_delay(3600);
   ```

1. 使用 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 預存程序來啟動複寫作業。

## 提升僅供讀取複本
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication.Promote"></a>

使用災難復原功能時，您可以參照中的指示，在複寫作業停止後將僅供讀取複本提升為新的來源資料庫執行個體。如需提升僅供讀取複本的相關資訊，請參閱 [提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md)。

# 使用 MariaDB 更新僅供讀取複本
<a name="USER_MariaDB.Replication.ReadReplicas.Updates"></a>

僅供讀取複本專門用來支援讀取查詢，但建議您不定期進行更新。例如，您可能需要新增索引來加快特定查詢類型存取複本的速度。您可以在僅供讀取複本的資料庫參數群組中將 `read_only` 參數設定為 **0**，以啟用更新。

# 使用 MariaDB 處理多可用區域僅供讀取複本的部署
<a name="USER_MariaDB.Replication.ReadReplicas.MultiAZ"></a>

您可以從單一可用區域或多可用區域的資料庫執行個體部署建立僅供讀取複本。您可使用異地同步備份部署來改善重要資料的耐用性和可用性，但無法使用異地同步備份部署來處理僅供讀取的查詢。反之，您可從高流量的多可用區域資料庫執行個體建立僅供讀取複本，藉此卸載僅供讀取的查詢。若異地同步備份部署的來源執行個體容錯移轉為次要，任何相關聯的僅供讀取複本會自動將複寫作業來源切換成次要 (現為主要)。如需詳細資訊，請參閱 [設定及管理 Amazon RDS 的多可用區域部署](Concepts.MultiAZ.md)。

您可以建立僅供讀取複本並用作多可用區域資料庫執行個體。Amazon RDS 會在另一個可用區域中建立您的複本的待命複本，以獲得該複本的容錯移轉支援。建立您的僅供讀取複本做為多可用區域資料庫執行個體，與來源資料庫是否為多可用區域資料庫執行個體無關。

# 搭配 RDS for MariaDB 使用階層式僅供讀取複本
<a name="USER_MariaDB.Replication.ReadReplicas.Cascading"></a>

RDS for MariaDB 支援階層式僅供讀取複本。利用*階層式僅供讀取複本*，您可以擴展讀取，無須增加來源 RDS for MariaDB 資料庫執行個體的額外負荷。

利用階層式僅供讀取複本，您的 RDS for MariaDB 資料庫執行個體會將資料傳送至鏈結中的第一個僅供讀取複本。之後，該僅供讀取複本會將資料傳送至鏈結中的第二個複本，依此類推。最終結果是鏈結中的所有僅供讀取複本皆具有來自 RDS for MariaDB 資料庫執行個體的變更，但並無僅在來源資料庫執行個體上的額外負荷。

您可從來源 RDS for MariaDB 資料庫執行個體的鏈結中建立一系列最多三個僅供讀取複本。例如，假設您有一個 RDS for MariaDB 資料庫執行個體 `mariadb-main`。您可以執行下列作業：
+ 從 `mariadb-main` 開始，建立鏈結中的第一個僅供讀取複本 `read-replica-1`。
+ 接下來，從 `read-replica-1`，建立鏈結中的下一個僅供讀取複本 `read-replica-2`。
+ 最後，從 `read-replica-2`，建立鏈結中的第三個僅供讀取複本 `read-replica-3`。

除了 `mariadb-main` 系列中的第三個階層式僅供讀取複本之外，您無法建立另一個僅供讀取複本。從 RDS for MariaDB 來源資料庫執行個體至一系列階層式僅供讀取複本尾端的完整執行個體系列最多可包含四個資料庫執行個體。

若要使階層式僅供讀取複本可以運作，每個來源 RDS for MariaDB 資料庫執行個體都必須開啟自動備份。若要在僅供讀取複本上開啟自動備份，首先建立該僅供讀取複本，然後修改該複本來開啟自動備份。如需詳細資訊，請參閱 [建立僅供讀取複本](USER_ReadRepl.Create.md)。

與任何僅供讀取複本一樣，您可提升作為階層式一部分的僅供讀取複本。從僅供讀取複本鏈結中提升僅供讀取複本將會從鏈結中移除該僅供讀取複本。例如，假設您想要將部分工作負載從 `mariadb-main` 資料庫執行個體移至新的執行個體，僅供會計部門使用。假設範例中的三個僅供讀取複本鏈結，您決定提升 `read-replica-2`。該鏈或受到下列影響：
+ 提升 `read-replica-2` 會將其從複寫鏈結中移除。
  + 其現在是一個完整的讀取/寫入資料庫執行個體。
  + 這會持續複寫至 `read-replica-3`，就像在提升之前所做的一樣。
+ 您的 `mariadb-main` 會持續複寫至 `read-replica-1`。

如需提升僅供讀取複本的相關詳細資訊，請參閱 [提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md)。

# 監控 MariaDB 僅供讀取複本
<a name="USER_MariaDB.Replication.ReadReplicas.Monitor"></a>

針對 MariaDB 僅供讀取複本，您可以在 Amazon CloudWatch 中透過檢視 Amazon RDS `ReplicaLag` 指標來監控複寫延遲。`ReplicaLag` 指標會回報 `Seconds_Behind_Master` 命令的 `SHOW REPLICA STATUS` 欄位值。

**注意**  
MariaDB 以前的版本使用 `SHOW SLAVE STATUS` 而不是 `SHOW REPLICA STATUS`。如果您使用的 MariaDB 是 10.5 之前的版本，請使用 `SHOW SLAVE STATUS`。

MariaDB 複寫延遲的常見原因如下：
+ 網路停機。
+ 寫入僅供讀取複本上的資料表仍有索引。若未將僅供讀取複本的 `read_only` 參數設為 0，可能會中斷複寫。
+ 使用非交易儲存引擎 (例如 MyISAM)。複寫功能僅支援 MariaDB 上的 InnoDB 儲存引擎。

當 `ReplicaLag` 指標到達 0，複本即已跟上來源資料庫執行個體。如果 `ReplicaLag` 指標傳回 -1，表示複寫目前為非作用中。`ReplicaLag` = -1 相當於 `Seconds_Behind_Master` = `NULL`。

# 透過 MariaDB 僅供讀取複本啟動與停用複寫
<a name="USER_MariaDB.Replication.ReadReplicas.StartStop"></a>

您可呼叫系統預存程序 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 和 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication)，藉此停止並重新啟動 Amazon RDS 資料庫執行個體的複寫程序。針對長時間操作 (如建立大型索引) 在兩個 Amazon RDS 執行個體間進行複寫時，即可採取此操作。匯入或匯出資料庫時，也必須停止並啟動複寫作業。如需詳細資訊，請參閱[減少將資料匯入 Amazon RDS for MariaDB 資料庫執行個體時的停機時間](mariadb-importing-data-reduced-downtime.md)及[使用複寫從 MySQL 資料庫執行個體匯出資料](MySQL.Procedural.Exporting.NonRDSRepl.md)。

若複寫作業停止連續超過 30 天 (不論手動停止或由於複寫錯誤)，Amazon RDS 會結束來源資料庫執行個體和所有僅供讀取複本間的複寫作業。這樣做的原因在於，避免來源資料庫執行個體的儲存需求增加以及長期容錯移轉。僅供讀取複本資料庫執行個體仍可供使用。然而，無法恢復複寫作業，因為在複寫作業結束後，僅供讀取複本所需的二進位日誌已從來源資料庫執行個體刪除。您可建立新的僅供讀取複本供來源資料庫執行個體使用，以重新建立複寫作業。

# 對 MariaDB 僅供讀取複本的問題進行故障診斷
<a name="USER_ReadRepl.Troubleshooting.MariaDB"></a>

MariaDB 的複寫技術採取非同步，因此，來源資料庫執行個體的 `BinLogDiskUsage` 和僅供讀取複本上的 `ReplicaLag` 預料會偶爾增加。例如，來源資料庫執行個體可同時出現大量寫入操作。相對而言，僅供讀取複本的寫入操作則使用單一 I/O 執行緒序列化，這可能導致來源執行個體和僅供讀取複本之間的延遲。如需 MariaDB 文件中的僅供讀取複本詳細資訊，請造訪[複寫概觀](http://mariadb.com/kb/en/mariadb/replication-overview/)。

您可執行下列動作，減少來源資料庫執行個體的更新與僅供讀取複本的後續更新間的延遲：
+ 將僅供讀取複本的儲存體大小和資料庫執行個體類別大小，設定為等同於來源資料庫執行個體。
+ 確保來源資料庫執行個體和僅供讀取複本所使用之資料庫參數群組中的參數設定相容。如需詳細資訊和範例，請參閱本節稍後討論的 `max_allowed_packet` 參數。

Amazon RDS 會監控複寫您的僅供讀取複本的狀態，並在複寫因任何原因停止時，將僅供讀取複本執行個體上的 `Replication State` (複寫狀態) 欄位更新為 `Error` (錯誤)。一個可能的範例為，僅供讀取複本上執行的 DML 查詢，與來源資料庫執行個體的更新相衝突。

您可以檢視 `Replication Error` 欄位，藉此檢閱 MariaDB 引擎擲出之相關聯錯誤的詳細資訊。也會產生指出僅供讀取複本之狀態的事件，包括 [RDS-EVENT-0045](USER_Events.Messages.md#RDS-EVENT-0045)、[RDS-EVENT-0046](USER_Events.Messages.md#RDS-EVENT-0046) 和 [RDS-EVENT-0047](USER_Events.Messages.md#RDS-EVENT-0047)。如需事件和訂閱事件的詳細資訊，請參閱[使用 Amazon RDS 事件通知](USER_Events.md)。如果傳回了 MariaDB 錯誤訊息，請在 [MariaDB 錯誤訊息文件](http://mariadb.com/kb/en/mariadb/mariadb-error-codes/)中檢閱錯誤。

其中一個常見問題就是僅供讀取複本的 `max_allowed_packet` 參數值小於來源資料庫執行個體的 `max_allowed_packet` 參數值，因而導致複寫錯誤。`max_allowed_packet` 參數是能夠在資料庫參數群組中設定的自訂參數，專用來指定可在資料庫上執行的 DML 程式碼大小上限。在部分案例中，與來源資料庫執行個體建立關聯之資料庫參數群組的 `max_allowed_packet` 參數值，會小於與來源僅供讀取複本建立關聯之資料庫參數群組的 `max_allowed_packet` 參數值。以這些情況而言，複寫程序可能會擲出錯誤 (Packet 大於 max\$1allowed\$1packet 位元組)，並停止複寫作業。您可以透過讓來源和僅供讀取複本使用具有相同 `max_allowed_packet` 參數值的資料庫參數群組，藉此修正錯誤。

可能造成複寫錯誤的其他常見情況包括下列：
+ 寫入僅供讀取複本上的資料表。如果您在僅供讀取複本上建立索引，您需要將 `read_only` 參數設為 **0** 才能建立索引。如果您要寫入僅供讀取複本上的資料表，可能中斷複寫。
+ 使用非交易式存放引擎 (例如 MyISAM)。僅供讀取複本需要交易式存放引擎。複寫功能僅支援 MariaDB 上的 InnoDB 儲存引擎。
+ 使用不安全的非確定性查詢 (例如 `SYSDATE()`)。如需詳細資訊，請參閱[二進位日誌中安全和不安全陳述式的判定](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html)。

若您認為可安全略過錯誤，請遵循 [略過 RDS for MySQL 目前的複寫錯誤](Appendix.MySQL.CommonDBATasks.SkipError.md) 中所述的步驟。否則，您可以刪除僅供讀取複本，並使用相同的資料庫執行個體識別碼建立執行個體，讓端點與您的舊僅供讀取複本端點保持相同。如果複寫錯誤已修復，`Replication State` (複寫狀態) 會變更為 *replicating (複寫中)*。

在某些情況下，如果程序失敗的期間未排清部分二進位日誌 (binlog) 事件，便無法將 MariaDB 資料庫執行個體的僅供讀取複本切換至次要資料庫。在這種情況下，手動刪除並重新建立僅供讀取複本。如果要降低此情況發生的機率，則可設定以下參數值：`sync_binlog=1` 和 `innodb_flush_log_at_trx_commit=1`。但這些設定可能會降低效能，所以請先測試這些設定所帶來的影響，再於生產環境中實作變更內容。

# 使用外部來源執行個體設定 GTID 式複寫
<a name="MariaDB.Procedural.Replication.GTID"></a>

您可以根據全域交易識別符 (GTID) 從 10.0.24 版或更新版本的外部 MariaDB 執行個體設定複寫到 RDS for MariaDB 資料庫執行個體。在 Amazon RDS 上設定外部來源執行個體和複本時，按照這些準則操作：
+ 監控 RDS for MariaDB 資料庫執行個體 (您的複本) 的容錯移轉事件。若發生容錯移轉，資料庫執行個體 (您的複本) 可能會以不同的網路地址，在新主機上重新建立。如需如何監控容錯移轉事件的資訊，請參閱[使用 Amazon RDS 事件通知](USER_Events.md)。
+ 確定已將二進位日誌 (binlogs) 套用至複本前，都要將二進位日誌保留在來源執行個體上。如此一來，發生故障時，您就可以還原來源執行個體。
+ 對 Amazon RDS 上的 MariaDB 資料庫執行個體啟用自動備份。如果您需要重新同步來源執行個體與複本，開啟自動備份功能可確保您能夠將複本還原至特定時間點。如需備份和時間點還原的相關資訊，請參閱[備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

**注意**  
在 MariaDB 資料庫執行個體上啟動複寫所需的許可受到限制，並且不授予 Amazon RDS 主要使用者。因此，您必須使用 Amazon RDS [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) 和 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 命令，以設定即時資料庫與您的 RDS for MariaDB 資料庫之間的複寫。

若要在外部來源執行個體與 Amazon RDS 上的 MariaDB 資料庫執行個體之間開始複寫，請使用下列程序。<a name="MariaDB.Procedural.Importing.External.Repl.Procedure"></a>

**啟動複寫**

1. 將來源 MariaDB 執行個體設成唯讀：

   ```
   mysql> FLUSH TABLES WITH READ LOCK;
   mysql> SET GLOBAL read_only = ON;
   ```

1. 取得外部 MariaDB 執行個體的目前 GTID。在作法上可使用 `mysql` 或您選擇的查詢編輯器來執行 `SELECT @@gtid_current_pos;`。

   GTID 的格式為 `<domain-id>-<server-id>-<sequence-id>`。一般 GTID 類似於 **0-1234510749-1728**。如需 GTID 及其組成部分的詳細資訊，請參閱 MariaDB 文件中的[全域交易 ID](http://mariadb.com/kb/en/mariadb/global-transaction-id/)。

1. 使用 `mysqldump` 從外部 MariaDB 執行個體將資料庫複製到 MariaDB 資料庫執行個體。如果是非常大型的資料庫，您可能需要使用 [減少將資料匯入 Amazon RDS for MariaDB 資料庫執行個體時的停機時間](mariadb-importing-data-reduced-downtime.md) 中的程序。

   針對 Linux、macOS 或 Unix：

   ```
   mysqldump \
       --databases database_name \
       --single-transaction \
       --compress \
       --order-by-primary \
       -u local_user \
       -plocal_password | mysql \
           --host=hostname \
           --port=3306 \
           -u RDS_user_name \
           -pRDS_password
   ```

   在 Windows 中：

   ```
   mysqldump ^
       --databases database_name ^
       --single-transaction ^
       --compress ^
       --order-by-primary \
       -u local_user \
       -plocal_password | mysql ^
           --host=hostname ^
           --port=3306 ^
           -u RDS_user_name ^
           -pRDS_password
   ```
**注意**  
請注意 `-p` 選項與輸入的密碼之間不能有空格。  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

   在 `--host` 命令中，使用 `--user (-u)`、`--port`、`-p` 和 `mysql` 選項來指定主機名稱、使用者名稱、連接埠和密碼，以連接至 MariaDB 資料庫執行個體。主機名稱是來自 MariaDB 資料庫執行個體端點的 DNS 名稱，例如 `myinstance.123456789012.us-east-1.rds.amazonaws.com`。端點值可在 Amazon RDS 管理主控台的執行個體詳細資訊中找到。

1. 將來源 MariaDB 執行個體重新設為可寫入。

   ```
   mysql> SET GLOBAL read_only = OFF;
   mysql> UNLOCK TABLES;
   ```

1. 在 Amazon RDS 管理主控台，將代管外部 MariaDB 資料庫之伺服器的 IP 地址，新增至 MariaDB 資料庫執行個體的 VPC 安全群組。如需有關修改 VPC 安全群組的詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的 [VPC 安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

   IP 地址會在滿足下列條件時變更：
   + 您使用公有 IP 地址供外部來源執行個體和資料庫執行個體通訊。
   + 外部來源執行個體停止後又重新啟動。

   如果符合這些條件，請先驗證 IP 地址再新增它。

   您可能還需要設定本機網路，以允許從 MariaDB 資料庫執行個體的 IP 地址建立的連線，使之能夠與外部 MariaDB 執行個體進行通訊。若要尋找 MariaDB 資料庫執行個體的 IP 地址，請使用 `host` 命令。

   ```
   host db_instance_endpoint
   ```

   主機名稱是來自 MariaDB 資料庫執行個體端點的 DNS 名稱。

1. 使用您選擇的用戶端，連接至外部 MariaDB 執行個體，並建立用於複寫的 MariaDB 使用者。此帳戶只供複寫作業使用，務必限制其存取您的網域，以提升安全性。下列是 範例。

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

1. 若為外部 MariaDB 執行個體，請將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。舉例來說，若要將所有資料庫的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的「`repl_user`」使用者，請發出下列命令。

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. 將 MariaDB 資料庫執行個體變成複本。以主要使用者身分連接至 MariaDB 資料庫執行個體，然後使用 [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) 命令，將外部 MariaDB 資料庫識別為複寫來源執行個體。使用您在步驟 2 決定的 GTID。下列是 範例。

   ```
   CALL mysql.rds_set_external_master_gtid ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'GTID', 1);
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

1. 在 MariaDB 資料庫執行個體上，發出 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 命令來開始複寫。

   ```
   CALL mysql.rds_start_replication; 
   ```

# 使用外部來源執行個體設定二進位日誌檔案位置複寫
<a name="MySQL.Procedural.Importing.External.ReplMariaDB"></a>

您可使用二進位日誌檔案複寫，在 RDS for MySQL 或 MariaDB 資料庫執行個體，以及位於 Amazon RDS 外部的 MySQL 或 MariaDB 執行個體之間，設定複寫。

**Topics**
+ [開始之前](#MySQL.Procedural.Importing.External.Repl.BeforeYouBegin)
+ [使用外部來源執行個體設定二進位日誌檔案位置複寫](#MySQL.Procedural.Importing.External.Repl.Procedure)

## 開始之前
<a name="MySQL.Procedural.Importing.External.Repl.BeforeYouBegin"></a>

您可以使用複寫交易的二進制日誌檔案位置設定複寫。

在 Amazon RDS 資料庫執行個體上啟動複寫功能所需的許可有其限制，不供 Amazon RDS 主要使用者使用。因此，請確定使用 Amazon RDS [mysql.rds\$1set\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 或 [mysql.rds\$1set\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source) 和 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 命令，設定即時資料庫與 Amazon RDS 資料庫之間的複寫作業。

若要為 MySQL 或 MariaDB 資料庫設定二進位日誌記錄格式，請更新 `binlog_format` 參數。如果資料庫執行個體使用預設的資料庫執行個體參數群組，請建立新的資料庫參數群組以修改 `binlog_format` 參數。在 MariaDB 和 MySQL 8.0 和較低版本中，`binlog_format` 預設為 `MIXED`。不過，如果需要特定的二進位日誌 (binlog) 格式，也可以將 `binlog_format` 設定為 `ROW` 或 `STATEMENT`。重新啟動資料庫執行個體，讓變更生效。在 MySQL 8.4 和更高版本中，`binlog_format` 預設為 `ROW`。

如需有關設定 `binlog_format` 參數的資訊，請參閱[為單一可用區資料庫設定 RDS for MySQL 二進位記錄](USER_LogAccess.MySQL.BinaryFormat.md)。如需各種 MySQL 複寫類型隱含意義的相關資訊，請參閱 MySQL 文件中的[基於陳述式和基於列的複寫的優缺點](https://dev.mysql.com/doc/refman/8.0/en/replication-sbr-rbr.html)。

## 使用外部來源執行個體設定二進位日誌檔案位置複寫
<a name="MySQL.Procedural.Importing.External.Repl.Procedure"></a>

在 Amazon RDS 上設定外部來源執行個體和複本時，按照這些準則操作：
+ 監控 Amazon RDS 資料庫執行個體 (您的複本) 的容錯移轉事件。若發生容錯移轉，資料庫執行個體 (您的複本) 可能會以不同的網路地址，在新主機上重新建立。如需如何監控容錯移轉事件的資訊，請參閱[使用 Amazon RDS 事件通知](USER_Events.md)。
+ 直到您已驗證二進位日誌已套用至複本前，都要將二進位日誌保存在來源執行個體上。如此一來，發生故障時，這種維護可確保您能夠還原來源執行個體。
+ 開啟 Amazon RDS 資料庫執行個體的自動備份功能。如果您需要重新同步來源執行個體與複本，開啟自動備份功能可確保您能夠將複本還原至特定時間點。如需備份和 point-in-time 恢復的相關資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md) 一文。

**使用外部來源執行個體設定二進位日誌檔案複寫**

1. 將來源 MySQL 或 MariaDB 執行個體設成唯讀狀態。

   ```
   mysql> FLUSH TABLES WITH READ LOCK;
   mysql> SET GLOBAL read_only = ON;
   ```

1. 在來源 MySQL 或 MariaDB 執行個體上執行 `SHOW MASTER STATUS` 命令，以確定二進位日誌的位置。

   您會獲得類似下列範例的輸出。

   ```
   File                        Position  
   ------------------------------------
    mysql-bin-changelog.000031      107   
   ------------------------------------
   ```

1. 使用 `mysqldump`，從外部執行個體將資料庫複製到 Amazon RDS 資料庫執行個體。如果是非常大型的資料庫，您可能需要使用 [以較短的停機時間將資料匯入至 Amazon RDS for MySQL 資料庫](mysql-importing-data-reduced-downtime.md) 中的程序。

   針對 Linux、macOS 或 Unix：

   ```
   mysqldump --databases database_name \
       --single-transaction \
       --compress \
       --order-by-primary \
       -u local_user \
       -plocal_password | mysql \
           --host=hostname \
           --port=3306 \
           -u RDS_user_name \
           -pRDS_password
   ```

   在 Windows 中：

   ```
   mysqldump --databases database_name ^
       --single-transaction ^
       --compress ^
       --order-by-primary ^
       -u local_user ^
       -plocal_password | mysql ^
           --host=hostname ^
           --port=3306 ^
           -u RDS_user_name ^
           -pRDS_password
   ```
**注意**  
請注意 `-p` 選項與輸入的密碼之間不能有空格。

   若要指定連線到 Amazon RDS 資料庫執行個體的主機名稱、使用者名稱、連接埠和密碼，請使用 `--host` 命令中的 `--user (-u)`、`--port`、`-p` 和 `mysql` 選項。主機名稱是 Amazon RDS 資料庫執行個體端點的網域名稱服務 (DNS) 名稱，例如 `myinstance.123456789012.us-east-1.rds.amazonaws.com`。您可在 AWS 管理主控台的執行個體詳細資訊中找到端點值。

1. 將來源 MySQL 或 MariaDB 執行個體重新設為可寫入狀態。

   ```
   mysql> SET GLOBAL read_only = OFF;
   mysql> UNLOCK TABLES;
   ```

   如需如何製作備份以搭配複寫作業使用的詳細資訊，請參閱 [MySQL 文件](https://dev.mysql.com/doc/refman/8.0/en/replication-solutions-backups-read-only.html)。

1. 在 中 AWS 管理主控台，將託管外部資料庫的伺服器的 IP 地址新增至 Amazon RDS 資料庫執行個體的虛擬私有雲端 (VPC) 安全群組。如需有關修改 VPC 安全群組的詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的 [VPC 安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

   IP 地址會在滿足下列條件時變更：
   + 您使用公有 IP 地址供外部來源執行個體和資料庫執行個體通訊。
   + 外部來源執行個體停止後又重新啟動。

   如果符合這些條件，請先驗證 IP 地址再新增它。

   您可能還需要設定本機網路，以允許從 Amazon RDS 資料庫執行個體的 IP 地址建立連線。如此，您的本機網路就能與外部 MySQL 或 MariaDB 執行個體進行通訊。若要尋找 Amazon RDS 資料庫執行個體的 IP 地址，請使用 `host` 命令。

   ```
   host db_instance_endpoint
   ```

   主機名稱是 Amazon RDS 資料庫執行個體端點的 DNS 名稱。

1. 使用您選擇的用戶端連線至外部執行個體，接著建立執行複寫作業所需的使用者。只對於複寫作業使用此帳戶，並限制其存取您的網域，以提升安全性。下列是 範例。

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

1. 若為外部執行個體，請將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。舉例來說，若要將所有資料庫的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的「`repl_user`」使用者，請發出下列命令。

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. 將 Amazon RDS 資料庫執行個體設為複本。若要執行此操作，請先以主要使用者身分連線至 Amazon RDS 資料庫執行個體。使用 [mysql.rds\$1set\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source) 或 [mysql.rds\$1set\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 命令識別外部 MySQL 或 MariaDB 資料庫，將其視為來源執行個體。使用您在步驟 2 中所確定的主控端日誌檔案名稱與主控端日誌位置。下列命令為範例。

   **MySQL 8.4**

   ```
   CALL mysql.rds_set_external_source ('mysourceserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```

   **MariaDB 和 MySQL 8.0 和 5.7**

   ```
   CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```
**注意**  
在 RDS for MySQL 上，您可以改為執行 [mysql.rds\$1set\$1external\$1source\$1with\$1delay (RDS for MySQL 主要版本 8.4 及更新版本)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_with_delay) 或 [mysql.rds\$1set\$1external\$1master\$1with\$1delay (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master_with_delay) 預存程序，進而選擇使用延遲複寫。在 RDS for MySQL 上，使用延遲複寫的原因之一，是為了透過 [mysql.rds\$1start\$1replication\$1until](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 預存程序來開啟災難復原功能。目前，RDS for MariaDB 支援延遲複寫，但不支援 `mysql.rds_start_replication_until` 程序。

1. 在 Amazon RDS 資料庫執行個體上發出 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 命令，啟動複寫作業。

   ```
   CALL mysql.rds_start_replication;
   ```

# MariaDB 資料庫引擎的選項
<a name="Appendix.MariaDB.Options"></a>

以下說明可供執行 MariaDB 資料庫引擎之 Amazon RDS 執行個體使用的選項或其他功能。若要開啟這些選項，請將它們新增至自訂選項群組，然後使選項群組與您的資料庫執行個體產生關聯。如需使用選項群組的相關詳細資訊，請參閱[使用選項群組](USER_WorkingWithOptionGroups.md)。

Amazon RDS 支援 MariaDB 的下列選項：


| 選項 ID | 引擎版本 | 
| --- | --- | 
|  `MARIADB_AUDIT_PLUGIN`  |  MariaDB 10.3 及更新版本  | 

## MariaDB 稽核外掛程式支援
<a name="Appendix.MariaDB.Options.AuditPlugin"></a>

Amazon RDS 支援在 MariaDB 資料庫執行個體上使用 MariaDB 稽核外掛程式。MariaDB 稽核外掛程式會記錄資料庫活動，例如登入資料庫的使用者、針對資料庫執行的查詢，以及其他。資料庫活動的記錄會儲存在日誌檔中。

### 稽核外掛程式選項設定
<a name="Appendix.MariaDB.Options.AuditPlugin.Options"></a>

Amazon RDS 支援 MariaDB 稽核外掛程式的下列設定。

**注意**  
如果您未在 RDS 主控台中設定選項設定，RDS 會使用預設設定。


| 選項設定 | 有效值 | 預設值 | 描述 | 
| --- | --- | --- | --- | 
| `SERVER_AUDIT_FILE_PATH` | `/rdsdbdata/log/audit/` | `/rdsdbdata/log/audit/` |  日誌檔的位置。日誌檔包含 `SERVER_AUDIT_EVENTS` 中指定之活動的記錄。如需更多詳細資訊，請參閱 [檢視並列出資料庫日誌檔案](USER_LogAccess.Procedural.Viewing.md) 及 [MariaDB 資料庫日誌檔案](USER_LogAccess.Concepts.MariaDB.md)。  | 
| `SERVER_AUDIT_FILE_ROTATE_SIZE` | 1–1000000000 | 1000000 |  達到時導致檔案輪換的大小 (以位元組表示)。如需更多詳細資訊，請參閱 [MariaDB 的日誌輪換和保留](USER_LogAccess.MariaDB.LogFileSize.md)。  | 
| `SERVER_AUDIT_FILE_ROTATIONS` | 0–100 | 9 |  要在 `server_audit_output_type=file` 時儲存的日誌輪換次數。如果設定為 0，則日誌檔永遠不會輪換。如需詳細資訊，請參閱[MariaDB 的日誌輪換和保留](USER_LogAccess.MariaDB.LogFileSize.md)及[下載資料庫日誌檔案](USER_LogAccess.Procedural.Downloading.md)。  | 
| `SERVER_AUDIT_EVENTS` | `CONNECT`, `QUERY`, `TABLE`, `QUERY_DDL`, `QUERY_DML`, `QUERY_DML_NO_SELECT`, `QUERY_DCL` | `CONNECT`, `QUERY` |  要記錄在日誌中之活動的類型。安裝 MariaDB 稽核外掛程式是自行記錄的。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.MariaDB.Options.html)  | 
| `SERVER_AUDIT_INCL_USERS` | 多個以逗號分隔的值 | 無 |  只包括來自所指定使用者的活動。預設情況下，會記錄所有使用者的活動。`SERVER_AUDIT_INCL_USERS` 和 `SERVER_AUDIT_EXCL_USERS` 是相互排斥的。如果您將值新增至 `SERVER_AUDIT_INCL_USERS`，請確保未將任何值新增至 `SERVER_AUDIT_EXCL_USERS`。  | 
| `SERVER_AUDIT_EXCL_USERS` | 多個以逗號分隔的值 | 無 |  排除來自所指定使用者的活動。預設情況下，會記錄所有使用者的活動。`SERVER_AUDIT_INCL_USERS` 和 `SERVER_AUDIT_EXCL_USERS` 是相互排斥的。如果您將值新增至 `SERVER_AUDIT_EXCL_USERS`，請確保未將任何值新增至 `SERVER_AUDIT_INCL_USERS`。  `rdsadmin` 使用者會每次查詢資料庫，以檢查資料庫的運作狀態。根據您的其他設定，此活動可能會導致您的日誌檔大小非常快速地變得非常大。如果您不需要記錄此活動，請將 `rdsadmin` 使用者新增至 `SERVER_AUDIT_EXCL_USERS` 清單。   即使針對此選項設定指定了使用者，也會一律記錄所有使用者的 `CONNECT` 活動。   | 
| `SERVER_AUDIT_LOGGING` | `ON` | `ON` |  記錄為作用中狀態。唯一有效的值為 `ON`。Amazon RDS 不支援停用記錄。如果想要停用記錄，請移除 MariaDB 稽核外掛程式。如需更多詳細資訊，請參閱 [移除 MariaDB 稽核外掛程式](#Appendix.MariaDB.Options.AuditPlugin.Remove)。  | 
| `SERVER_AUDIT_QUERY_LOG_LIMIT` | 0–2147483647 | 1024 |  記錄中查詢字串長度的限制。  | 

### 新增 MariaDB 稽核外掛程式
<a name="Appendix.MariaDB.Options.AuditPlugin.Add"></a>

將 MariaDB 稽核外掛程式新增至資料庫執行個體的一般程序如下：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

在您新增 MariaDB 稽核外掛程式之後，不需要重新啟動資料庫執行個體。只要選項群組作用中，稽核就會立即開始。

**新增 MariaDB 稽核外掛程式**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則，建立自訂的資料庫選項群組。為 **Engine** (引擎)，選擇 **mariadb**，並為 **Major engine version** (主要引擎版本) 選擇 **10.3** 或更新版本。如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **MARIADB\$1AUDIT\$1PLUGIN** 選項新增至選項群組，並設定選項設定。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。如需每項設定的詳細資訊，請參閱[稽核外掛程式選項設定](#Appendix.MariaDB.Options.AuditPlugin.Options)。

1. 將選項群組套用至新的或現有的資料庫執行個體。
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，您可以透過修改資料庫執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### 檢視和下載 MariaDB 稽核外掛程式日誌
<a name="Appendix.MariaDB.Options.AuditPlugin.Log"></a>

在啟用 MariaDB 稽核外掛程式之後，您可以採取與存取任何其他文字型日誌檔相同的方式來存取日誌檔中的結果。稽核日誌檔位於 `/rdsdbdata/log/audit/`。如需在主控台中檢視日誌檔的相關資訊，請參閱[檢視並列出資料庫日誌檔案](USER_LogAccess.Procedural.Viewing.md)。如需下載日誌檔的相關資訊，請參閱[下載資料庫日誌檔案](USER_LogAccess.Procedural.Downloading.md)。

### 修改 MariaDB 稽核外掛程式設定
<a name="Appendix.MariaDB.Options.AuditPlugin.ModifySettings"></a>

在啟用 MariaDB 稽核外掛程式之後，您可以修改外掛程式的設定。如需如何修改選項設定的詳細資訊，請參閱[修改選項設定](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)。如需每項設定的詳細資訊，請參閱[稽核外掛程式選項設定](#Appendix.MariaDB.Options.AuditPlugin.Options)。

### 移除 MariaDB 稽核外掛程式
<a name="Appendix.MariaDB.Options.AuditPlugin.Remove"></a>

Amazon RDS 不支援在 MariaDB 稽核外掛程式中關閉記錄。不過，您可以從資料庫執行個體中移除外掛程式。當您移除 MariaDB 稽核外掛程式時，資料庫執行個體會自動重新啟動來停止稽核。

若要從資料庫執行個體中移除 MariaDB 稽核外掛程式，請執行下列其中一個動作：
+ 從其所屬的選項群組中移除 MariaDB 稽核外掛程式。此變更會影響使用選項群組的所有資料庫執行個體。如需詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 
+ 修改資料庫執行個體，並指定不包括外掛程式的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# MariaDB 的參數
<a name="Appendix.MariaDB.Parameters"></a>

依預設，MariaDB 資料庫執行個體會使用 MariaDB 資料庫專用的資料庫參數群組。此參數群組包含 MySQL 資料庫引擎的 Amazon RDS 資料庫參數群組中所包含的一部分參數 (而不是全部)。也包含許多新的 MariaDB 專用參數。如需使用參數群組和設定參數的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

## 檢視 MariaDB 參數
<a name="Appendix.MariaDB.Parameters.Viewing"></a>

RDS for MariaDB 參數會設為您已選取之儲存引擎的預設值。如需 MariaDB 參數的詳細資訊，請參閱 [MariaDB 文件](http://mariadb.com/kb/en/mariadb/documentation/)。如需 MariaDB 儲存引擎的詳細資訊，請參閱 [Amazon RDS 上的 MariaDB 支援的儲存引擎](MariaDB.Concepts.Storage.md)。

您可以使用 RDS 主控台或 AWS CLI查看特定 RDS for MariaDB 版本的可用參數。如需有關在 RDS 主控台中查看 MariaDB 參數群組參數的資訊，請參閱 [在 Amazon RDS 中檢視資料庫參數群組的參數值](USER_WorkingWithParamGroups.Viewing.md)。

使用 AWS CLI，您可以執行 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html)命令來檢視 RDS for MariaDB 版本的參數。為 `--db-parameter-group-family` 選項指定下列其中一個值：
+ `mariadb11.8`
+ `mariadb11.4`
+ `mariadb10.11`
+ `mariadb10.6`
+ `mariadb10.5`
+ `mariadb10.4`
+ `mariadb10.3`

例如，若要檢視 RDS for MariaDB 10.6 版的參數，請執行下列命令。

```
aws rds describe-engine-default-parameters --db-parameter-group-family mariadb10.6
```

您的輸出結果類似以下內容。

```
{
    "EngineDefaults": {
        "Parameters": [
            {
                "ParameterName": "alter_algorithm",
                "Description": "Specify the alter table algorithm.",
                "Source": "engine-default",
                "ApplyType": "dynamic",
                "DataType": "string",
                "AllowedValues": "DEFAULT,COPY,INPLACE,NOCOPY,INSTANT",
                "IsModifiable": true
            },
            {
                "ParameterName": "analyze_sample_percentage",
                "Description": "Percentage of rows from the table ANALYZE TABLE will sample to collect table statistics.",
                "Source": "engine-default",
                "ApplyType": "dynamic",
                "DataType": "float",
                "AllowedValues": "0-100",
                "IsModifiable": true
            },
            {
                "ParameterName": "aria_block_size",
                "Description": "Block size to be used for Aria index pages.",
                "Source": "engine-default",
                "ApplyType": "static",
                "DataType": "integer",
                "AllowedValues": "1024-32768",
                "IsModifiable": false
            },
            {
                "ParameterName": "aria_checkpoint_interval",
                "Description": "Interval in seconds between automatic checkpoints.",
                "Source": "engine-default",
                "ApplyType": "dynamic",
                "DataType": "integer",
                "AllowedValues": "0-4294967295",
                "IsModifiable": true
            },
        ...
```

若要檢視 RDS for MariaDB 10.6 版的可修改參數，請執行下列命令。

對於 Linux、macOS 或 Unix：

```
aws rds describe-engine-default-parameters --db-parameter-group-family mariadb10.6 \
   --query 'EngineDefaults.Parameters[?IsModifiable==`true`]'
```

在 Windows 中：

```
aws rds describe-engine-default-parameters --db-parameter-group-family mariadb10.6 ^
   --query "EngineDefaults.Parameters[?IsModifiable==`true`]"
```

## 無法使用的 MySQL 參數
<a name="Appendix.MariaDB.Parameters.MySQLNotAvailable"></a>

以下是未在 MariaDB 特定的資料庫參數群組中提供的 MySQL 參數：
+ bind\$1address
+ binlog\$1error\$1action
+ binlog\$1gtid\$1simple\$1recovery
+ binlog\$1max\$1flush\$1queue\$1time
+ binlog\$1order\$1commits
+ binlog\$1row\$1image
+ binlog\$1rows\$1query\$1log\$1events
+ binlogging\$1impossible\$1mode
+ block\$1encryption\$1mode
+ core\$1file
+ default\$1tmp\$1storage\$1engine
+ div\$1precision\$1increment
+ end\$1markers\$1in\$1json
+ enforce\$1gtid\$1consistency
+ eq\$1range\$1index\$1dive\$1limit
+ explicit\$1defaults\$1for\$1timestamp
+ gtid\$1executed
+ gtid-mode
+ gtid\$1next
+ gtid\$1owned
+ gtid\$1purged
+ log\$1bin\$1basename
+ log\$1bin\$1index
+ log\$1bin\$1use\$1v1\$1row\$1events
+ log\$1slow\$1admin\$1statements
+ log\$1slow\$1slave\$1statements
+ log\$1throttle\$1queries\$1not\$1using\$1indexes
+ master-info-repository
+ optimizer\$1trace
+ optimizer\$1trace\$1features
+ optimizer\$1trace\$1limit
+ optimizer\$1trace\$1max\$1mem\$1size
+ optimizer\$1trace\$1offset
+ relay\$1log\$1info\$1repository
+ rpl\$1stop\$1slave\$1timeout
+ slave\$1parallel\$1workers
+ slave\$1pending\$1jobs\$1size\$1max
+ slave\$1rows\$1search\$1algorithms
+ storage\$1engine
+ table\$1open\$1cache\$1instances
+ timed\$1mutexes
+ transaction\$1allow\$1batching
+ validate-password
+ validate\$1password\$1dictionary\$1file
+ validate\$1password\$1length
+ validate\$1password\$1mixed\$1case\$1count
+ validate\$1password\$1number\$1count
+ validate\$1password\$1policy
+ validate\$1password\$1special\$1char\$1count

如需 MySQL 參數的詳細資訊，請參閱 [MySQL 文件](https://dev.mysql.com/doc/refman/8.0/en/)。

# 將資料從 MySQL 資料庫快照遷移至 MariaDB 資料庫執行個體
<a name="USER_Migrate_MariaDB"></a>

您可以使用 AWS 管理主控台、AWS CLI 或 Amazon RDS API，將 RDS for MySQL 資料庫快照遷移至執行 MariaDB 的新資料庫執行個體。您必須使用從執行 MySQL 5.6 或 5.7 的 Amazon RDS 資料庫執行個體建立的資料庫快照。若要了解如何建立 RDS for MySQL 資料庫快照，請參閱[為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md)。

遷移快照不會影響從中擷取快照的原始資料庫執行個體。您可以先測試和驗證新資料庫執行個體，再將流量轉移到新資料庫執行個體來替代原始資料庫執行個體。

在從 MySQL 遷移至 MariaDB 之後，MariaDB 資料庫執行個體將與預設資料庫參數群組和選項群組相關聯。在還原資料庫快照之後，您可以使自訂資料庫參數群組與新的資料庫執行個體產生關聯。不過，MariaDB 參數群組具有一組不同的可設定系統變數。如需 MySQL 系統變數與 MariaDB 系統變數之間差異的相關資訊，請參閱 [MariaDB 與 MySQL 之間的系統變數差異](https://mariadb.com/kb/en/system-variable-differences-between-mariadb-and-mysql/)。若要了解資料庫參數群組，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。若要了解選項群組，請參閱[使用選項群組](USER_WorkingWithOptionGroups.md)。

## 執行遷移
<a name="USER_Migrate_MariaDB.Migrating"></a>

您可以使用 AWS 管理主控台、AWS CLI 或 RDS API，將 RDS for MySQL 資料庫快照遷移至新的 MariaDB 資料庫執行個體。

### 主控台
<a name="USER_Migrate_MariaDB.CON"></a>

**將 MySQL 資料庫快照遷移至 MariaDB 資料庫執行個體**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Snapshots** (快照)，然後選取您要遷移的 MySQL 資料庫快照。

1. 針對 **Actions** (動作)，選擇 **Migrate Snapshot** (遷移快照)。**Migrate Database (遷移資料庫)** 頁面隨即出現。

1. 針對 **Migrate to DB Engine (遷移至資料庫引擎)**，選擇 **mariadb**。

   Amazon RDS 會自動選取 **DB engine version (資料庫引擎版本)**。您無法變更資料庫引擎版本。  
![\[Amazon RDS 主控台中用來從 MySQL 遷移至 MariaDB 的遷移頁面。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MigrateMariaDB.png)

1. 在其餘區段，指定資料庫執行個體的設定。如需每項設定的相關資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。

1. 選擇 **Migrate (遷移)**。

### AWS CLI
<a name="USER_Migrate_MariaDB.CLI"></a>

若要將資料從 MySQL 資料庫快照遷移至 MariaDB 資料庫執行個體，請使用下列選項執行 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 命令：
+ --db-instance-identifier – 要從資料庫快照建立之資料庫執行個體的名稱。
+ --db-snapshot-identifier – 要從中還原之資料庫快照的識別碼。
+ --engine – 要用於新執行個體的資料庫引擎。

**Example**  
針對 Linux、macOS 或 Unix：  

```
1. aws rds restore-db-instance-from-db-snapshot \
2.     --db-instance-identifier newmariadbinstance \
3.     --db-snapshot-identifier mysqlsnapshot \
4.     --engine mariadb
```
針對 Windows：  

```
1. aws rds restore-db-instance-from-db-snapshot ^
2.     --db-instance-identifier newmariadbinstance ^
3.     --db-snapshot-identifier mysqlsnapshot ^
4.     --engine mariadb
```

### API
<a name="USER_Migrate_MariaDB.API"></a>

若要將資料從 MySQL 資料庫快照遷移至 MariaDB 資料庫執行個體，請呼叫 Amazon RDS API 作業 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)。

## MariaDB 與 MySQL 之間的不相容性
<a name="USER_Migrate_MariaDB.Incompatibilities"></a>

MySQL 與 MariaDB 之間的不相容性包括下列情況：
+ 您無法將利用 MySQL 8.0 建立的資料庫快照遷移至 MariaDB。
+ 如果來源 MySQL 資料庫使用 SHA256 密碼雜湊，您必須重設 SHA256 雜湊的使用者密碼，才能連線到 MariaDB 資料庫。下列程式碼展示如何重設 SHA256 雜湊的密碼。

  ```
  SET old_passwords = 0;
  UPDATE mysql.user SET plugin = 'mysql_native_password',
  Password = PASSWORD('new_password')
  WHERE (User, Host) = ('master_user_name', %);
  FLUSH PRIVILEGES;
  ```
+ 如果您的 RDS 主要使用者帳戶使用 SHA-256 密碼雜湊，請確認使用 AWS 管理主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 命令或 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 操作來重設密碼。如需修改資料庫執行個體的相關資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ MariaDB 不支援 Memcached 外掛程式。不過，Memcached 外掛程式所使用的資料會儲存為 InnoDB 資料表。在遷移 MySQL 資料庫快照之後，您可以使用 SQL 來存取 Memcached 外掛程式所使用的資料。如需 innodb\$1memcache 資料庫的詳細資訊，請參閱 [ InnoDB memcached 外掛程式內部](https://dev.mysql.com/doc/refman/8.0/en/innodb-memcached-internals.html)。

# Amazon RDS 上的 MariaDB SQL 參考
<a name="Appendix.MariaDB.SQLRef"></a>

在下文中，您可以找到說明執行 MariaDB 資料庫引擎的 Amazon RDS 執行個體所適用系統預存程序的描述。

您可以使用 MySQL 資料庫執行個體和 MariaDB 資料庫執行個體可用的系統預存程序。[RDS for MySQL 預存程序參考](Appendix.MySQL.SQLRef.md) 中記載這些預存程序。MariaDB 資料庫執行個體支援 `mysql.rds_start_replication_until` 和 `mysql.rds_start_replication_until_gtid` 以外的所有預存程序。

此外，僅對執行 MariaDB 的 Amazon RDS 資料庫執行個體支援下列系統預存程序：
+ [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md)
+ [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md)
+ [mysql.rds\$1kill\$1query\$1id](mysql_rds_kill_query_id.md)
+ [mysql.rds\$1execute\$1operation](mysql_rds_execute_operation.md)

# mysql.rds\$1replica\$1status
<a name="mysql_rds_replica_status"></a>

顯示 MariaDB 僅供讀取複本的複寫狀態。

在僅供讀取複本上呼叫此程序，以顯示複本執行緒基本參數的狀態資訊。

## 語法
<a name="mysql_rds_replica_status-syntax"></a>

```
CALL mysql.rds_replica_status;
```

## 使用須知
<a name="mysql_rds_replica_status-usage-notes"></a>

僅執行 MariaDB 10.5 版本及更新版本的 MariaDB 資料庫執行個體支援此程序。

此程序相當於 `SHOW REPLICA STATUS` 命令。MariaDB 10.5 版本和更新版本的資料庫執行個體不支援此命令。

在 MariaDB 的先前版本中，此相當的 `SHOW SLAVE STATUS` 命令需要 `REPLICATION SLAVE` 權限。在 MariaDB 10.5 及更高版本中，其需要 `REPLICATION REPLICA ADMIN` 權限。為了保護 MariaDB 10.5 及更高版本的資料庫執行個體的 RDS 管理，此新權限不會授予 RDS 主要使用者。

## 範例
<a name="mysql_rds_replica_status-examples"></a>

下面的範例顯示了 MariaDB 僅供讀取複本的狀態：

```
call mysql.rds_replica_status;
```

回應類似如下：

```
*************************** 1. row ***************************
                Replica_IO_State: Waiting for master to send event
                     Source_Host: XX.XX.XX.XXX
                     Source_User: rdsrepladmin
                     Source_Port: 3306
                   Connect_Retry: 60
                 Source_Log_File: mysql-bin-changelog.003988
             Read_Source_Log_Pos: 405
                  Relay_Log_File: relaylog.011024
                   Relay_Log_Pos: 657
           Relay_Source_Log_File: mysql-bin-changelog.003988
              Replica_IO_Running: Yes
             Replica_SQL_Running: Yes
                 Replicate_Do_DB:
             Replicate_Ignore_DB:
              Replicate_Do_Table:
          Replicate_Ignore_Table: mysql.rds_sysinfo,mysql.rds_history,mysql.rds_replication_status
         Replicate_Wild_Do_Table:
     Replicate_Wild_Ignore_Table:
                      Last_Errno: 0
                      Last_Error:
                    Skip_Counter: 0
             Exec_Source_Log_Pos: 405
                 Relay_Log_Space: 1016
                 Until_Condition: None
                  Until_Log_File:
                   Until_Log_Pos: 0
              Source_SSL_Allowed: No
              Source_SSL_CA_File:
              Source_SSL_CA_Path:
                 Source_SSL_Cert:
               Source_SSL_Cipher:
                  Source_SSL_Key:
           Seconds_Behind_Master: 0
   Source_SSL_Verify_Server_Cert: No
                   Last_IO_Errno: 0
                   Last_IO_Error:
                  Last_SQL_Errno: 0
                  Last_SQL_Error:
     Replicate_Ignore_Server_Ids:
                Source_Server_Id: 807509301
                  Source_SSL_Crl:
              Source_SSL_Crlpath:
                      Using_Gtid: Slave_Pos
                     Gtid_IO_Pos: 0-807509301-3980
         Replicate_Do_Domain_Ids:
     Replicate_Ignore_Domain_Ids:
                   Parallel_Mode: optimistic
                       SQL_Delay: 0
             SQL_Remaining_Delay: NULL
       Replica_SQL_Running_State: Reading event from the relay log
              Replica_DDL_Groups: 15
Replica_Non_Transactional_Groups: 0
    Replica_Transactional_Groups: 3658
1 row in set (0.000 sec)

Query OK, 0 rows affected (0.000 sec)
```

# mysql.rds\$1set\$1external\$1master\$1gtid
<a name="mysql_rds_set_external_master_gtid"></a>

設定從在 Amazon RDS 外部執行的 MariaDB 執行個體到 MariaDB 資料庫執行個體的 GTID 型複寫。僅在外部 MariaDB 執行個體的版本為 10.0.24 或更高版本時，才支援此存放程序。設定其中的一或兩個執行個體不支援 MariaDB 全域交易識別符 (GTID) 的複寫時，請使用 [mysql.rds\$1set\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master)。

對複寫使用 GTID 可提供二進位日誌複寫未提供的損毀安全功能，因此建議您在複寫執行個體支援時加以使用。

## 語法
<a name="mysql_rds_set_external_master_gtid-syntax"></a>

 

```
CALL mysql.rds_set_external_master_gtid(
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , gtid
  , ssl_encryption
);
```

## 參數
<a name="mysql_rds_set_external_master_gtid-parameters"></a>

 *host\$1name*   
字串. 要成為來源執行個體、在 Amazon RDS 外部執行的 MariaDB 執行個體的主機名稱或 IP 地址。

 *host\$1port*   
整數. 要設定為來源執行個體、在 Amazon RDS 外部執行的 MariaDB 執行個體所使用的連接埠。如果網路組態包含會轉換連接埠號碼的 SSH 連接埠複寫，請指定 SSH 所公開的連接埠號碼。

 *replication\$1user\$1name*   
字串. MariaDB 資料庫執行個體中具有 `REPLICATION SLAVE` 許可的使用者 ID 要設定為僅供讀取複本。

 *replication\$1user\$1password*   
字串. `replication_user_name` 中指定之使用者 ID 的密碼。

 *gtid*   
字串. 來源執行個體上複寫應該從其開始的全域交易 ID。  
在設定複寫時如果來源執行個體已遭鎖定，您可以使用 `@@gtid_current_pos` 來取得目前的 GTID，使得二進位日誌不會在您取得 GTID 和複寫開始的時間點之間變更。  
否則，如果您使用 `mysqldump` 版本 10.0.13 或以上版本在複寫開始之前填入複本執行個體，您可以使用 `--master-data` 或 `--dump-slave` 選項，在輸出中取得 GTID 位置。如果未使用 `mysqldump` 版本 10.0.13 或以上版本，您可以執行 `SHOW MASTER STATUS` 或使用那些相同的 `mysqldump` 選項來取得二進位日誌檔案名稱和位置，然後透過在外部 MariaDB 執行個體上執行 `BINLOG_GTID_POS`，將它們轉換為 GTID：  

```
SELECT BINLOG_GTID_POS('<binary log file name>', <binary log file position>);
```
如需 GTID MariaDB 實作的詳細資訊，請前往 MariaDB 文件中的[全域交易 ID](http://mariadb.com/kb/en/mariadb/global-transaction-id/)。

 *ssl\$1encryption*   
此值指定在複寫連線上是否使用 Secure Socket Layer (SSL) 加密。1 指定使用 SSL 加密，0 指定不使用加密。預設為 0。  
不支援 `MASTER_SSL_VERIFY_SERVER_CERT` 選項。此選項設定為 0，表示連線已加密，但憑證未經過驗證。

## 使用須知
<a name="mysql_rds_set_external_master_gtid-usage-notes"></a>

`mysql.rds_set_external_master_gtid` 程序必須由主要使用者執行。其必須在 MariaDB 資料庫執行個體上執行，您會將該執行個體設定為在 Amazon RDS 外部執行之 MariaDB 執行個體的複本。在執行 `mysql.rds_set_external_master_gtid` 之前，您必須在將 Amazon RDS 外部執行的 MariaDB 的執行個體設定為來源執行個體。如需更多詳細資訊，請參閱 [將資料匯入 Amazon RDS for MariaDB 資料庫執行個體](MariaDB.Procedural.Importing.md)。

**警告**  
請勿使用 `mysql.rds_set_external_master_gtid` 來管理兩個 Amazon RDS 資料庫執行個體之間的複寫。只有在使用在 RDS 外部執行的 MariaDB 執行個體進行複寫時才使用它。如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

呼叫 `mysql.rds_set_external_master_gtid` 將 Amazon RDS 資料庫執行個體設定為僅供讀取複本之後，您可以呼叫複本上的 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 來移除僅供讀取複本組態。

呼叫 `mysql.rds_set_external_master_gtid` 時，Amazon RDS 將時間、使用者和「設定主控」的動作記錄在 `mysql.rds_history` 和 `mysql.rds_replication_status` 資料表中。

## 範例
<a name="mysql_rds_set_external_master_gtid-examples"></a>

在 MariaDB 資料庫執行個體上執行時，下列範例會將它設定為在 Amazon RDS 外部執行之 MariaDB 執行個體的複本。

```
call mysql.rds_set_external_master_gtid ('Sourcedb.some.com',3306,'ReplicationUser','SomePassW0rd','0-123-456',0); 
```

# mysql.rds\$1kill\$1query\$1id
<a name="mysql_rds_kill_query_id"></a>

結束對 MariaDB 伺服器執行的查詢，以終止長時間執行或有問題的查詢。您可以識別查詢 ID，並有效停止特定查詢，以解決效能問題並維持最佳資料庫操作。

## 語法
<a name="mysql_rds_kill_query_id-syntax"></a>

```
CALL mysql.rds_kill_query_id(queryID);
```

## 參數
<a name="mysql_rds_kill_query_id-parameters"></a>

 *queryID*   
整數. 要結束之查詢的身分。

## 使用須知
<a name="mysql_rds_kill_query_id-usage-notes"></a>

若要停止對 MariaDB 伺服器執行的查詢，請使用 `mysql.rds_kill_query_id` 程序並傳入該查詢的 ID。若要取得查詢 ID，請查詢 MariaDB [資訊結構描述 PROCESSLIST 資料表](http://mariadb.com/kb/en/mariadb/information-schema-processlist-table/)，如下所示：

```
SELECT USER, HOST, COMMAND, TIME, STATE, INFO, QUERY_ID FROM 
                INFORMATION_SCHEMA.PROCESSLIST WHERE USER = '<user name>';
```

MariaDB 伺服器的連線會保留。

## 範例
<a name="mysql_rds_kill_query_id-examples"></a>

下列範例會結束查詢 ID 為 230040 的查詢：

```
call mysql.rds_kill_query_id(230040); 
```

# mysql.rds\$1execute\$1operation
<a name="mysql_rds_execute_operation"></a>

執行 InnoDB 操作，以管理緩衝集區狀態和暫存資料表空間。此程序可用來動態控制 InnoDB 操作，例如傾印和載入緩衝集區狀態，或截斷暫存資料表空間。

## 語法
<a name="mysql_rds_execute_operation-syntax"></a>

```
CALL mysql.rds_execute_operation(operation);
```

## 參數
<a name="mysql_rds_execute_operation-parameters"></a>

 *操作*   
字串. 要執行的 InnoDB 操作。有效的值如下：  
+ *innodb\$1buffer\$1pool\$1dump\$1now* - 傾印緩衝集區目前狀態的操作。
+ *innodb\$1buffer\$1pool\$1load\$1now* - 載入已儲存緩衝集區狀態的操作。
+ *innodb\$1buffer\$1pool\$1load\$1abort* - 中止緩衝集區載入操作的操作。
+ *innodb\$1truncate\$1temporary\$1tablespace\$1now* - 截斷暫存資料表空間的操作。

## 使用須知
<a name="mysql_rds_execute_operation-usage-notes"></a>

只有執行 MariaDB 11.8 版和更高版本的 MariaDB 資料庫執行個體才支援此程序。

在執行期間，二進位記錄會暫時停用，以防止這些管理命令遭到複寫。

此程序會將所有操作記錄在 [https://mariadb.com/docs/server/security/securing-mariadb/securing-mariadb-encryption/data-in-transit-encryption/securing-connections-for-client-and-server#requiring-tls](https://mariadb.com/docs/server/security/securing-mariadb/securing-mariadb-encryption/data-in-transit-encryption/securing-connections-for-client-and-server#requiring-tls) 資料表中，藉以維護稽核軌跡。

## 範例
<a name="mysql_rds_execute_operation-examples"></a>

下列範例示範如何使用 `mysql.rds_execute_operation` 縮減暫存資料表空間：

若要檢查目前的暫存資料表空間大小，請執行下列查詢：

```
      
SELECT FILE_SIZE FROM information_schema.innodb_sys_tablespaces WHERE name LIKE 'innodb_temporary';
+------------+
| FILE_SIZE  |
+------------+
| 6723469312 |  -- 6.3 GB
+------------+
```

您捨棄暫存資料表時，並不會減少全域資料表空間中的儲存用量。若要減少全域資料表空間的大小，請執行 `mysql.rds_execute_operation` 命令以縮減暫存資料表空間。

```
 
CALL mysql.rds_execute_operation('innodb_truncate_temporary_tablespace_now');
Query OK, 2 rows affected (0.004 sec)
```

執行程序後，請確認空間已回收。

```
SELECT FILE_SIZE FROM information_schema.innodb_sys_tablespaces WHERE name LIKE 'innodb_temporary';
+-----------+
| FILE_SIZE |
+-----------+
|  12582912 |  -- 12 MB
+-----------+
```

**注意**  
 縮減操作可能需要一些時間，具體取決於暫存資料表空間大小和目前的工作負載。

**重要**  
只有在所有佔用大小的暫存資料表不再使用時，暫存資料表空間才會縮減。建議您在執行個體上沒有作用中暫存資料表空間時執行此程序。

# MariaDB 資料庫執行個體的本機時區
<a name="MariaDB.Concepts.LocalTimeZone"></a>

MariaDB 資料庫執行個體的時區預設為國際標準時間 (UTC)。您也可針對應用程式，將資料庫執行個體的時區設為本機時區。

若要設定資料庫執行個體的本機時區，請將資料庫執行個體參數群組中的 `time_zone` 參數設為本節稍後所列任一支援的值。當您設定參數群組的 `time_zone` 參數後，原本使用該參數群組的所有資料庫執行個體和僅供讀取複本會改為使用新的本機時區。如需設定參數群組參數的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

設定本機時區後，所有資料庫的新連線都會反映此變更。如果在您變更本機時區時有任何已開啟的連線，在您關閉連線然後開啟新連線後，才會看見本機時區更新。

您可為資料庫執行個體以及其中一或多個僅供讀取複本，設定不同的本機時區。若要執行這項操作，請為該資料庫執行個體和僅供讀取複本使用不同的參數群組，然後將各個參數群組中的 `time_zone` 參數設定為不同的本機時區。

如果您正在執行跨 AWS 區域 複寫作業，來源資料庫執行個體和僅供讀取複本會使用不同的參數群組 (參數群組為 AWS 區域 專屬)。若要在每個執行個體使用相同的本機時區，您必須設定執行個體和僅供讀取複本之參數群組中的 `time_zone` 參數。

從資料庫快照還原資料庫執行個體時，本機時區會設為 UTC。您也可在還原作業完成後，將時區更新為本機時區。如果您將資料庫執行個體還原至某個時間點，該還原資料庫執行個體的本機時區會使用還原資料庫執行個體參數群組中的時區設定。

網際網路號碼分配局 (IANA) 每年會在 [https://www.iana.org/time-zones](https://www.iana.org/time-zones) 發布數次新時區。每次 RDS 發布 MariaDB 的新次要維護版本時，它都會在發布時隨附最新的時區資料。當您使用最新的 RDS for MariaDB 版本時，您會有來自 RDS 的最新時區資料。為確保您的資料庫執行個體擁有最新的時區資料，建議您升級至更高的資料庫引擎版本。或者，您也可以手動修改 MariaDB 資料庫執行個體中的時區表。若要這麼做，你可以使用 SQL 命令或在 SQL 用戶端執行 [mysql\$1tzinfo\$1to\$1sql tool](https://mariadb.com/kb/en/mysql_tzinfo_to_sql/)。手動更新時區資料後，請重新啟動資料庫執行個體以讓變更生效。RDS 不會修改或重設執行中資料庫執行個體的時區資料。只有在您執行資料庫引擎版本升級時，才會安裝新的時區資料。

您可以將本機時區設為下列任一值。


| 區域 | 時區 | 
| --- | --- | 
|  非洲  |  非洲/開羅，非洲/卡薩布蘭卡，非洲/哈拉雷，非洲/蒙羅維亞，非洲/奈洛比，非洲/的黎波里，非洲/溫吐克  | 
|  美洲  |  America/Araguaina、America/Asuncion、America/Bogota、America/Buenos\$1Aires、America/Caracas、America/Chihuahua、America/Cuiaba、America/Denver、America/Fortaleza、America/Guatemala、America/Halifax、America/Manaus、America/Matamoros、America/Monterrey、Amer/Montevideo、America/Phoenix、Amer/Santiago、A/Tijuana  | 
|  亞洲  |  亞洲/安曼，亞洲/阿什哈巴德，亞洲/巴格達，亞洲/巴庫，亞洲/曼谷，亞洲/貝魯特，亞洲/加爾各答，亞洲/大馬士革，亞洲/達卡，亞洲/伊爾庫次克，亞洲/耶路撒冷，亞洲/喀布爾，亞洲/喀拉蚩，亞洲/加德滿都，亞洲/克拉斯諾雅斯克，亞洲/馬加丹，亞洲/馬斯喀特，亞洲/新西伯利亞，亞洲/利雅德，亞洲/首爾，亞洲/上海，亞洲/新加坡，亞洲/台北，亞洲/德黑蘭，亞洲/東京，亞洲/庫倫，亞洲/海參崴，亞洲/雅庫次克，亞洲/葉里溫  | 
|  大西洋  |  Atlantic/Azores  | 
|  澳洲  |  澳洲/阿德萊德，澳洲/布利斯班，澳洲/達爾文，澳洲/荷巴特，澳洲/伯斯，澳洲/雪梨  | 
|  巴西  |  巴西/迪諾羅尼亞，巴西/東部  | 
|  加拿大  |  加拿大/紐芬蘭，加拿大/薩克其萬省，加拿大/育空  | 
|  歐洲  |  歐洲/阿姆斯特丹，歐洲/雅典，歐洲/都柏林，歐洲/赫爾辛基，歐洲/伊斯坦堡，歐洲/卡里寧格勒，歐洲/莫斯科，歐洲/巴黎，歐洲/布拉格，歐洲/塞拉耶佛  | 
|  太平洋  |  太平洋/奧克蘭、太平洋/斐濟、太平洋/關島、太平洋/檀香山、太平洋/薩摩亞  | 
|  美國  |  美國/阿拉斯加，美國/中部，美國/東印第安納州，美國/東部，美國/太平洋  | 
|  UTC  |  UTC  | 

# RDS for MariaDB 的已知問題和限制
<a name="CHAP_MariaDB.Limitations"></a>

下列項目是使用 RDS for MariaDB 時的已知問題和限制。

**注意**  
此清單並不詳盡。

**Topics**
+ [Amazon RDS 中的 MariaDB 檔案大小限制](#RDS_Limits.FileSize.MariaDB)
+ [InnoDB 保留字詞](#MariaDB.Concepts.InnodbDatabaseName)
+ [自訂連接埠](#MariaDB.Concepts.CustomPorts)
+ [Performance Insights](#MariaDB.Concepts.PerformanceInsights)

## Amazon RDS 中的 MariaDB 檔案大小限制
<a name="RDS_Limits.FileSize.MariaDB"></a>

針對 MariaDB 資料庫執行個體，使用 InnoDB file-per-table 資料表空間時，資料表大小上限為 16 TB。此限制也會將系統資料表空間限制為最大 16 TB。InnoDB file-per-table 資料表空間 (其中每個資料表都在自己的資料表空間中) 會由 MariaDB 資料庫執行個體的預設設定。此上限與 MariaDB 資料庫執行個體的儲存空間上限無關。如需儲存空間限制的詳細資訊，請參閱 [Amazon RDS 資料庫執行個體儲存體](CHAP_Storage.md)。

使用 InnoDB file-per-table 資料表空間有優缺點，取決於您的應用程式。如要判斷您應用程式的最佳方式，請前往 MySQL 文件中的 [File-Per-Table 表格空間](https://dev.mysql.com/doc/refman/5.7/en/innodb-file-per-table-tablespaces.html)。

不建議允許資料表成長至檔案大小上限。一般來說，更理想的做法是將資料表分割成更小的資料表，如此可以改善效能並縮短復原時間。

您可以用於將大型資料表分成更小資料表的選項為分割。「分割」**會根據您指定的規則，將大型資料表的部分分散成個別檔案。例如，如果您依日期儲存交易，則可以建立分割規則，使用分割將較舊的交易分配成個別檔案。然後，您可以定期封存不需要立即可供應用程式使用的歷史交易資料。如需詳細資訊，請參閱 MySQL 文件中的[分割](https://dev.mysql.com/doc/refman/5.7/en/partitioning.html)。

**決定所有 InnoDB 資料表空間的大小**
+ 使用下列 SQL 命令來判斷您是否有太大的資料表，且為進行分割的候選者。
**注意**  
若為 MariaDB 10.6 及更新版本，此查詢也會傳回 InnoDB 系統資料表空間的大小。  
若為早於 10.6 的 MariaDB 版本，您無法透過查詢系統資料表來決定 InnoDB 系統資料表空間的大小。建議您升級到更新的版本。

  ```
  1. SELECT SPACE,NAME,ROUND((ALLOCATED_SIZE/1024/1024/1024), 2) 
  2. as "Tablespace Size (GB)"  
  3. FROM information_schema.INNODB_SYS_TABLESPACES ORDER BY 3 DESC;
  ```

**決定非 InnoDB 使用者資料表的大小**
+ 使用下列 SQL 命令，判斷您的任何非 InnoDB 使用者資料表是否太大。

  ```
  SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH+DATA_FREE)
  / 1024 / 1024/ 1024), 2) As "Approximate size (GB)" FROM information_schema.TABLES
  WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema')
  and ENGINE<>'InnoDB';
  ```

**啟用 InnoDB file-per-table 資料表空間**
+ 在資料庫執行個體的參數群組中，將 `innodb_file_per_table` 參數設為 `1`。

**停用 InnoDB file-per-table 資料表空間**
+ 在資料庫執行個體的參數群組中，將 `innodb_file_per_table` 參數設為 `0`。

如需更新參數群組的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

已啟用或停用 InnoDB file-per-table 資料表空間時，您可以發出 `ALTER TABLE` 命令。您可以使用此命令，將資料表從全域資料表空間移動到其自己的資料表空間。或者，您可以將資料表從其自身的資料表空間移動到全域資料表空間。以下是範例。

```
1. ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=COPY; 
```

## InnoDB 保留字詞
<a name="MariaDB.Concepts.InnodbDatabaseName"></a>

`InnoDB` 是用於 RDS for MariaDB 的保留字詞。此名稱無法用於 MariaDB 資料庫。

## 自訂連接埠
<a name="MariaDB.Concepts.CustomPorts"></a>

Amazon RDS 會封鎖 MariaDB 引擎的自訂連接埠 33060 的連線。為您的 MariaDB 引擎選擇不同的連接埠。

## Performance Insights
<a name="MariaDB.Concepts.PerformanceInsights"></a>

在適用於 RDS for MariaDB 10.11 版的 Performance Insights 中看不見 InnoDB 計數器，因為 MariaDB 社群不再支援這些計數器。