本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Aurora PostgreSQL 的容錯移轉後使用叢集快取管理快速復原
針對您的 Aurora PostgreSQL 叢集發生容錯移轉後快速復原資料庫執行個體寫入器,對 Amazon Aurora PostgreSQL 使用叢集快取管理。叢集快取管理確保應用程式如果發生容錯移轉時維持效能。
在典型的容錯移轉情況中,容錯移轉後您可能會發現效能暫時大幅降低。這樣的降低情形會發生於容錯移轉資料庫執行個體啟動、但緩衝快取處於空的狀態時。空的快取也稱作 冷快取。冷快取會降低效能,因為資料庫執行個體需要從較慢的磁碟讀取,而非利用緩衝快取中儲存的值。
使用叢集快取管理,設定特定讀取器的資料庫執行個體作為容錯移轉的目標。叢集快取管理確保指定讀取器中的快取資料,能夠與資料庫執行個體寫入器的快取資料保持同步。預先填入值的指定讀取器快取也稱作 熱快取。如果容錯轉移發生,指定的讀取器立即使用熱快取的值提升到新的資料庫執行個體寫入器。此方法提供您的應用程式更佳的復原效能。
叢集快取管理要求指定的讀取器執行個體具有與編寫器相同的執行個體類別類型和大小 (例如 db.r5.2xlarge
或 db.r5.xlarge
)。當您建立 Aurora PostgreSQL 資料庫叢集時,請記住這一點,以便叢集可以在容錯移轉期間復原。如需執行個體類別類型和大小的清單,請參閱 Aurora 的資料庫執行個體類別的硬體規格。
注意
作為 Aurora 全域資料庫一部分的 Aurora PostgreSQL 資料庫叢集不支援叢集快取管理。建議您不要在指定的第 0 層讀取器上執行任何工作負載。
設定叢集快取管理
若要設定叢集快取管理,請依序執行下列程序。
注意
在完成這些步驟之後,等待至少 1 分鐘,讓叢集快取管理可以開始正常運作。
啟用叢集快取管理
若要啟用叢集快取管理,請執行以下所述的步驟。
若要啟用叢集快取管理
-
登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/
的 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Parameter groups (參數群組)。
-
在清單中,針對您的 Aurora PostgreSQL 資料庫叢集選擇參數群組。
資料庫叢集必須使用預設以外的參數群組,因為您無法變更參數群組中的值。
-
針對 Parameter group actions (參數群組動作),選擇 Edit (編輯)。
-
設定叢集參數中
apg_ccm_enabled
的值到 1 。 -
選擇儲存變更。
若要對 Aurora PostgreSQL 資料庫叢集啟用叢集快取管理,使用 AWS CLI modify-db-cluster-parameter-group
命令搭配下列必要的參數:
-
--db-cluster-parameter-group-name
-
--parameters
範例
對於LinuxmacOS、或Unix:
aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name
my-db-cluster-parameter-group
\ --parameters "ParameterName=apg_ccm_enabled,ParameterValue=1,ApplyMethod=immediate"
在Windows中:
aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name
my-db-cluster-parameter-group
^ --parameters "ParameterName=apg_ccm_enabled,ParameterValue=1,ApplyMethod=immediate"
設定寫入器資料庫執行個體的提取層級優先順序
針對叢集快取管理,請確保 Aurora PostgreSQL 資料庫叢集的寫入器資料庫執行個體提取優先順序為層級 0。提取層級優先順序的值,代表容錯移轉後 Aurora 讀取器提升為寫入器資料庫執行個體的特定順序。有效的值為 0–15,0 代表最高優先順序,15代表最低優先順序。如需提取層級的詳細資訊,請參閱 Aurora 資料庫叢集的容錯能力。
若要設定資料庫執行個體寫入器提取優先順序為層級 0
登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/
的 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇 Writer (寫入器) Aurora PostgreSQL 資料庫叢集的資料庫執行個體。
-
選擇 Modify (修改)。Modify DB Instance (修改資料庫執行個體) 頁面隨即出現。
-
在 Additional configuration (其他組態) 面板上,為 Failover priority (容錯移轉優先順序) 選擇 tier-0 (層級 0)。
-
選擇 Continue (繼續),並檢查修改的摘要。
-
若要在儲存後立即套用變更,選擇 Apply immediately (立即套用)。
-
選擇 Modify DB Instance (修改資料庫執行個體),以儲存變更。
若要使用將寫入器資料庫執行個體的促銷層優先順序設為 0AWS CLI,請使用下列必要參數呼叫modify-db-instance命令:
-
--db-instance-identifier
-
--promotion-tier
-
--apply-immediately
範例
對於LinuxmacOS、或Unix:
aws rds modify-db-instance \ --db-instance-identifier
writer-db-instance
\ --promotion-tier 0 \ --apply-immediately
在Windows中:
aws rds modify-db-instance ^ --db-instance-identifier
writer-db-instance
^ ---promotion-tier 0 ^ --apply-immediately
設定讀取器資料庫執行個體的提取層級優先順序。
您只能為叢集快取管理設定一個讀取器資料庫執行個體。若要執行此作業,請從 Aurora PostgreSQL 叢集選擇與資料庫執行個體寫入器相同執行個體類別和大小的讀取器。例如,如果編寫器使用 db.r5.xlarge
,請選擇使用此相同執行個體類別類型和大小的讀取器。然後設定提升層級優先順序為 0。
提取層級優先順序的值,代表容錯移轉後 Aurora 讀取器提升為寫入器資料庫執行個體的特定順序。有效的值為 0–15,0 代表最高優先順序,15 代表最低優先順序。
設定資料庫執行個體讀取器的提取層級優先順序到 0。
登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/
的 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇與資料庫執行個體寫入器相同執行個體類別 Aurora PostgreSQL 資料庫叢集的資料庫執行個體 Reader (讀取器)。
-
選擇 Modify (修改)。Modify DB Instance (修改資料庫執行個體) 頁面隨即出現。
-
在 Additional configuration (其他組態) 面板上,為 Failover priority (容錯移轉優先順序) 選擇 tier-0 (層級 0)。
-
選擇 Continue (繼續),並檢查修改的摘要。
-
若要在儲存後立即套用變更,選擇 Apply immediately (立即套用)。
-
選擇 Modify DB Instance (修改資料庫執行個體),以儲存變更。
若要使用將讀取器資料庫執行個體的促銷層優先順序設為 0AWS CLI,請使用下列必要參數呼叫modify-db-instance命令:
-
--db-instance-identifier
-
--promotion-tier
-
--apply-immediately
範例
對於LinuxmacOS、或Unix:
aws rds modify-db-instance \ --db-instance-identifier
reader-db-instance
\ --promotion-tier 0 \ --apply-immediately
在Windows中:
aws rds modify-db-instance ^ --db-instance-identifier
reader-db-instance
^ ---promotion-tier 0 ^ --apply-immediately
監控緩衝區快取
在設定叢集快取管理後,您可以監控資料庫執行個體寫入器緩衝快取和指定讀取器熱緩衝快取間的同步狀態。若要檢查資料庫執行個體寫入器與指定資料庫執行個體讀取器的熱快取內容,請使用 PostgreSQL pg_buffercache
模組。如需詳細資訊,請參閱 PostgreSQL pg_buffercache
文件
使用 aurora_ccm_status
函數
叢集快取管理也提供 aurora_ccm_status
函數。使用資料庫執行個體寫入器上的 aurora_ccm_status
函數以獲得下列關於指定讀取器上熱快取進度的資訊:
-
buffers_sent_last_minute
– 最後一分鐘有多少緩衝區送到指定的讀取器。 buffers_found_last_minute
– 過去一分鐘內識別出頻繁存取緩衝區的數量。-
buffers_sent_last_scan
– 最後完成緩衝區快取掃描時有多少緩衝區送到指定的讀取器。 -
buffers_found_last_scan
– 有多少緩衝已經辨識為經常許可並需要在最後完成緩衝快取掃描時送出。緩衝區指定讀取器上未送出的快取。 -
buffers_sent_current_scan
– 截至目前掃描送出多少緩衝區。 -
buffers_found_current_scan
– 目前掃描有多少緩衝區已經辨識為經常許可。 -
current_scan_progress
– 目前的掃描期間迄今已造訪多少緩衝區。
以下範例示範如何使用 aurora_ccm_status
函數將一些輸出轉換為暖比率和暖百分比。
SELECT buffers_sent_last_minute*8/60 AS warm_rate_kbps, 100*(1.0-buffers_sent_last_scan::float/buffers_found_last_scan) AS warm_percent FROM aurora_ccm_status();
疑難排解 CCM 組態
啟用apg_ccm_enabled
叢集參數時,會在寫入器資料庫執行個體的執行個體層級和 Aurora PostgreSQL 資料庫叢集上的一個讀取器資料庫執行個體自動開啟叢集快取管理。寫入器和讀取器實例應該使用相同的實例類型和大小。他們的促銷等級優先順序設定為0
。資料庫叢集中的其他讀取器執行個體應具有非零升級層,而這些執行個體會停用叢集快取管理。
下列原因可能會導致組態發生問題,並停用叢集快取管理:
沒有將單一讀取器資料庫執行個體設定為促銷層 0 時。
當寫入器資料庫執行個體未設定為促銷層 0 時。
將多個讀取器資料庫執行個體設定為促銷層 0 時。
當具有促銷層 0 的寫入器和一個讀取器資料庫執行個體的執行個體大小不相同時。