以 Amazon Aurora PostgreSQL 進行複寫 - Amazon Aurora

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

以 Amazon Aurora PostgreSQL 進行複寫

在下文中,您可以找到如何使用 Amazon Aurora PostgreSQL 進行複寫的相關資訊,其中包括如何監控複寫。

使用 Aurora 複本

Aurora 複本是 Aurora 資料庫叢集中的獨立端點,最適合用於擴展讀取操作和提高可用性。Aurora 資料庫叢集最多可包含 15 個 Aurora 複本,位於 Aurora 資料庫叢集區域的可用 AWS 區域中。

資料庫叢集磁碟區由資料庫叢集的多個資料副本組成。然而,叢集磁碟區中的資料是以單一邏輯磁碟區的形式呈現給主要執行個體,以及資料庫叢集中的 Aurora 複本。如需 Aurora 複本的詳細資訊,請參閱 Aurora 複本

Aurora 複本很適合讀取擴展,因為完全專用於叢集磁碟區上的讀取操作。寫入器資料庫執行個體會管理寫入操作。Aurora PostgreSQL 資料庫叢集中的所有執行個體將共用叢集磁碟區。因此,不需要額外的工作來複寫每個 Aurora 複本的資料複本。

有了 Aurora PostgreSQL,在刪除 Aurora 複本時,隨即會移除其執行個體端點,並且會從讀取器端點移除 Aurora 複本。如果在要刪除的 Aurora 複本上有陳述式正在執行,則會有三分鐘的寬限期。現有陳述式在寬限期期間可以從容地完成。在寬限期結束時,Aurora 複本會關閉並刪除。

Aurora PostgreSQL 資料庫叢集使用 Aurora 全域資料庫支援不同 AWS 區域中的 Aurora 複本。如需詳細資訊,請參閱 使用 Amazon Aurora Global Database

注意

讀取可用性功能改善後,您必須手動執行才可重新啟動資料庫叢集中的 Aurora 複本。對於在此功能之前建立的資料庫叢集,重新啟動寫入器資料庫執行個體會自動重新啟動 Aurora 複本。自動重新啟動會重新建立進入點,保證資料庫叢集之間讀取/寫入的一致性。

改善 Aurora 複本的讀取可用性

Aurora PostgreSQL 透過在寫入器資料庫執行個體重新啟動時,或在 Aurora 複本無法跟上寫入流量時持續提供讀取請求,從而改善資料庫叢集中的讀取可用性。

根據預設,可在下列版本的 Aurora PostgreSQL 上使用讀取可用性功能:

  • 16.1 及所有更高版本

  • 15.2 版和更新的 15 版本

  • 14.7 版和更新的 14 版本

  • 13.10 版和更新的 13 版本

  • 12.14 版和更新的 12 版本

Aurora 全域資料庫支援下列版本的讀取可用性功能:

  • 16.1 及所有更高版本

  • 15.4 版和更新的 15 版本

  • 14.9 版和更新的 14 版本

  • 13.12 及更高版本 13 個版本

  • 12.16 及更高版本的 12 個版本

若要在此啟動之前針對在其中一個版本上建立的資料庫叢集使用讀取可用性功能,請重新啟動資料庫叢集的寫入器執行個體。

修改 Aurora PostgreSQL 資料庫叢集的靜態參數時,您必須重新啟動寫入器執行個體,以便參數變更生效。例如,設定 shared_buffers 的值時,您必須重新啟動寫入器執行個體。使用改善的 Aurora 複本可用性,資料庫叢集會在這些重新啟動期間維持讀取可用性,進而減少變更對寫入器執行個體的影響。讀取器執行個體不會重新啟動,並繼續回應讀取請求。若要套用靜態參數變更,請重新啟動每個個別的讀取器執行個體。

Aurora PostgreSQL 資料庫叢集的 Aurora 複本可從複寫錯誤 (例如寫入器重新啟動、容錯移轉、緩慢複寫和網路問題) 中復原,方法為在與寫入器重新連線之後快速復原至記憶體資料庫狀態。此方法可讓 Aurora 複本執行個體在用戶端資料庫仍然可用時,與最新的儲存體更新達成一致性。

與複寫復原發生衝突的進行中交易可能會收到錯誤,但是在讀取器趕上寫入器之後,用戶端可以重試這些交易。

監控 Aurora 複本

從寫入器中斷連線復原時,您可以監控 Aurora 複本。使用以下指標檢查讀取器執行個體是否有最新的相關資訊,以及追蹤進行中的唯讀交易。

  • aurora_replica_status函數會更新,以便在讀取器實體仍連線時傳回最多 up-to-date 資訊。資料列若對應至查詢執行所在的資料庫執行個體,aurora_replica_status 中的最後一個更新時間戳記一律為空白。這表示讀取器執行個體具有最新的資料。

  • 當 Aurora 複本中斷與寫入器執行個體的連線並重新連線時,系統會發送下列資料庫事件:

    Read replica has been disconnected from the writer instance and reconnected.

  • 當唯讀查詢因為復原衝突而取消時,您可能會在資料庫錯誤記錄檔中看到下列一或多個錯誤訊息:

    Canceling statement due to conflict with recovery.

    User query may not have access to page data to replica disconnect.

    User query might have tried to access a file that no longer exists.

    When the replica reconnects, you will be able to repeat your command.

限制

下列限制適用於可用性已改善的 Aurora 複本:

  • 如果在複寫復原期間無法從寫入器執行個體串流資料,則次要資料庫叢集的 Aurora 複本可以重新啟動。

  • 如果 Aurora 複本已在進行中,則它不支援線上複寫復原,並將重新啟動。

  • 當您的資料庫執行個體接近交易 ID 包圍時,Aurora 複本將重新啟動。如需交易 ID 包圍的詳細資訊,請參閱避免交易 ID 包圍失敗

  • 在特定情況下,當複寫程序遭到封鎖時,Aurora 複本可以重新啟動。

監控 Aurora PostgreSQL 複寫

讀取擴展和高可用性取決於最短延遲時間。您可以監控 Amazon 指標,監控 Aurora 複本落後於 Aurora PostgreSQL 資料庫叢集的寫入器資料庫執行個體之後的距離。 CloudWatch ReplicaLag因為 Aurora 複本會從與寫入器資料庫執行個體所在的相同叢集磁碟區讀取,ReplicaLag 指標對 Aurora PostgreSQL 資料庫叢集有不同的意義。Aurora 複本的 ReplicaLag 指標指出 Aurora 複本的頁面快取落後於寫入器資料庫執行個體的頁面快取的程度。

如需監控 RDS 執行個體和 CloudWatch 指標的詳細資訊,請參閱在 Amazon Aurora 叢集中監控指標