160812080902

スレーブが処理出来る量を超えた更新がマスターからやってくると、

  …といえば
http://nippondanji.blogspot.jp/2011/12/mysql.html
スレーブでは更新が滞ってしまう。ひとつの大きなトランザクションによる遅延は突如としてやってくるが、こちらの場合は徐々にスレーブが遅れていくことになる。どのリソースがボトルネックになるかは状況次第だが、概ね次の3パターンに分けて考えると良い。

CPU bound ... スレーブへの参照の負荷が高すぎて、スレーブSQLスレッドに割り当てるCPUリソースが枯渇してしまっている。
Memory bound ... ワーキングセットがInnoDBバッファプールよりもずっと大きい。UPDATEやDELETEを実行する場合には、対象となるレコードがバッファプール内に存在している必要があるが、バッファプールが小さすぎる場合には頻繁にディスクから読み込む必要が生じることになり、ディスクI/Oは時間がかかるので遅延の原因となる。
I/O bound ... マスターでは更新は並列に行われ、グループCOMMITによりログへの更新がまとめて行われるが、スレーブ上ではトランザクションはひとつずつしか実行できない。COMMITのたびにディスクへの同期が行われるが、その操作は時間がかかる。マスターとスレーブでの同期回数の差異により、スレーブが遅れてしまう。
わらし 2016/08/12(fri)08:09

マスターで1時間かかるようなトランザクションは、マスターでCOMMITされた後に

  関連記事
スレーブで開始され、同じように1時間かかるので、
スレーブが同じ状態に追いつくのは約1時間後になる
わらし 2016/08/12(fri)08:14

レプリケーションの遅延をモニタリングする、pt-heartbeatを使おう。

  関連記事
https://yakst.com/ja/posts/60
わらし 2016/08/12(fri)08:15

該当記事 3 / 3 件

これらの記事にコメントとか
名前 本名 
題名
内容
H.P.
(写)メール投稿 こよみ

©