本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
監控僅供讀取複本
您可用多種方式監控僅供讀取複本的狀態。Amazon RDS 主控台在僅供讀取複本詳細內容的 Connectivity & security (連線和安全) 的 Replication (複寫) 區段中顯示僅供讀取複本的狀態。若要檢視僅供讀取複本的詳細資訊,請在 Amazon RDS 主控台的資料庫執行個體清單中選擇僅供讀取複本的名稱。

您也可以使用 AWS CLI describe-db-instances
命令或 Amazon RDS API DescribeDBInstances
操作來查看僅供讀取複本的狀態。
僅供讀取複本的狀態可以是下列其中一個:
-
replicating (複寫中)–僅供讀取複本正在成功複寫中。
-
複寫效能降級 (僅限 SQL Server 和 PostgreSQL) – 複本正在接收來自主要執行個體的資料,但一或多個資料庫可能無法取得更新。例如,當複本正在設定新建立的資料庫時,就會發生這種情況。在藍/綠部署的藍色環境中進行不支援的 DDL 或大型物件變更時,也可能會發生這種情況。
除非在降級狀態期間發生錯誤,否則狀態不會從
replication degraded
轉換為error
。 -
error (錯誤)– 複寫發生錯誤。請檢查 Amazon RDS 主控台中的 Replication Error (複寫錯誤) 欄位或事件記錄,以判斷確切的錯誤。如需有關複寫錯誤疑難排解的詳細資訊,請參閱 疑難排解 My 僅供SQL讀取複本問題。
-
terminated (已終止) (僅限 MariaDB、MySQL 或 PostgreSQL) – 已終止複寫。此錯誤是因複寫作業停止連續超過 30 天所導致 (不論手動停止或由於複寫錯誤)。在此情況下,Amazon RDS 會終止主要資料庫執行個體與所有僅供讀取複本之間的複寫。Amazon RDS 會執行此操作以避免來源資料庫執行個體的儲存需求增加以及長期容錯移轉。
複寫中斷可能影響儲存,因為記錄的大小與數量會因為大量錯誤訊息寫入記錄而成長。複寫中斷也會影響故障復原,因為 Amazon RDS 在復原期間需要時間來維護及處理大量記錄。
-
terminated (已終止) (僅限 Oracle) – 已終止複寫。如果複寫已停止超過 8 小時,則會發生此情況,因為僅供讀取複本上沒有足夠的儲存體。在此情況下,Amazon RDS 會終止主要資料庫執行個體與受影響的僅供讀取複本之間的複寫。此狀態為終端狀態,且僅供讀取複本必須重新建立。
-
stopped (已停止) (僅限 MariaDB 或 MySQL) – 複寫因客戶提出要求而停止。
-
replication stop point set (設定了複寫停止點) (僅限 MySQL)–使用 mysql.rds_start_replication_until 預存程序設定了客戶啟動的停止點,而且複寫正在進行中。
-
replication stop point set (達到複寫停止點) (僅限 MySQL)–使用 mysql.rds_start_replication_until 預存程序設定了客戶啟動的停止點,複寫因達到停止點而停止。
您可以查看複寫資料庫執行個體的位置,並且檢查其複寫狀態。在 RDS 主控台的 Databases (資料庫) 頁面上,它會在 Role (角色) 欄中顯示 Primary (主要)。選擇其資料庫執行個體名稱。在其詳細資訊頁面上,在 Connectivity & security (連線能力和安全性) 索引標籤中,其複寫狀態位於 Replication (複寫) 下面。
監控複寫延遲
您可以在 Amazon CloudWatch 中透過檢視 Amazon RDS ReplicaLag
指標來監控複寫延遲。
對於 Db2,
ReplicaLag
指標是落後資料庫的最大延遲,以秒為單位。例如,如果兩個資料庫分別延遲 5 秒和 10 秒,則 ReplicaLag
為 10 秒。沒有可用高可用性災難復原 (HADR) 狀態的資料庫不包含在計算中。
如為 MariaDB 和 MySQL,ReplicaLag
指標會回報 Seconds_Behind_Master
命令的 SHOW REPLICA STATUS
欄位值。MySQL 和 MariaDB 複寫延遲的常見原因如下:
-
網路停機。
-
寫入僅供讀取複本上的資料表仍有索引。若未將僅供讀取複本的
read_only
參數設為 0,可能會中斷複寫。 -
使用非交易儲存引擎 (例如 MyISAM)。僅 MySQL 上的 InnoDB 儲存引擎和 MariaDB 上的 XtraDB 儲存引擎支援複寫。
注意
MariaDB 以前的版本使用 SHOW SLAVE STATUS
而不是 SHOW REPLICA STATUS
。如果您使用的 MariaDB 版本低於 10.5,請使用 。 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 Server,ReplicaLag
指標是落後的資料庫延遲上限 (以秒為單位)。例如,如果您有兩個分別延遲 5 秒和 10 秒的資料庫,則 ReplicaLag
為 10 秒。ReplicaLag
指標會傳回下列查詢的值。
SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;
如需詳細資訊,請參閱 Microsoft 文件中的 secondary_lag_seconds
如果 RDS 無法判斷延遲,例如在複本設定期間或是僅供讀取複本處於 ReplicaLag
狀態的時間,-1
會傳回 error
。
注意
在新資料庫在僅供讀取複本上可供存取之前,將不會列入延遲計算中。
對於 PostgreSQL,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 CloudWatch 監控 Amazon RDS 指標。