使用 PostgreSQL 的僅供讀取複本組態 - Amazon Relational Database Service

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

使用 PostgreSQL 的僅供讀取複本組態

RDS for PostgreSQL 會使用 PostgreSQL 原生串流複寫來建立來源資料庫執行個體的唯讀複本。此僅供讀取複本資料庫執行個體是個非同步建立之來源資料庫執行個體的實體複寫。此由將預寫日誌 (WAL) 資料從來源資料庫執行個體傳輸至僅供讀取複本的特殊連線所建立。如需詳細資訊,請參閱 PostgreSQL 文件中的串流複寫

PostgreSQL 會將資料庫變更非同步串流至此安全連接,如同其在來源資料庫執行個體上所進行般。您可透過將 ssl 參數設定為 1,對用戶端應用程式至來源資料庫執行個體或任何僅供讀取複本的通訊進行加密。如需詳細資訊,請參閱 將 SSL 與 PostgreSQL 資料庫執行個體搭配使用

PostgreSQL 會使用複寫角色來執行串流複寫。角色有優先權,但無法用來修改任何資料。PostgreSQL 使用單一程序來處理複寫。

您可在不影響來源資料庫執行個體的作業或使用者的狀況下建立 PostgreSQL 僅供讀取複本。Amazon RDS 會為來源資料庫執行個體和僅供讀取複本設定必要的參數和權限,而不會影響服務。將會拍攝來源資料庫執行個體的快照,而此快照會用來建立僅供讀取複本。如於未來的某個時間點刪除僅供讀取複本,則不會發生停機。

您可以從相同區域內的一個來源資料庫執行個體建立至多 15 個僅供讀取複本。從 RDS for PostgreSQL 14.1 開始,您還可從來源資料庫執行個體以鏈結 (階層式) 的形式建立最多三個層級的僅供讀取複本。如需詳細資訊,請參閱使用具 RDS for PostgreSQL 的階層式僅供讀取複本。在所有情況下,來源資料庫執行個體皆需設定自動備份。您可將資料庫執行個體上的備份保留期設定為 0 以外的任何值以進行此作業。如需詳細資訊,請參閱建立僅供讀取複本

您可於與來源資料庫執行個體相同的 AWS 區域 中,建立 RDS for PostgreSQL資料庫執行個體的僅供讀取複本。此稱為區域內複寫。您也可以在與來源資料庫執行個體 AWS 區域 不同的 中建立僅供讀取複本。此稱為跨區域複寫。如需設定跨區域僅供讀取複本的相關資訊,請參閱 在不同的 AWS 區域中建立僅供讀取複本。支援「區域內」和「跨區域」複寫程序的各種機制會依 RDS for PostgreSQL 版本而略有不同,此說明於 串流複寫如何用於不同的 RDS for PostgreSQL 版本 中。

若希望複寫作業順利運作,每個僅供讀取複本具備的運算和儲存資源數量應與來源資料庫執行個體相同。若您擴展來源資料庫執行個體,也請務必擴展僅供讀取複本。

若 Amazon RDS 阻止僅供讀取複本啟動,則期將會覆寫僅供讀取複本上任何不相容的參數。舉例來說,假設在資料庫執行個體的 max_connections 參數值高於僅供讀取複本上的值。在此情況下,Amazon RDS 會更新僅供讀取複本上的參數為與來源資料庫執行個體上相同的值。

RDS for PostgreSQL 僅供讀取複本可存取外部資料庫,這些資料庫可經由來源資料庫執行個體上的外部資料包裝函式 (FDW) 取得。例如,假設 RDS for PostgreSQL 資料庫執行個體使用 mysql_fdw 包裝函式來存取 RDS for MySQL 的資料。若是如此,您的僅供讀取複本也可存取該資料。其他受支援的 FDW 包括 oracle_fdwpostgres_fdwtds_fdw。如需詳細資訊,請參閱使用 Amazon RDS for PostgreSQL 支援的外部資料包裝函式

使用具多可用區域組態的 RDS for PostgreSQL 僅供讀取複本

您可以從單一可用區域或多可用區域的資料庫執行個體建立僅供讀取複本。您可使用異地同步備份部署,利用備用複本來改善重要資料的耐用性和可用性。若來源資料庫進行容錯移轉,則備用複本是個可承擔工作負載的專用僅供讀取複本。您無法使用備用複本來提供讀取流量。但是,您可從高流量的多可用區域資料庫執行個體建立僅供讀取複本,藉此卸載唯讀查詢。若要進一步了解異地同步備份部署,請參閱 Amazon RDS 的多可用區域資料庫執行個體部署

若異地同步備份部署的來源資料庫執行個體容錯移轉至備用複本,則相關聯的僅供讀取複本都會切換為使用備用複本 (現為主要複本) 作為其複寫來源。僅供讀取複本可能需要重新啟動,視 RDS for PostgreSQL 版本而定,如下所示:

  • PostgreSQL 13 及更新版本 – 無須重新啟動。僅供讀取複本將會自動與新的主要複本同步。但在某些狀況下,您的用戶端應用程式可能會快取僅供讀取複本的網域名稱服務 (DNS) 詳細資訊。若是如此,請將存留時間 (TTL) 值設定為少於 30 秒。這麼做可以防止僅供讀取複本保留過時的 IP 地址 (如此,可防止其與新的主要複本同步)。如需進一步了解有關此及其他最佳實務的詳細資訊,請參閱 Amazon RDS 基本操作準則

  • PostgreSQL 12 及所有早期版本 – 僅供讀取複本在容錯移轉至備用複本後會自動重新啟動,因為備用 (現為主要) 具有不同的 IP 地址和不同的執行個體名稱。重新啟動僅供讀取複本與新的主要複本同步。

如需進一步了解容錯移轉,請參閱 容錯移轉 Amazon RDS 的多可用區域資料庫執行個體。若要進一步了解僅供讀取複本如何在異地同步備份部署中運作,請參閱 使用資料庫執行個體僅供讀取複本

如要提供僅供讀取複本的容錯移轉支援,您可將僅供讀取複本建立為多可用區域資料庫執行個體,則 Amazon RDS 會在另一個可用區域 (AZ) 中建立您複本的待命複本。建立您的僅供讀取複本做為多可用區域資料庫執行個體,與來源資料庫是否為多可用區域資料庫執行個體無關。