使用資料庫執行個體僅供讀取複本 - Amazon Relational Database Service

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

使用資料庫執行個體僅供讀取複本

僅供讀取複本是資料庫執行個體的唯讀副本。您可以將查詢從應用程式路由到僅供讀取複本,以減少主要資料庫執行個體的負載。如此一來,您可以彈性地擴展超越單一資料庫執行個體的容量限制,以處理高讀取量的資料庫工作負載。

若要從來源資料庫執行個體建立僅供讀取複本,Amazon RDS 會使用資料庫引擎的內建複寫功能。如需搭配特定引擎使用僅供讀取複本的資訊,請參閱下列各節:

在您從來源資料庫執行個體建立僅供讀取複本之後,來源會成為主要資料庫執行個體。當您對主要資料庫執行個體進行更新時,Amazon RDS 會以非同步方式將它們複製到僅供讀取複本。下圖顯示複寫到不同可用區域 (AZ) 中僅供讀取複本的來源資料庫執行個體。用戶端具有主要資料庫執行個體的讀取/寫入存取權,以及複本的唯讀存取

僅供讀取複本組態

僅供讀取複本會以標準資料庫執行個體的費率計費,費率與用於複本的資料庫執行個體類別相同。在來源資料庫執行個體與相 AWS 區域同的僅供讀取複本之間複製資料時,無需支付資料傳輸費用。如需詳細資訊,請參閱 跨區域複寫成本

Amazon RDS 僅供讀取複本的概觀

下列各節討論資料庫執行個體僅供讀取複本。如需多可用區域資料庫叢集僅供讀取複本的詳細資訊,請參閱 使用多可用區域資料庫叢集僅供讀取複本

僅供讀取複本的使用案例

為指定的來源資料庫執行個體部署一或多個僅供讀取複本,在各種鏈中可能都有意義,包括:

  • 擴展超越單一資料庫執行個體的運算或 I/O 容量,以處理高讀取量的資料庫工作負載。您可以將此多餘讀取流量指向到一或多個僅供讀取複本。

  • 在來源資料庫執行個體不可用時,為讀取流量提供服務。在某些情況下,如果您的來源資料庫執行個體無法處理 I/O 請求 (例如,由於備份或計劃維護而暫停 I/O)。在這些情況下,您可以將讀取流量導向到您的僅供讀取複本。請注意,在這種使用案例中,因為來源資料庫執行個體不可用,僅供讀取複本中的資料可能為「過時」狀態。

  • 商業報告或資料倉儲案例,您可能希望針對僅供讀取複本執行商業報告查詢,而非針對生產資料庫執行個體。

  • 實作災難復原。您可以在主要資料庫執行個體失敗時,提升僅供讀取複本為獨立的執行個體,以做為災難復原解決方案。

僅供讀取複本的運作方式

建立僅供讀取複本時,應先指定現有資料庫執行個體做為來源。然後 Amazon RDS 會取得來源執行個體的快照,並從該快照建立唯讀執行個體。Amazon RDS 會使用非同步複寫方法,以供資料庫引擎更新僅供讀取複本,而不論主要資料庫執行個體是否有變更。

僅供讀取複本做為資料庫執行個體運作,並允許唯讀連接。範例是 RDS for Oracle 資料庫引擎,其支援掛載模式中的複本資料庫。掛載複本不接受使用者連線,因此無法提供唯讀工作負載。掛載複本的主要用途是跨區域災難復原。如需詳細資訊,請參閱 使用適用於 Amazon RDS for Oracel 的僅供讀取複本

應用程式會連線至僅供讀取複本,如同它們對任何資料庫執行個體所做一般。Amazon RDS 會複寫來源資料庫執行個體中的所有資料庫。

多可用區部署中的僅供讀取複本

您可以在異地同步備份部署中,為資料庫執行個體設定僅供讀取複本,該執行個體還具有設定為高可用性的待命複本。使用待命複本進行複寫是同步的。與僅供讀取複本不同,待命複本無法提供讀取流量。

在下列案例中,用戶端對某個 AZ 中的主要資料庫執行個體具有讀取/寫入存取權。主要執行個體會以非同步方式將更新複製到第二個 AZ 中的僅供讀取複本,並以同步方式將它們複製到第三個 AZ 中的待命複本。用戶端對僅供讀取複本只有讀取存取權。

僅供讀取複本和待命複本組態

如需高可用性和待命複本的相關資訊,請參閱設定及管理多可用區部署

跨區域僅供讀取複本

在某些情況下,僅供讀取複本位於與其主資料庫執行個體不同 AWS 區域 的位置。在這些情況下,Amazon RDS 會在主要資料庫執行個體與僅供讀取複本之間設定安全通訊管道。Amazon RDS 會建立啟用 AWS 安全通道所需的任何安全組態,例如新增安全群組項目。如需跨區域僅供讀取複本的相關資訊,請參閱以不同的方式建立僅供讀取複本 AWS 區域

本章中的資訊適用於在與來源資料庫執行個體相 AWS 區域 同或單獨 AWS 區域建立 Amazon RDS 僅供讀取複本。以下資訊並不適用於在 Amazon EC2 執行個體上執行的執行個體,或內部部署的執行個體上設定複寫。

資料庫引擎的僅供讀取複本之間的差異

由於 Amazon RDS 資料庫引擎實作複寫方式的不同,有幾點重大差異您應該要知道,如下表所示。

功能或行為 MySQL 和 MariaDB Oracle PostgreSQL SQL Server

什麼是複寫方法?

邏輯複寫。

實體複寫。

實體複寫。

實體複寫。

如何清除交易日誌?

RDS for MySQL 和 RDS for MariaDB 會保留任何未套用的二進位日誌。

如果主要資料庫執行個體沒有跨區域僅供讀取複本,Amazon RDS for Oracle 在來源資料庫執行個體上會保留至少兩小時的交易日誌。兩小時之後,或過了存檔日誌保留時數設定後 (視何者較長而定),將從來源資料庫執行個體中清除日誌。只有在日誌已成功套用至資料庫後,才會在過了存檔日誌保留時數設定之後從僅供讀取複本中清除日誌。

在某些情況下,一個主要資料庫執行個體可能有一或多個跨區域僅供讀取複本。如果是這樣,Amazon RDS for Oracle 會將交易日誌保留在來源資料庫執行個體上,直到傳輸並套用至所有跨區域僅供讀取複本為止。

如需設定封存記錄保留時數的相關資訊,請參閱保留封存的重做日誌

PostgreSQL 有 wal_keep_segments 參數指出保留多少個預先寫入日誌 (WAL) 檔案,以提供檔案給僅供讀取複本。參數值指定了要保留的日誌數量。

如果不再需要次要複本,便會截斷主要複本上交易記錄檔的虛擬記錄檔 (VLF)。

在複本中強化記錄檔記錄時,只能將 VLF 標示為非作用中。無論主要複本中的磁碟子系統有多快,交易記錄檔都會保留 VLF,直到速度最慢的複本強化它為止。

能將複本變成可寫入嗎?

是。您可將 MySQL 或 MariaDB 僅供讀取複本變成可寫入的。

否。Oracle 僅供讀取複本是實體複製,且 Oracle 並不允許在僅供讀取複本中進行寫入。您可提升僅供讀取複本以將其變為可寫入。提升的僅供讀取副本會將複製的資料置於提升請求提出的時機。

否。PostgreSQL 僅供讀取複本為實體複本,且 PostgreSQL 不允許將僅供讀取複本變成可寫入。

否。SQL Server 僅供讀取複本是實體副本,也不允許寫入。您可提升僅供讀取複本以將其變為可寫入。提升的僅供讀取副本會將複製的資料置於提升請求提出的時機。

能否在複本上執行備份?

是。RDS for MySQL 或 RDS for MariaDB 僅供讀取複本上支援自動備份和手動快照。

是。RDS for Oracle 僅供讀取複本上支援自動備份和手動快照。

是,您可以建立 RDS for PostgreSQL 僅供讀取複本的手動快照。RDS for PostgreSQL 14.1 及更新版本僅支援僅供讀取複本的自動備份。您無法為早於 14.1 的 RDS for PostgreSQL 版本開啟 PostgreSQL 僅供讀取複本的自動備份。對於 RDS for PostgreSQL 13 及更早版本,若您想要備份僅供讀取複本,則請從僅供讀取複本建立快照。

否。RDS for SQL Server 僅供讀取複本上不支援自動備份和手動快照。

能否使用平行複寫?

是。所有支援的 MariaDB 和 MySQL 版本皆允許平行複寫執行緒。

是。重做記錄資料會一律從主要資料庫平行傳輸到其所有僅供讀取副本。

否。PostgreSQL 使用單一程序來處理複寫。

是。重做記錄資料會一律從主要資料庫平行傳輸到其所有僅供讀取副本。

您可以將複本保持為已掛載而非唯讀狀態嗎?

否.

是。掛載複本的主要用途是跨區域災難復原。掛載複本不需要 Active Data Guard 授權。如需更多詳細資訊,請參閱 使用適用於 Amazon RDS for Oracel 的僅供讀取複本

否.

否.

僅供讀取複本儲存類型

根據預設,僅供讀取複本建立時使用與來源資料庫執行個體相同的儲存類型。但您仍可以依照下表中的選項建立使用與來源資料庫執行個體不同儲存類型的僅供讀取複本。

來源資料庫執行個體儲存體類型 來源資料庫執行個體儲存體配置 僅供讀取複本儲存體類型選項
佈建 IOPS 100 GiB–64 TiB 佈建 IOPS、一般用途、磁性
一般用途 100 GiB–64 TiB 佈建 IOPS、一般用途、磁性
一般用途 <100 GiB 一般用途、磁性
磁帶 100 GiB–6 TiB 佈建 IOPS、一般用途、磁性
磁帶 <100 GiB 一般用途、磁性
注意

當您提升僅供讀取複本的配置儲存空間時,其至少必須提升 10%。如果您嘗試以低於 10% 的值增加該值,便會發生錯誤。

從複本建立複本的限制

Amazon RDS 不支援循環複寫。您不能將資料庫執行個體設定為現有資料庫執行個體的複寫來源。您只能從現有的資料庫執行個體建立新的僅供讀取複本。例如,如果 MySourceDBInstance 建立複本到 ReadReplica1,您不能將 ReadReplica1 設定為向 MySourceDBInstance 建立複本。

對於 MRDS for MariaDB 和 RDS for MySQL,以及對於 RDS for PostgreSQL 的某些版本,您可從現有僅供讀取複本建立僅供讀取複本。例如,您可以從現有複本 ReadReplica1 建立新的僅供讀取複本 ReadReplica2。對於 RDS for Oracle 和 RDS for SQL Server,您無法從現有的僅供讀取複本建立僅供讀取複本。

刪除複本時的考量

如果您不再需要僅供讀取複本,可以使用刪除資料庫執行個體的相同機制明確刪除它們。如果您刪除來源資料庫執行個體而未刪除其僅供讀取複本 AWS 區域,則每個僅供讀取複本都會提升為獨立資料庫執行個體。如需刪除資料庫執行個體的相關資訊,請參閱刪除資料庫執行個體。如需僅供讀取複本提升的相關資訊,請參閱提升僅供讀取複本為獨立的資料庫執行個體

如果您有跨區域僅供讀取複本,請參閱 跨區域複寫考量 以瞭解刪除跨區域僅供讀取複本來源資料庫執行個體的相關資料。

建立僅供讀取複本

您可以使用 AWS Management Console、 AWS CLI或 RDS API 從現有資料庫執行個體建立僅供讀取複本。若要建立僅供讀取複本,需指定 SourceDBInstanceIdentifier,也就是您想要複製之來源資料庫執行個體的資料庫執行個體識別符。

建立僅供讀取複本時,Amazon RDS 會對來源資料庫執行個體建立資料庫快照,接著開始複寫。資料庫快照作業開始時,來源資料庫執行個體會遇到非常短暫的 I/O 暫停。I/O 懸吊通常持續約一秒鐘。假如來源資料庫執行個體為異地同步備份部署,則可避免 I/O 暫停,因為此時快照是從次要資料庫執行個體建立。

長時間執行的作用中交易會使建立僅供讀取複本的流程變慢。建議您等到長時間執行交易完成後,再建立僅供讀取複本。如果從同一個來源資料庫執行個體平行建立多個僅供讀取複本,Amazon RDS 只會在一開始的建立動作時擷取一個快照。

建立僅供讀取複本時有一些問題需要考慮。首先,務必要將備份保留期設定為 0 以外的值,才能啟用來源資料庫執行個體的自動備份。若僅供讀取複本能讓其他僅供讀取複本做為來源資料庫執行個體,則亦適用此要求。如要啟用 RDS for MySQL 僅供讀取複本的自動備份,首先請先建立該僅供讀取複本,然後修改該複本以啟用自動備份。

注意

在中 AWS 區域,我們強烈建議您在以 Amazon VPC 為基礎的相同虛擬私有雲端 (VPC) 中建立所有僅供讀取複本做為來源資料庫執行個體。如果您在與來源資料庫執行個體不同的 VPC 中建立僅供讀取複本,則複本和 RDS 系統之間的無類別網域間路由 (CIDR) 範圍可能會重疊。CIDR 重疊會使複本不穩定,這會對連線到該複本的應用程式產生負面影響。如果您在建立僅供讀取複本時收到錯誤,請選擇不同的目的地資料庫子網路群組。如需詳細資訊,請參閱 使用中的資料庫執行個體 VPC

沒有直接的方法可以 AWS 帳戶 使用控制台或在另一個僅供讀取複本中建立僅供讀取複本 AWS CLI。

若要從來源資料庫執行個體建立僅供讀取複本
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇 Databases (資料庫)

  3. 選擇要作為僅供讀取複本來源的資料庫執行個體。

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

  5. DB instance identifier (資料庫執行個體識別符) 中,輸入僅供讀取複本的名稱。

  6. 選擇您的執行個體組態。建議您使用與僅供讀取複本來源資料庫執行個體相同或更大的資料庫執行個體類別和儲存體類型。

  7. 對於 AWS 區域,指定僅供讀取複本的目的地區域。

  8. 對於儲存體,指定配置的儲存體大小,以及您是否要使用儲存體自動擴展。

    如果您的來源資料庫執行個體不在最新的儲存體組態上,則可以使用升級儲存體檔案系統組態選項。您可以啟用此設定,將僅供讀取複本的儲存體檔案系統升級為偏好的組態。如需詳細資訊,請參閱 升級資料庫執行個體的儲存體檔案系統

  9. 對於可用性,選擇是否要在另一個可用區域中建立複本的待命複本,以支援複本的容錯移轉。

    注意

    建立您的僅供讀取複本做為異地同步備份部署資料庫執行個體,與來源資料庫是否為異地同步備份部署資料庫執行個體無關。

  10. 指定其他資料庫執行個體設定。如需每項可用設定的相關資訊,請參閱 資料庫執行個體的設定

  11. 若要建立加密的僅供讀取複本,請展開其他組態並指定下列設定:

    1. 選擇 Enable encryption (啟用加密)。

    2. 對於 AWS KMS key,選擇 KMS 金鑰的 AWS KMS key 識別碼。

    注意

    來源資料庫執行個體必須加密。若要進一步了解如何加密來源資料庫執行個體,請參閱加密 Amazon RDS 資源

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

建立讀取複本之後,您可以在 RDS 主控台的 Databases (資料庫) 頁面上看到它。它在 Role (角色) 欄中顯示 Replica (複本)。

若要從來源資料庫執行個體建立僅供讀取複create-db-instance-read本,請使用 AWS CLI 指令- copy。此範例也會設定配置的儲存體大小、啟用儲存體自動擴展,並將檔案系統升級為偏好的組態。

您可以指定其他設定。如需每項設定的相關資訊,請參閱 資料庫執行個體的設定

範例

對於LinuxmacOS、或Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance \ --allocated-storage 100 \ --max-allocated-storage 1000 \ --upgrade-storage-config

在 Windows 中:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance ^ --allocated-storage 100 ^ --max-allocated-storage 1000 ^ --upgrade-storage-config

若要從來源 MySQL、MariaDB、Oracle、PostgreSQL 或 SQL Server 資料庫執行個體建立僅供讀取複本,請呼叫 Amazon RDS APICreateDBInstanceReadReplica 操作,其中包含下列必要參數:

  • DBInstanceIdentifier

  • SourceDBInstanceIdentifier

提升僅供讀取複本為獨立的資料庫執行個體

您可以將僅供讀取複本提升為獨立的資料庫執行個體。如果來源資料庫執行個體擁有多個僅供讀取複本,將其中一個僅供讀取複本提升為資料庫執行個體,並不會影響其他的複本。

升級僅供讀取複本時,RDS 會重新啟動資料庫執行個體,然後再提供資料庫執行個體。該提升程序可耗費數分鐘或更長的時間來完成,視僅供讀取複本大小而定。

提升僅供讀取複本

提升僅供讀取複本的使用案例

您可能會想要將僅供讀取複本升級到獨立資料庫執行個體,原因如下:

  • 實作故障復原 – 您可用僅供讀取複本提升,做為主要資料庫執行個體故障時的資料復原結構描述。這種方法可用於補強同步複寫、自動故障偵測和容錯移轉。

    如果您已了解非同步複寫的後果和限制,但仍想使用僅供讀取複本提升做為資料復原,可以這樣做。要進行此操作,請先建立僅供讀取複本,然後監控主要資料庫執行個體的故障。若發生故障,請執行下列程序:

    1. 提升僅供讀取複本。

    2. 將資料庫流量引導至提升的資料庫執行個體。

    3. 以提升的資料庫執行個體做為來源,建立替換的僅供讀取複本。

  • 升級儲存體組態 - 如果來源資料庫執行個體不在偏好的儲存體組態上,您可以建立執行個體的僅供讀取複本,並升級儲存體檔案系統組態。此選項會將僅供讀取複本的檔案系統遷移至偏好的組態。您接著可以將僅供讀取複本提升為獨立的執行個體。

    您可以使用此選項,克服舊版 32 位元檔案系統對儲存體和檔案大小的擴展限制。如需詳細資訊,請參閱 升級資料庫執行個體的儲存體檔案系統

    只有在您的來源資料庫執行個體在最新的儲存體組態上時,或只有在您要在相同請求內修改資料庫執行個體類別時,才能使用此選項。

  • 分片 – 分片採用「不共用」架構,基本上就是將一個大型資料庫分成多個較小的資料庫。拆分資料庫的一種常見方式,就是將未加入同一個查詢的資料表拆分到不同的主機。另一個方法是將資料表複製到多個主機,接著使用雜湊演算法來決定哪個主機將接收特定的更新。您可建立與每個分片 (較小的資料庫) 對應的僅供讀取複本,然後在您決定將其轉換為獨立分片時加以提升。接著您可根據需求調整金鑰空間 (如果要拆分資料列) 或分散資料表到每個分片。

  • 執行 DDL 操作 (僅限 MySQL 和 MariaDB) – 像是建立或重建索引等 DDL 操作需要一段時間,且會大幅降低資料庫執行個體的效能。一旦僅供讀取複本與其主要資料庫執行個體同步後,您便能在 MySQL 或 MariaDB 僅供讀取複本上執行這些操作。接著您可提升僅供讀取複本,並指示應用程式使用提升的執行個體。

注意

如果您的僅供讀取複本是 RDS for Oracle 資料庫執行個體,您可以執行轉換,而不是升級。在轉換過程中,來源資料庫執行個體會變成新複本,而複本會成為新的來源資料庫執行個體。如需詳細資訊,請參閱 執行 Oracle Data Guard 容錯移轉

提升僅供讀取複本的特性

升級僅供讀取複本之後,它會停止作為僅供讀取複本運作,並成為獨立資料庫執行個體。新的獨立資料庫執行個體具有下列特性:

  • 獨立資料庫執行個體會保留提升前僅供讀取複本的選項群組和參數群組。

  • 您可以從獨立資料庫執行個體建立僅供讀取複本,並執行 point-in-time 還原作業。

  • 您無法將資料庫執行個體用作複寫目標,因為它不再是僅供讀取複本。

升級僅供讀取複本的先決條件

升級僅供讀取複本之前,請執行下列動作:

  • 檢閱您的備份策略:

    • 我們建議您啟用備份並至少完成一個備份。備份持續期間為自上次備份後資料庫變更的數量函數。

    • 如果您已啟用僅供讀取複本的備份,請設定自動備份時間,以免日常備份干擾到僅供讀取複本的提升。

    • 請確定您的僅供讀取複本沒有backing-up狀態。僅供讀取複本處於此狀態時,您無法升級僅供讀取複本。

  • 停止將任何交易寫入主資料庫執行個體,然後等待 RDS 將所有更新套用至僅供讀取複本。

    資料庫更新在主要資料庫執行個體上發生之後,會在僅供讀取複本上發生。複寫延遲可能會有很大差異。使用 Replica Lag 指標以確定針對僅供讀取複本進行的所有更新時間。

  • (僅限 MySQL 和 MariaDB) 若要在升級 MySQL 或 MariaDB 僅供讀取複本之前對其進行變更,請在僅供讀取複本的資料庫read_only參數群組0中將參數設定為。接著您便能執行所有必要的 DDL 操作,像是在僅供讀取複本上建立索引。在僅供讀取複本上擷取快照,不會影響主要資料庫執行個體的效能。

提升僅供讀取複本:基本步驟

以下步驟顯示了提升僅供讀取複本至資料庫執行個體的一般流程:

  1. 使用 Amazon RDS 主控台、 AWS CLI 命令promote-read-replicaPromoteReadReplicaAmazon RDS API 作業上的升級選項來提升僅供讀取複本。

    注意

    提升程序可能需要幾分鐘來完成。升級僅供讀取複本時,RDS 會停止複寫並重新啟動僅供讀取複本。當重新啟動完成,該僅供讀取複本便可用做新的資料庫執行個體。

  2. (選用) 將新的資料庫執行個體修改為異地同步備份部署。如需詳細資訊,請參閱 修改 Amazon RDS 資料庫執行個體設定及管理多可用區部署

若要將僅供讀取複本提升為獨立的資料庫執行個體
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在 Amazon RDS 主控台,選擇 Databases (資料庫)

    Databases (資料庫) 窗格隨即出現。每個僅供讀取複本會在 Role (角色) 欄中顯示 Replica (複本)

  3. 選擇您要提升的僅供讀取複本。

  4. 針對 Actions (動作),選擇 Promote (提升)

  5. 提升僅供讀取複本頁面上,輸入新升級資料庫執行個體的備份保留期和備份時間。

  6. 滿意所有設定時,請選擇 Continue (繼續)

  7. 在確認頁面上,選擇 Promote Read Replica (提升僅供讀取複本)

若要將僅供讀取複本升級為獨立資料庫執行個體,請使用 AWS CLI promote-read-replica指令。

範例

對於LinuxmacOS、或Unix:

aws rds promote-read-replica \ --db-instance-identifier myreadreplica

在 Windows 中:

aws rds promote-read-replica ^ --db-instance-identifier myreadreplica

若要將僅供讀取複本提升為獨立的資料庫執行個體,請使用所需參數 DBInstanceIdentifier 呼叫 Amazon RDS API PromoteReadReplica 操作。

監控僅供讀取複本

您可用多種方式監控僅供讀取複本的狀態。Amazon RDS 主控台在僅供讀取複本詳細內容的 Connectivity & security (連線和安全)Replication (複寫) 區段中顯示僅供讀取複本的狀態。若要檢視僅供讀取複本的詳細資訊,請在 Amazon RDS 主控台的資料庫執行個體清單中選擇僅供讀取複本的名稱。

僅供讀取複本狀態

您也可以使用 AWS CLI describe-db-instances命令或 Amazon RDS API DescribeDBInstances 操作查看僅供讀取複本的狀態。

僅供讀取複本的狀態可以是下列其中一個:

  • replicating (複寫中)僅供讀取複本正在成功複寫中。

  • 複寫效能降級 (僅限 SQL Server 和 PostgreSQL) – 複本正在接收來自主要執行個體的資料,但一或多個資料庫可能無法取得更新。例如,當複本正在設定新建立的資料庫時,就會發生這種情況。在藍/綠部署的藍色環境中進行不支援的 DDL 或大型物件變更時,也可能會發生這種情況。

    除非在降級狀態期間發生錯誤,否則狀態不會從 replication degraded 轉換為 error

  • error (錯誤)​ 複寫發生錯誤。請檢查 Amazon RDS 主控台中的 Replication Error (複寫錯誤) 欄位或事件記錄,以判斷確切的錯誤。如需有關複寫錯誤疑難排解的詳細資訊,請參閱 對 MySQL 僅供讀取複本問題進行故障診斷

  • terminated (已終止) (僅限 MariaDB、MySQL 或 PostgreSQL) – 已終止複寫。此錯誤是因複寫作業停止連續超過 30 天所導致 (不論手動停止或由於複寫錯誤)。在此情況下,Amazon RDS 會終止主要資料庫執行個體與所有僅供讀取複本之間的複寫。Amazon RDS 會執行此操作以避免來源資料庫執行個體的儲存需求增加以及長期容錯移轉。

    複寫中斷可能影響儲存,因為記錄的大小與數量會因為大量錯誤訊息寫入記錄而成長。複寫中斷也會影響故障復原,因為 Amazon RDS 在復原期間需要時間來維護及處理大量記錄。

  • terminated (已終止) (僅限 Oracle) – 已終止複寫。如果複寫已停止超過 8 小時,則會發生此情況,因為僅供讀取複本上沒有足夠的儲存體。在此情況下,Amazon RDS 會終止主要資料庫執行個體與受影響的僅供讀取複本之間的複寫。此狀態為終端狀態,且僅供讀取複本必須重新建立。

  • stopped (已停止) (僅限 MariaDB 或 MySQL) – 複寫因客戶提出要求而停止。

  • replication stop point set (設定了複寫停止點) (僅限 MySQL)–使用 預存程序設定了客戶啟動的停止點,而且複寫正在進行中。

  • replication stop point set (達到複寫停止點) (僅限 MySQL)–使用 預存程序設定了客戶啟動的停止點,複寫因達到停止點而停止。

您可以查看複寫資料庫執行個體的位置,並且檢查其複寫狀態。在 RDS 主控台的 Databases (資料庫) 頁面上,它會在 Role (角色) 欄中顯示 Primary (主要)。選擇其資料庫執行個體名稱。在其詳細資訊頁面上,在 Connectivity & security (連線能力和安全性) 索引標籤中,其複寫狀態位於 Replication (複寫) 下面。

監控複寫延遲

您可以 CloudWatch 透過檢視 Amazon RDS ReplicaLag 指標來監控 Amazon 中的複寫延遲。

如為 MariaDB 和 MySQL,ReplicaLag 指標會回報 Seconds_Behind_Master 命令的 ​SHOW REPLICA STATUS 欄位值。MySQL 和 MariaDB 複寫延遲的常見原因如下:

  • 網路停機。

  • 寫入僅供讀取複本上的資料表仍有索引。若未將僅供讀取複本的 read_only 參數設為 0,可能會中斷複寫。

  • 使用非交易儲存引擎 (例如 MyISAM)。僅 MySQL 上的 InnoDB 儲存引擎和 MariaDB 上的 XtraDB 儲存引擎支援複寫。

注意

MariaDB 和 MySQL 以前的版本使用 SHOW SLAVE STATUS 而不是 SHOW REPLICA STATUS。如果您使用的 MariaDB 是 10.5 之前的版本或使用的 MySQL 是 8.0.23 之前的版本,請使用 SHOW SLAVE STATUS

ReplicaLag 指標到達 0,複本即已跟上主要資料庫執行個體。如果 ReplicaLag 指標傳回 -1,表示複寫目前為非作用中。ReplicaLag = -1 相當於 Seconds_Behind_Master = NULL

對於 Oracle,ReplicaLag 指標是 Apply Lag 值與目前時間和套用延遲 DATUM_TIME 值之差的總和。DATUM_TIME 值是僅供讀取複本從其來源資料庫執行個體接收資料的最後時間。如需詳細資訊,請參閱 Oracle 文件中的 V$DATAGUARD_STATS

對於 SQL Server,ReplicaLag 指標是落後的資料庫延遲上限 (以秒為單位)。例如,如果您有兩個分別延遲 5 秒和 10 秒的資料庫,則 ReplicaLag 為 10 秒。ReplicaLag 指標會傳回下列查詢的值。

SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;

如需詳細資訊,請參閱 Microsoft 文件中的 secondary_lag_seconds

如果 RDS 無法判斷延遲,例如在複本設定期間或是僅供讀取複本處於 ReplicaLag 狀態的時間,-1 會傳回 error

注意

在新資料庫在僅供讀取複本上可供存取之前,將不會列入延遲計算中。

對於 PostgreSQL,ReplicaLag 指標會傳回下列查詢的值。

SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS reader_lag

PostgreSQL 9.5.2 版和更新版本使用實體複寫槽來管理在來源執行個體上的預先寫入日誌 (WAL) 保留期。對於各個跨區域的僅供讀取複本執行個體來說,Amazon RDS 會建立實體複寫槽,並將其與執行個體建立關聯。兩個 Amazon CloudWatch 指標Transaction Logs Disk UsageOldest Replication Slot Lag並顯示在收到的 WAL 資料以及 WAL 資料使用多少儲存空間方面,最滯後的複本有多遠。Transaction Logs Disk Usage 值可在跨區域僅供讀取複本嚴延遲時大幅增加。

如需使用監視資料庫執行個體的詳細資訊 CloudWatch,請參閱使用 Amazon 監控 RDS 指標 CloudWatch

以不同的方式建立僅供讀取複本 AWS 區域

使用 Amazon RDS,您可以在與來源資料庫執行個體不同 AWS 區域 的僅供讀取複本中建立僅供讀取複本。

跨區域僅供讀取複本組態

您可以建立不同的僅供讀取複本 AWS 區域 來執行下列動作:

  • 改善災難復原功能。

  • 將讀取操作擴展到 AWS 區域 更接近用戶的位置。

  • 讓您更輕鬆地從一個資料中心遷移 AWS 區域 到另一個資料中心 AWS 區域。

在與來源執行個體不同 AWS 區域 的僅供讀取複本中建立僅供讀取複本類似 AWS 區域。您可以使用 AWS Management Console、執行create-db-instance-read-replica命令或呼叫 CreateDBInstanceReadReplicaAPI 作業。

注意

若要在不同 AWS 區域 於來源資料庫執行個體中建立加密的僅供讀取複本,必須加密來源資料庫執行個體。

區域和版本可用性

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需跨區域複寫的版本和區域可用性的相關資訊,請參閱Amazon RDS 中跨區域僅供讀取複本支援的區域和資料庫引擎

建立跨區域僅供讀取複本

下列程序說明如何從不同 AWS 區域中的來源 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 資料庫執行個體建立僅供讀取複本。

您可以跨 AWS 區域 使用建立僅供讀取複本 AWS Management Console。

使用主控台建立僅 AWS 區域 供讀取複本
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇 Databases (資料庫)。

  3. 選擇要作為僅供讀取複本來源的 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 資料庫執行個體。

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

  5. DB instance identifier (資料庫執行個體識別符) 中,輸入僅供讀取複本的名稱。

  6. 選擇 Destination Region (目的地區域)

  7. 選擇您想要使用的執行個體規格。建議您使用與僅供讀取複本相同或更大的資料庫執行個體類別和儲存體類型。

  8. 若要在另一個中建立加密的僅供讀取複本 AWS 區域:

    1. 選擇 Enable encryption (啟用加密)。

    2. 對於 AWS KMS key,選擇目的地中 KMS 金鑰的 AWS KMS key 識別碼 AWS 區域。

    注意

    若要建立加密的僅供讀取複本,來源資料庫執行個體也必須加密。若要進一步了解如何加密來源資料庫執行個體,請參閱加密 Amazon RDS 資源

  9. 請選擇其他選項,例如 storage autoscaling (儲存體自動擴展)。

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

若要從不同 AWS 區域中的來源 MySQL、Microsoft SQL Server、MariaDB、Oracle 或 PostgreSQL 資料庫執行個體建立僅供讀取複本,您可以使用 create-db-instance-read-replica 命令。在這種情況下,您可以create-db-instance-read-replica從想要的 AWS 區域 位置使用僅供讀取複本 (目的地區域),並為來源資料庫執行個體指定 Amazon 資源名稱 (ARN)。ARN 專門識別在 Amazon Web Services 中建立的資源。​

例如,假如您的來源資料庫執行個體位在 US East (N. Virginia) 區域,則 ARN 看起來類似如下。

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

如需 ARN 的詳細資訊,請參閱 Amazon 資源名稱(ARNs)RDS

若要在不同於來源資料庫執行個體 AWS 區域 中建立僅供讀取複本,您可以從目的地使用 AWS CLI create-db-instance-read-replica命令 AWS 區域。在另一個 AWS 區域中建立僅供讀取複本時需要下列參數:

  • --region— 建立僅供讀取複本的目 AWS 區域 的地。

  • --source-db-instance-identifier – 來源資料庫執行個體的資料庫執行個體識別符。此識別符必須是來源 AWS 區域的 ARN 格式。

  • --db-instance-identifier – 指定目的地 AWS 區域中僅供讀取複本的識別符。

範例 跨區域僅供讀取複本

下列程式碼會透過 US East (N. Virginia) 區域中的來源資料庫執行個體,在 美國西部 (奧勒岡) 區域中建立僅供讀取複本。

對於LinuxmacOS、或Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

在 Windows 中:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

在另一個 AWS 區域中建立加密的僅供讀取複本時還需要下列參數:

  • --kms-key-id— 用來加密目的地中僅供讀取複本的 KMS 金鑰 AWS KMS key 識別碼 AWS 區域。

範例 加密的跨區域僅供讀取複本

下列程式碼會透過 US East (N. Virginia) 區域中的來源資料庫執行個體,在 美國西部 (奧勒岡) 區域中建立加密的僅供讀取複本。

對於LinuxmacOS、或Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance \ --kms-key-id my-us-west-2-key

在 Windows 中:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance ^ --kms-key-id my-us-west-2-key

在 AWS GovCloud (美國東部) 和 AWS GovCloud (美國西部) 區域之間建立加密的僅供讀取複本時,需要使用此--source-region選項。若為 --source-region,請指定來源資料庫執行個體的 AWS 區域 。

若未指定 --source-region,請指定 --pre-signed-url 值。presigned URL (預先簽章的 URL) 為包含對來源 AWS 區域中呼叫 create-db-instance-read-replica 命令之 Signature 第 4 版簽章請求的 URL。若要瞭解有關pre-signed-url此選項的更多資訊,請參閱AWS CLI 命令參考中的 create-db-instance-read-replica

若要從來源 MySQL、Microsoft SQL 伺服器、甲骨文或 PostgreSQL 資料庫執行個體建立僅供讀取複本 AWS 區域,您可以呼叫 Amazon RDS API 操作建立資料庫。InstanceReadReplica在這種情況下,您可以InstanceReadReplica從想要的 AWS 區域 位置呼叫 CreateDB 僅供讀取複本 (目的地區域),並為來源資料庫執行個體指定 Amazon 資源名稱 (ARN)。ARN 專門識別在 Amazon Web Services 中建立的資源。​

若要在不同 AWS 區域 於來源資料庫執行個體中建立加密的僅供讀取複本,您可以從目的地使用 Amazon RDS API CreateDBInstanceReadReplica操作 AWS 區域。若要在另一個僅供讀取複本中建立加密的僅供讀取複本 AWS 區域,您必須指定的值PreSignedURLPreSignedURL應包含在中建立僅供讀取複本的來源 AWS 區域 中呼叫CreateDBInstanceReadReplica作業的要求。要進一步了解 PreSignedUrl,請參閱 CreateDBInstanceReadReplica

例如,假如您的來源資料庫執行個體位在 US East (N. Virginia) 區域,則 ARN 看起來類似如下。

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

如需 ARN 的詳細資訊,請參閱 Amazon 資源名稱(ARNs)RDS

範例
https://us-west-2.rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253DCreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%123456789012%25253Adb%25253Amydbinstance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amydbinstance %2526Version%253D2014-10-31 %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256 %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request %2526X-Amz-Date%253D20161117T215409Z %2526X-Amz-Expires%253D3600 %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613 &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=&region-arn;rds:us-east-1:123456789012:db:mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>

Amazon RDS 如何執行跨區域複寫

Amazon RDS 使用下列流程建立跨區域僅供讀取複本。根據 AWS 區域 所涉及的資料和資料庫中的資料量而定,此程序可能需要數小時才能完成。您可在建立跨區域僅供讀取複本時利用此資訊來判斷流程的進度:

  1. Amazon RDS 開始將來源資料庫執行個體設定為複寫來源,並將狀態設為 modifying (修改中)

  2. Amazon RDS 會開始在目標中設定指定的僅供讀取複本, AWS 區域 並將狀態設定為建立

  3. Amazon RDS 對來源 AWS 區域中的來源資料庫執行個體建立自動化資料庫快照。資料庫快照名稱的格式為 rds:<InstanceID>-<timestamp>,其中 <InstanceID> 為來源執行個體的識別符,<timestamp> 為複製開始的日期和時間。例如,rds:mysourceinstance-2013-11-14-09-24 是從 mysourceinstance 執行個體於 2013-11-14-09-24 所建立。​ 在建立自動化資料庫快照期間,來源資料庫執行個體狀態會保持為 modifying (修改中),僅供讀取複本的狀態保持為 creating (建立中),而資料庫快照的狀態則為 creating (建立中)。主控台中資料庫快照頁面的進度欄將回報資料庫快照建立的進度。資料庫快照完成時,資料庫快照和來源資料庫執行個體的狀態將同時設為 available (可用)

  4. Amazon RDS 開始進行初始資料傳輸的跨區域快照複製。快照複本會列為目的地中的自動快照 AWS 區域 ,其狀態為建立。其名稱與來源資料庫快照的名稱相同。資料庫快照的進度欄將顯示複製的進度。一旦複製完成,資料庫快照的狀態會變成 available (可用)

  5. 然後 Amazon RDS 會將複製的資料庫快照用於僅供讀取複本上的初始資料載入。在此階段,僅供讀取複本會列在目的地的資料庫執行個體清單中,狀態為 creating (建立中)。一旦載入完成,僅供讀取複本的狀態會變成 available (可用),並將刪除資料庫快照複本。

  6. 僅供讀取複本變成可供使用狀態之後,Amazon RDS 會開始複寫從建立僅供讀取複本操作起始起,對來源執行個體進行的變更。在此階段期間,僅供讀取複本的複寫延遲時間將大於 0。

    如需複寫延遲時間的資訊,請參閱 監控僅供讀取複本

跨區域複寫考量

在內部執行複寫的所有考量都 AWS 區域 適用於跨區域複寫。在 AWS 區域間複寫時,適用下列的額外考量:

  • 來源資料庫執行個體可在多個 AWS 區域有跨區域僅供讀取複本。由於來源 VPC 的存取控制清單 (ACL) 項目數目有限制,RDS 無法保證跨區域僅供讀取複本資料庫執行個體超過五個。

  • 您可以在 GovCloud (美國東部) 和 GovCloud (美國西部) 區域之間進行複製,但不能進出 GovCloud (US)。

  • 您只能從不是其他 Amazon RDS 資料庫執行個體之僅供讀取複本的來源 Amazon RDS 資料庫執行個體建立跨區域 Amazon RDS 僅供讀取複本。此限制不適用於 MariaDB 和 MySQL 資料庫執行個體。

  • 對於與來源執行個體不同 AWS 區域 的僅供讀取複本,您可以預期會看到更高層級的延遲時間。此延遲時間是由於區域資料中心之間有較長的網路通道。

  • 如為跨區域僅供讀取複本,任何指定 --db-subnet-group-name 參數的建立僅供讀取複本命令皆必須指定同一 VPC 的資料庫子網路群組。

  • 在大多數情況下,僅供讀取複本使用指定資料庫引擎的預設資料庫參數群組和資料庫選項群組。

    對於 MySQL 和 Oracle DB 引擎,您可以在指 AWS CLI 令--db-parameter-group-name選項中為僅供讀取複本指定自訂參數群組create-db-instance-read-replica。使用 AWS Management Console時,您無法指定自訂參數群組。

  • 僅供讀取複本使用預設安全群組。

  • 若為 MariaDB、Microsoft SQL Server、MySQL 及 Oracle DB 資料庫執行個體,刪除跨區域僅供讀取複本的來源資料庫執行個體時,僅供讀取複本會提升。

  • 若為 MariaDB、MySQL 和 PostgreSQL 資料庫執行個體,刪除跨區域僅供讀取複本的來源資料庫執行個體時,僅供讀取複本的複寫狀態會設為 terminated。不會提升僅供讀取複本。

    您必須手動提升僅供讀取複本,或將其刪除。

請求跨區域僅供讀取複本

若要與來源區域通訊,以請求建立跨區域僅供讀取複本,請求者 (IAM 角色或 IAM 使用者) 必須具有來源資料庫執行個體和來源區域的存取權。

請求者的 IAM 政策中的某些條件可能會導致請求失敗。下列範例假設來源資料庫執行個體位於 美國東部 (俄亥俄),而僅供讀取複本則會在 US East (N. Virginia) 中建立。以下範例顯示請求者 IAM 政策中導致請求失敗的條件:

  • 請求者的政策具有 aws:RequestedRegion 的條件。

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-1" } }

    由於政策不允許存取來源區域,請求失敗。若要成功請求,請同時指定來源區域和目的地區域。

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } }
  • 請求者的政策不允許存取來源資料庫執行個體。

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "arn:aws:rds:us-east-1:123456789012:db:myreadreplica" ...

    若是成功請求,請同時指定來源執行個體和複本。

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:myreadreplica", "arn:aws:rds:us-east-2:123456789012:db:mydbinstance" ] ...
  • 請求者的政策拒絕 aws:ViaAWSService

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Bool": {"aws:ViaAWSService": "false"} }

    與來源區域的通訊由 RDS 代表請求者進行。對於成功的請求,請勿拒絕 AWS 服務撥打的電話。

  • 請求者的政策具有 aws:SourceVpcaws:SourceVpce 的條件。

    這些請求可能會失敗,因為當 RDS 呼叫遠端區域時,其不是來自指定的 VPC 或 VPC 端點。

如果您需要使用會導致請求失敗的先前條件之一,則可以在政策中包含 aws:CalledVia 的第二個陳述式,以使請求成功。例如,您可以如下所示使用 aws:CalledVia 搭配 aws:SourceVpce

... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Condition" : { "ForAnyValue:StringEquals" : { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "rds:CreateDBInstanceReadReplica" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "rds.amazonaws.com" ] } } }

如需詳細資訊,請參閱 IAM 使用者指南 中的 IAM 中的政策和許可

授權僅供讀取複本

跨區域資料庫僅供讀取複本建立請求之後傳回 success,RDS 會在後台啟動複本建立。系統會建立 RDS 存取來源資料庫執行個體的授權。此授權會將來源資料庫執行個體連結至僅供讀取複本,並允許 RDS 僅複製到指定的僅供讀取複本。

授權由 RDS 使用服務連結 IAM 角色中的 rds:CrossRegionCommunication 許可來驗證。如果授權複本,RDS 會與來源區域通訊並完成複本建立。

對於之前未透過 CreateDBInstanceReadReplica 請求授權的資料庫執行個體,RDS 將無法存取。僅供讀取複本建立完成時,會撤銷授權。

RDS 使用服務連結的角色來驗證來源區域中的授權。如果您在複製建立程序期間刪除服務連結的角色,則複本則會失敗。

如需詳細資訊,請參閱 IAM 使用者指南中的使用服務連結角色

使用 AWS Security Token Service 認證

來自 global AWS Security Token Service (AWS STS) 端點的會話令牌僅在 AWS 區域 默認情況下啟用(商業區域)的會話令牌有效。如果您使用中 assumeRole API 作業的認證 AWS STS,如果來源區域是選擇加入的區域,請使用地區端點。否則,請求將失敗。發生這種情況是因為您的憑據在兩個區域都必須有效,這對於選擇加入區域僅在使用區域 AWS STS 端點時才有效。

若要使用全域端點,請確保操作時在這兩個區域均已將其啟用。在帳號設定Valid in all AWS 區域中將全域端點 AWS STS 設定為。

相同的規則適用於預先簽章 URL 參數中的登入資料。

如需詳細資訊,請參閱 AWS STSIAM 使用者指南》 AWS 區域中的「管理」。

跨區域複寫成本

跨區域複寫傳輸的資料會衍生 Amazon RDS 數據傳輸費。對於傳出來源 AWS 區域的資料,這些跨區域複寫動作會產生費用:

  • 當您建立僅供讀取複本時,Amazon RDS 會取得來源執行個體的快照,並將快照傳輸至僅供讀取複本 AWS 區域。

  • 對於在來源資料庫中進行的每項資料修改,Amazon RDS 都會將資料從來源傳輸 AWS 區域 到僅供讀取複本 AWS 區域。

如需資料傳輸定價的詳細資訊,請參閱 Amazon RDS 定價

如為 MySQL 和 MariaDB 執行個體,可透過減少建立的跨區域僅供讀取複本數量來降低資料傳輸成本。例如,假設您在一個來源資料庫執行個體中有一個, AWS 區域 而且想要在另 AWS 區域一個執行個體中有三個僅供讀取複本。在此情況下,您只從來源資料庫執行個體建立一個僅供讀取複本。另兩個僅供讀取複本則從第一個僅供讀取複本建立,而非來源資料庫執行個體。

例如,如果您有一source-instance-1個 AWS 區域,則可以執行以下操作:

  • read-replica-1在新的中創建 AWS 區域,指定source-instance-1為源。

  • read-replica-2 建立 read-replica-1

  • read-replica-3 建立 read-replica-1

在此範例中,您只需要為從 source-instance-1 傳輸到 read-replica-1 的資料付費。從 read-replica-1 傳輸至其他另兩個僅供讀取複本的資料,因為位於相同 AWS 區域中,因無需付費。如果您直接從 source-instance-1 建立所有三個複本,那麼您將為所有三個複本的資料傳輸付費。