簡體   English   中英

mariadb 復制(主/從) - 由於刪除查詢執行時間較長,從屬滯后

[英]mariadb replication (master / slave) - slave lagging behind due to long execution on delete query

我已經設置了一個非常經典的 MariaDB 10.4.13 復制 GTID 設置,帶有兩台服務器(可寫主機和只讀從機)。

一段時間以來,我注意到我的一些應用程序 SELECT 查詢路由到從站中存在一些不一致。經過一些故障排除后,我發現從站的“Seconds_Behind_Master”值增長到 10,000 秒 (.)。

通過在從屬設備上執行SHOW PROCESSLIST ,我注意到長查詢,例如:

 11 | system user | | NULL | Slave_SQL | 14 | Delete_rows_log_event :: find_row (-1) | DELETE FROM `mytable` WHERE` id` = 5580

每一個都需要超過 20 秒的時間來執行 (.) 所以它們會累積並導致滯后......

在主設備上啟動的相同刪除查詢是瞬時的(0.031 秒) - 此外,從設備硬件比主設備更強大(4 核 CPU 與 2 核 CPU)並且從設備上的平均負載/CPU 非常低。

我已經嘗試將並行“ slave_parallel_threads ”增加到從 CPU (4) 的數量,如此處所述但沒有任何好處。

有關如何解決此問題或提高復制性能以保持主/從同步的任何線索?

DELETE FROM mytable WHERE id = 5580是整個查詢嗎? (可能除了表名。)

你沒有關於id的索引嗎?

如果idUNIQUEPRIMARY ,那應該只需要幾毫秒。

slave_parallel_threads -- 其他線程是否接觸同一張表?

如果要刪除大量行,請參閱http://mysql.rjweb.org/doc.php/deletebig

也許在那張桌子上正在執行一個大的ALTER

是的,問題是由於應用程序中的表格設計不佳。

表缺少UNIQUE / PRIMARY鍵,因此對奴隸的DELETE查詢需要很長時間,如此所述

我通過在表上創建主索引並在之后重建 SLAVE 來修復,到目前為止不再滯后:)

暫無
暫無

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

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