Replication

MariaDB 亂序並行複制和優化表

  • June 17, 2020

我正在使用 MariaDB 10.4,並且對無序並行複制有疑問。

我每週都在 Master 上優化數據庫(大約 400GB 的數據)。由於在 master 上優化 DB 沒有任何負面影響,因此在 slave 上複製 OPTIMIZE 命令會導致巨大的複制延遲(長達半小時)。我可以使用亂序並行複制(https://mariadb.com/kb/en/parallel-replication/#out-of-order-parallel-replication)並為 master 上的 OPTIMIZE 命令設置不同的 gtid_domain_id 來修復這 ?

請注意,master 上的表格一直在更新。我不確定這是否安全?

也許不在主伺服器上複製 OPTIMIZE 命令並在所有從伺服器上獨立執行它們會更安全?這會影響複製/滯後嗎?

反優化

如果您使用的是 InnoDB(您應該使用它),那麼OPTIMIZE TABLE幾乎完全沒用。停止執行。

如果您是DELETEing一張桌子的大塊,並且這導致您想要OPTIMIZE,那麼讓我們討論替代方案。

複製問題

可以避免複製任何命令:

SET SESSION binlog = OFF;   -- I forget the details
OPTIMIZE TABLE ...;
SET ...   -- restore replication

但看起來你想OPTIMIZE在奴隸上,你在SELECTs哪裡?

如果您有一種優雅的方法可以讓奴隸停止旋轉,您可以一次“滾動”OPTIMIZE奴隸。

分析

如果目標是刷新“統計資訊”,那麼ANALYZE TABLE速度會更快,因此侵入性更小。

分割

如果正在清除“舊”數據,則分區比 ; 快得多DELETE,並且不需要OPTIMIZE; 我們應該討論這個嗎?

引用自:https://dba.stackexchange.com/questions/269265