簡體   English   中英

Amazon RDS 只讀副本 — 跳過復制錯誤

[英]Amazon RDS Read Replica — Skipping Replication Errors

我有一個 amazon rds 實例數據庫,我正在使用只讀副本進行分析。 但是,每周左右,只讀副本都會因復制錯誤而崩潰。

我已經嘗試按照此幫助文章查看從屬狀態並跳過復制錯誤,但是,我只能通過擺弄並創建新的只讀副本來恢復它。

由於外部服務依賴於初始只讀副本,這有多種原因。

主數據庫沒問題,但似乎某些完整性錯誤會導致只讀副本崩潰且無法恢復。

目前,我的只讀副本具有以下參數:

Replication State: Error
Replication Error: Error 'Cannot add or update a child row: a foreign key constraint fails.....

有沒有辦法配置這個只讀副本來跳過所有錯誤? 我只是想弄清楚如何使它更穩定。 謝謝!

在您了解導致錯誤的原因、修復潛在問題並糾正主副本之間的任何數據不一致之前,您永遠不應該跳過復制錯誤。

每跳過一個錯誤,主數據集和副本數據集之間的差異就會增加,任何差異都是不可接受的。

您別無選擇,只能創建一個新的副本實例並丟棄舊的實例。 如果新的復制錯誤發生,請停止,找出原因,並修復您的配置或應用程序中導致錯誤的錯誤。

跳過 RDS for MySQL 上的復制錯誤應被視為緊急權宜之計,除非您對 MySQL 復制的內部結構有透徹的了解……因為在正確的設置中,它們很少見。

事實證明,問題的根源在於存儲引擎。 來自亞馬遜常見問題解答: http : //aws.amazon.com/rds/faqs/#130

Amazon RDS for MySQL Read Replicas 需要事務存儲引擎,並且僅支持 InnoDB 存儲引擎。 非事務性 MySQL 存儲引擎(例如 MyISAM)可能會阻止只讀副本按預期工作。 但是,如果您仍然選擇將 MyISAM 與只讀副本一起使用,我們建議您仔細觀察 Amazon CloudWatch“副本滯后”指標(可通過 AWS 管理控制台或 Amazon CloudWatch API 獲得)並在由於以下原因落后時重新創建只讀副本復制錯誤。 相同的考慮適用於臨時表和任何其他非事務性引擎的使用。

我們使用的是 MyISAM。 但是,由於其他原因,我們已經從 InnoDB 表切換了。 所以我們在這里還沒有完全的答案,因為似乎 InnoDB 存儲引擎給了我們一個問題,而 MyISAM 引擎給了我們另一個問題。 我們必須深入研究才能解決這個問題,但似乎我們需要一個事務存儲引擎來使只讀副本一致且正確地工作。

我通過創建一個像這樣的 mysql 事件調度程序來解決它:

CREATE EVENT repl_error_skipper 
ON SCHEDULE 
EVERY 15 MINUTE
COMMENT 'Calling rds_skip_repl_error to skip replication error'
Do
CALL mysql.rds_skip_repl_error;
/*also you can add other logic */

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM