Replication
MariaDB 亂序並行複制和優化表
我正在使用 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
; 我們應該討論這個嗎?