前回に続いて Azure Database for MySQL の貯めてたネタの放出回。

Azure Database for MySQL のレプリケーションラグ

Azure Database for MySQL では Azure Portal の “Replication” という画面で読み取りレプリカのレプリケーションラグを確認できる。

Replication 画面に表示されるレプリケーションのラグ

あるとき、レプリカを作ってこの画面を見ながらラグが無くなるのを待っていた。 だけど、いつまで経ってもラグの時間が変わらない。

詳しくラグを見るためメトリクスの ”Replication Lag in Seconds" を見ると、こちらはちゃんとラグが減っていた。 なんなら 0 秒になっているタイミングすらある。 なのに “Replication” の画面では相変わらず。

ドキュメントを調べたり、Microsoft Learn MCP Server を入れた Claude さんに聞いたりしてみたけど、理由は分からず。 とはいえ “Replication” 画面のラグは変化することもある。

そこで「一定期間の最大値とか平均値を表示してるのでは?」と思い、“Replication” 画面とメトリクスの “Replication Lag in Seconds” を並べてラグが変化するタイミングを待ってみると、すぐに判明した。

“Replication” 画面に表示されるラグは「過去 1 時間の “Replication Lag in Seconds” の最大値」を表示しているようだった。

検証

個人サブスクリプションの小さい環境で試したので大きなラグは出てないけど、1 時間以内の最大ラグが 1 秒のメトリクスの画面。

過去 1 時間の “Replication Lag in Seconds” の最大値が 1 秒

このときには “Replication” 画面のラグは 1 秒になっている(冒頭のスクショと同じ画像)。

Replication 画面はラグ 1 秒と表示

1 時間以内のラグが 0 秒になると

過去 1 時間の “Replication Lag in Seconds” の最大値が 0 秒

“Replication” 画面のラグも 0 秒、ではなく “–” になる。

Replication 画面はラグ “–“と表示

まとめ

というわけで、Azure Database for MySQL の “Replication” 画面に表示されるレプリケーションラグを見るときは、「過去 1 時間の ‘Replication Lag in Seconds’ の最大値」ということを念頭に置いておこう。 そしてメトリクスをちゃんと見よう。