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

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

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

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

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

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

僅供讀取複本組態

僅供讀取複本會以與複本所用資料庫執行個體類別相同的速率,作為標準資料庫執行個體計費。在相同 內,在來源資料庫執行個體與僅供讀取複本之間複寫資料時,不會向您收取資料傳輸費用 AWS 區域。如需詳細資訊,請參閱 跨區域複寫成本

Amazon RDS僅供讀取複本概觀

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

僅供讀取複本的使用案例

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

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

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

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

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

僅供讀取複本的運作方式

建立僅供讀取複本時,應先指定現有資料庫執行個體做為來源。然後,Amazon RDS會擷取來源執行個體的快照,並從快照建立唯讀執行個體。RDS 然後,Amazon 會針對資料庫引擎使用非同步複寫方法,在主要資料庫執行個體發生變更時更新僅供讀取複本。

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

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

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

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

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

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

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

跨區域僅供讀取複本

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

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

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

由於 Amazon RDS 資料庫引擎實作複寫的方式不同,因此您應該了解幾個重大差異,如下表所示。

功能或行為 我的SQL 和 MariaDB Oracle PostgreSQL SQL 伺服器

什麼是複寫方法?

邏輯複寫。

實體複寫。

實體複寫。

實體複寫。

如何清除交易日誌?

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

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

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

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

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

主要複本上交易日誌檔案的 Virtual Log File (VLF) 可在次要複本不再需要後截斷。

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

能將複本變成可寫入嗎?

可以。您可以啟用 MySQL 或 MariaDB 僅供寫入複本。

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

否。PostgreSQL 僅供讀取複本是實體複本,PostgreSQL 不允許將僅供寫入複本。

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

能否在複本上執行備份?

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

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

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

否。RDSSQL伺服器僅供讀取複本不支援 上的自動備份和手動快照。

能否使用平行複寫?

是。所有支援的 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 建立複本。

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

刪除複本時的考量

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

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