本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
監控僅供讀取複本
您可用多種方式監控僅供讀取複本的狀態。Amazon RDS主控台會在僅供讀取複本詳細資訊的連線與安全索引標籤的複寫區段中顯示僅供讀取複本的狀態。若要檢視僅供讀取複本的詳細資訊,請在 Amazon RDS主控台的資料庫執行個體清單中,選擇僅供讀取複本的名稱。
您也可以使用 AWS CLI describe-db-instances
命令或 Amazon RDSAPIDescribeDBInstances
操作來查看僅供讀取複本的狀態。
僅供讀取複本的狀態可以是下列其中一個:
-
replicating (複寫中)–僅供讀取複本正在成功複寫中。
-
複寫已降級 (SQL僅限伺服器和 PostgreSQL) – 複寫正在從主要執行個體接收資料,但一或多個資料庫可能無法取得更新。例如,當複本正在設定新建立的資料庫時,就會發生這種情況。在藍/綠部署的藍色環境中進行不支援DDL或大型物件變更時,也會發生這種情況。
除非在降級狀態期間發生錯誤,否則狀態不會從
replication degraded
轉換為error
。 -
error (錯誤)– 複寫發生錯誤。檢查 Amazon RDS主控台中的複寫錯誤欄位或事件日誌,以判斷確切的錯誤。如需有關複寫錯誤疑難排解的詳細資訊,請參閱 疑難排解 My 僅供SQL讀取複本問題。
-
已終止 (僅限 MariaDBSQL、我的 或 PostgreSQL) – 複寫已終止。此錯誤是因複寫作業停止連續超過 30 天所導致 (不論手動停止或由於複寫錯誤)。在此情況下,Amazon 會RDS終止主要資料庫執行個體與所有僅供讀取複本之間的複寫。Amazon RDS這樣做是為了防止來源資料庫執行個體的儲存需求增加,以及容錯移轉時間過長。
複寫中斷可能影響儲存,因為記錄的大小與數量會因為大量錯誤訊息寫入記錄而成長。由於 Amazon 在復原期間RDS需要維護和處理大量日誌,因此中斷的複寫也會影響失敗復原。
-
terminated (已終止) (僅限 Oracle) – 已終止複寫。如果複寫已停止超過 8 小時,則會發生此情況,因為僅供讀取複本上沒有足夠的儲存體。在此情況下,Amazon 會RDS終止主要資料庫執行個體與受影響僅供讀取複本之間的複寫。此狀態為終端狀態,且僅供讀取複本必須重新建立。
-
已停止 (僅限 MariaDB 或我的SQL) – 複寫已因客戶起始的請求而停止。
您可以查看複寫資料庫執行個體的位置,並且檢查其複寫狀態。在RDS主控台的資料庫頁面上,它在角色欄中顯示主要。選擇其資料庫執行個體名稱。在其詳細資訊頁面上,在 Connectivity & security (連線能力和安全性) 索引標籤中,其複寫狀態位於 Replication (複寫) 下面。
監控複寫延遲
您可以檢視 Amazon RDSReplicaLag
指標 CloudWatch 來監控 Amazon 中的複寫延遲。
對於 MariaDB 和我的 SQL, ReplicaLag
指標會報告SHOW REPLICA STATUS
命令Seconds_Behind_Master
欄位的值。MySQL 和 MariaDB 的複寫延遲的常見原因如下:
-
網路停機。
-
寫入僅供讀取複本上的資料表仍有索引。若未將僅供讀取複本的
read_only
參數設為 0,可能會中斷複寫。 -
使用非交易儲存引擎,例如 My ISAM。只有 MySQL 上的 InnoDB 儲存引擎和 MariaDB 上的 XtraDB 儲存引擎支援複寫。
注意
先前使用的 MariaDB 和 MySQL 版本SHOW SLAVE STATUS
,而非 SHOW REPLICA STATUS
。如果您使用的是 10.5 之前的 MariaDB 版本或 8.0.23 之前的 MySQL 版本,請使用 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伺服器,ReplicaLag
指標是落後資料庫的最大延遲,以秒為單位。例如,如果您有兩個分別延遲 5 秒和 10 秒的資料庫,則 ReplicaLag
為 10 秒。ReplicaLag
指標會傳回下列查詢的值。
SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;
如需詳細資訊,請參閱 Microsoft 文件中的 secondary_lag_seconds
ReplicaLag
-1
如果RDS無法判斷延遲,例如在複本設定期間,或當僅供讀取複本處於 error
狀態時, 會傳回 。
注意
在新資料庫在僅供讀取複本上可供存取之前,將不會列入延遲計算中。
對於 Postgre SQL,ReplicaLag
指標會傳回下列查詢的值。
SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS reader_lag
PostgreSQL 9.5.2 版及更新版本使用實體複寫槽來管理來源執行個體上的預先寫入日誌 (WAL) 保留。對於每個跨區域僅供讀取複本執行個體,Amazon 會RDS建立實體複寫插槽,並將其與執行個體建立關聯。兩個 Amazon CloudWatch 指標 Oldest Replication Slot Lag
和 Transaction Logs Disk Usage
顯示最落後複本在接收WAL資料方面的落後程度,以及WAL資料使用的儲存容量。Transaction Logs Disk Usage
值可在跨區域僅供讀取複本嚴延遲時大幅增加。
如需使用 監控資料庫執行個體的詳細資訊 CloudWatch,請參閱 使用 Amazon 監控 RDS 指標 CloudWatch。