2019年4月16日火曜日

gh-ostでスレーブの遅延を見ながら処理速度を調整する

TL;DR

  • マスターに接続する( --allow-on-master )場合、 --throttle-control-replicas myhost1.com:3306,myhost2.com:3306 で遅延監視対象を指定する
    • スレーブからbinlogを吸い上げてマスターに当て込む場合は、接続先のスレーブで遅延監視をする
  • 閾値は gh-ost --max-lag-millis 1000 で指定する (デフォルト1500ミリ秒)
  • SHOW SLAVE STATUS は叩かず、 *_ghc テーブルに書き込んだハートビートの行と現在時刻の差分で計算する
    • --test-on-replica--migrate-on-replica の時だけ SHOW SLAVE STATUS するっぽい

2019-04-16T07:13:51.784309Z        22 Query     select value from `mysqlslap`.`_t1_ghc` where hint = 'heartbeat' and id <= 255
2019-04-16T07:13:52.784030Z        22 Query     select value from `mysqlslap`.`_t1_ghc` where hint = 'heartbeat' and id <= 255
2019-04-16T07:13:53.784096Z        22 Query     select value from `mysqlslap`.`_t1_ghc` where hint = 'heartbeat' and id <= 255
こんなレコードが入ってた。
slave1 [localhost] {msandbox} (mysqlslap) > SELECT * FROM _t1_ghc WHERE hint= 'heartbeat' AND id <= 255;
+----+---------------------+-----------+----------------------------------------+
| id | last_update         | hint      | value                                  |
+----+---------------------+-----------+----------------------------------------+
|  1 | 2019-04-16 16:13:31 | heartbeat | 2019-04-16T16:13:31.979520869+09:00    |
+----+---------------------+-----------+----------------------------------------+
1 rows in set (0.00 sec)
この value に入っている値を現在時刻と比較して遅延を計算する、と。
なるほど。 pt-heartbeat と同じような仕組みですね。
今日はこれまで。

0 件のコメント :

コメントを投稿