レプリケーションラグとは?
れぷりけーしょんらぐ
レプリケーションラグとは、データベースのプライマリ(主)サーバーでの変更がレプリカ(複製)サーバーに反映されるまでに生じる時間の遅延です。
レプリケーションラグとは、データベースのマスター(プライマリ)サーバーに書き込まれたデータが、スレーブ(レプリカ)サーバーに同期されるまでの遅延時間のことです。「レプリケーション遅延」とも呼ばれます。MySQLやPostgreSQLなどのリレーショナルデータベースで非同期レプリケーションを採用している場合に特に重要な概念です。
レプリケーションラグが発生する主な原因は以下の通りです。
- ネットワーク帯域の不足や遅延によるバイナリログの転送遅延
- レプリカサーバーの処理能力(CPU・ディスクI/O)の不足
- 大量のデータ更新がまとめて発生したときのレプリカ側の処理追いつき遅れ
- 長時間かかるトランザクションがレプリカ側の処理を待たせる
レプリケーションラグが問題になる典型的なシナリオは、書き込み直後にレプリカから読み込む場合です。例えばユーザーが設定を変更した直後にその設定を表示しようとしたとき、まだ変更がレプリカに反映されていなければ古い値が表示されてしまいます。これを「読み取り後書き込みの一貫性」問題と呼びます。
対策としては、重要な読み取りをプライマリから行う、アプリケーション側でラグを考慮した設計をする、並列レプリケーションを有効にする、レプリカのハードウェアを強化するなどが挙げられます。遅延の監視には「Seconds_Behind_Master」などの指標が使われます。
使い方・例文
ECサイトで注文が確定した直後に注文履歴ページを開いたら最新の注文が表示されなかった、という現象はレプリケーションラグによって読み取りレプリカに変更が届いていないことが原因として考えられます。
この用語をシェア
最終更新: