SlideShare a Scribd company logo
8
Most read
9
Most read
13
Most read
© 2023 NTT DATA Corporation
レプリケーション遅延の監視について
2023年 3月 16日 第40回PostgreSQLアンカンファレンス@オンライン
株式会社NTTデータ 技術開発本部
貞弘 泰輔
© 2023 NTT DATA Corporation 2
自己紹介
貞弘 泰輔
【経歴】
・5年くらいメインフレームのマイグレーション関連の開発を経験(PostgreSQLに触れる機会はなかった)
・5年くらいPostgreSQLを使ったシステム開発を経験
・PostgreSQLにもっと詳しくなりたいと思い研究開発チームに異動
© 2023 NTT DATA Corporation 3
本講演について
• 講演資料はNTTデータのSlideShareで公開しています。
• https://www.slideshare.net/nttdata-tech
• 本講演では、レプリケーション遅延の監視について説明します
• レプリケーション遅延監視の目的
• 遅延の確認方法(pg_stat_replicationビュー)
• レプリケーション遅延監視用SQLの例
© 2022 NTT DATA Corporation 4
© 2023 NTT DATA Corporation 4
レプリケーション遅延監視の目的
© 2023 NTT DATA Corporation 5
前提とする構成について
・プライマリ、スタンバイの2台構成
・プライマリのデータベースの更新結果をスタンバイにレプリケーション(複製)
クライアント
複製
同期or非同期レプリケーション
プライマリ スタンバイ
参照SQL
更新SQL
参照SQL
この遅延を監視したい
© 2023 NTT DATA Corporation 6
同期/非同期レプリケーションにおける遅延監視の目的について
・同期、非同期で遅延監視の目的が異なる
プライマリ スタンバイ
クライアント
レプリケーション 遅延監視の目的
同期 データ同期は保証されているため、応答時間にどの程度影響があるのかを知りたい。
非同期 どの程度プライマリとスタンバイのデータが乖離しているのかを知りたい。
例えばシステム要件のRPO(目標復旧地点)が1分以内だった場合、1分以上遅延が発生していないか等。
①更新SQL
②WAL書込 ❹WAL書込
❸WAL転送
❻応答
③応答
❺リカバリ
①更新SQL
②WAL書込 ④WAL書込
③WAL転送
⑤応答
⑥応答
❺リカバリ
同
期
非
同
期
○数字と●数字は並列処理
© 2022 NTT DATA Corporation 7
© 2023 NTT DATA Corporation 7
02
レプリケーション遅延の確認方法
© 2023 NTT DATA Corporation 8
pg_stat_replicationビューのwrite_lag、flush_lag、apply_lagについて
・pg_stat_replicationビューのwrite_lag、flush_lag、apply_lag列でレプリケーション遅延を時間単位で確認できる
列名 日本語マニュアルの説明
write_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出した(が、まだ吐き出したり適
用したりしていない)ことの通知を受け取るまでの経過時間です。
flush_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出して吐き出した(が、まだ適用
していない)ことの通知を受け取るまでの経過時間です
apply_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出し、吐き出し、そして適用したこ
との通知を受け取るまでの経過時間です。
■pg_stat_replicationビュー項目のマニュアルからの抜粋
© 2023 NTT DATA Corporation 9
write_lag、flush_lag、apply_lagの説明の補足
プライマリ スタンバイ
クライアント
①更新SQL
②WAL書込 ④WAL書込(write)
④’WAL書込(flush)
③WAL転送
⑤応答
⑥応答
❺リカバリ
・WAL書込にはバッファに書き込まれたが、ディスクへの書き込みが完了していない状態(WAL書込(write))とディスクへの書き込みま
で完了した状態(WAL書込(flush))がある。
・WAL書込(write)状態だとシステムクラッシュ等でデータが失われるリスクがあるが、WAL書込(flush)状態ではデータが失われない。
列名 マニュアルの説明 赤字状態の補足
write_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出した(が、
まだ吐き出したり適用したりしていない)ことの通知を受け取るまでの経過時間です。
④WAL書込(write)まで完了
flush_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出して吐き
出した(が、まだ適用していない)ことの通知を受け取るまでの経過時間です
④’WAL書込(flush)まで完了
apply_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出し、吐き
出し、そして適用したことの通知を受け取るまでの経過時間です。
❺リカバリまで完了(スタンバイか
らデータを参照可能になる)
© 2023 NTT DATA Corporation 10
レプリケーション遅延の計算方法と注意事項について
■レプリケーション遅延の計算方法
・「レプリケーション完了の応答メッセージをスタンバイからプライマリが受信した時刻」 - 「そのレプリケーション完了のLSN(Log
Sequence Number)のWALをプライマリが送信した時刻の近似値」
・スタンバイからレプリケーション完了の応答メッセージを受信するたびに計算される
■注意事項(遅延ポイントによっては計測できないケースがある)
・プライマリのディスクにWALが書き込まれてから、何かの問題でそのWALの送信が遅れている場合、その遅延は計測できない。
・ネットワークトラブル等でレプリケーション完了の応答メッセージがスタンバイから届かない場合、その間は更新されないため、古い
値がそのまま表示され続ける。
プライマリ スタンバイ
送信済WAL情報
(LSN,時刻)=(100,11:00),(200,12:00),(300,13:00)
LSN=100の完了メッセージを11:30に受信
例えばLSN=100の完了メッセージを11:30に受信した場合、遅延時間は11:30 – 11:00 = 30分と計算される。
※受信したLSNより前の情報が送信側(プライマリ)に残っていない場合、次のLSNの情報から時刻が近似計算される。このあたりは次の機会に詳しく解説したい。
© 2022 NTT DATA Corporation 11
© 2023 NTT DATA Corporation 11
03
レプリケーション遅延監視用SQLの例
© 2023 NTT DATA Corporation 12
SQLのサンプルについて
以下のような点を考慮して監視用のSQLを検討する
• write_lag、flush_lag、apply_lagはプライマリがスタンバイに追いつくと0ではなくNULLになる。
• write_lag、flush_lag、apply_lagの項目を監視目的、要件に応じて選定する。
➢ 単一の項目を返却してその数値を閾値と比較することでアラートをあげたい等
flush_lagの値を取得するSQLのサンプル
→flush_lagの値を閾値と比較するため、秒数で取得したい。NULLの場合は0として取得したいというケース。
SELECT EXTRACT(EPOCH FROM CASE WHEN flush_lag IS NULL THEN '00:00:00'::INTERVAL ELSE flush_lag END) AS replication_delay FROM pg_stat_replication;
© 2023 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。
© 2023 NTT DATA Corporation 14
参考文献
PostgreSQLマニュアル(公式ドキュメント(PG14版)、日本語ドキュメント)
• PostgreSQL: Documentation: 14: PostgreSQL 14.7 Documentation
• PostgreSQL 14.5文書

More Related Content

What's hot (20)

PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PPTX
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PDF
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PDF
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PPTX
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PDF
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
PDF
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
 
PDF
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
 
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PDF
OSC北海道2014_JPUG資料
Chika SATO
 
PDF
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
PDF
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PDF
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
PDF
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
PDF
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
 
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
OSC北海道2014_JPUG資料
Chika SATO
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

PDF
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
PDF
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
PDF
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
PDF
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
PDF
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PDF
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
PDF
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
PDF
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
PDF
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
PDF
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
Ad

Recently uploaded (10)

PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
Ad

レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. © 2023 NTT DATA Corporation レプリケーション遅延の監視について 2023年 3月 16日 第40回PostgreSQLアンカンファレンス@オンライン 株式会社NTTデータ 技術開発本部 貞弘 泰輔
  • 2. © 2023 NTT DATA Corporation 2 自己紹介 貞弘 泰輔 【経歴】 ・5年くらいメインフレームのマイグレーション関連の開発を経験(PostgreSQLに触れる機会はなかった) ・5年くらいPostgreSQLを使ったシステム開発を経験 ・PostgreSQLにもっと詳しくなりたいと思い研究開発チームに異動
  • 3. © 2023 NTT DATA Corporation 3 本講演について • 講演資料はNTTデータのSlideShareで公開しています。 • https://www.slideshare.net/nttdata-tech • 本講演では、レプリケーション遅延の監視について説明します • レプリケーション遅延監視の目的 • 遅延の確認方法(pg_stat_replicationビュー) • レプリケーション遅延監視用SQLの例
  • 4. © 2022 NTT DATA Corporation 4 © 2023 NTT DATA Corporation 4 レプリケーション遅延監視の目的
  • 5. © 2023 NTT DATA Corporation 5 前提とする構成について ・プライマリ、スタンバイの2台構成 ・プライマリのデータベースの更新結果をスタンバイにレプリケーション(複製) クライアント 複製 同期or非同期レプリケーション プライマリ スタンバイ 参照SQL 更新SQL 参照SQL この遅延を監視したい
  • 6. © 2023 NTT DATA Corporation 6 同期/非同期レプリケーションにおける遅延監視の目的について ・同期、非同期で遅延監視の目的が異なる プライマリ スタンバイ クライアント レプリケーション 遅延監視の目的 同期 データ同期は保証されているため、応答時間にどの程度影響があるのかを知りたい。 非同期 どの程度プライマリとスタンバイのデータが乖離しているのかを知りたい。 例えばシステム要件のRPO(目標復旧地点)が1分以内だった場合、1分以上遅延が発生していないか等。 ①更新SQL ②WAL書込 ❹WAL書込 ❸WAL転送 ❻応答 ③応答 ❺リカバリ ①更新SQL ②WAL書込 ④WAL書込 ③WAL転送 ⑤応答 ⑥応答 ❺リカバリ 同 期 非 同 期 ○数字と●数字は並列処理
  • 7. © 2022 NTT DATA Corporation 7 © 2023 NTT DATA Corporation 7 02 レプリケーション遅延の確認方法
  • 8. © 2023 NTT DATA Corporation 8 pg_stat_replicationビューのwrite_lag、flush_lag、apply_lagについて ・pg_stat_replicationビューのwrite_lag、flush_lag、apply_lag列でレプリケーション遅延を時間単位で確認できる 列名 日本語マニュアルの説明 write_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出した(が、まだ吐き出したり適 用したりしていない)ことの通知を受け取るまでの経過時間です。 flush_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出して吐き出した(が、まだ適用 していない)ことの通知を受け取るまでの経過時間です apply_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出し、吐き出し、そして適用したこ との通知を受け取るまでの経過時間です。 ■pg_stat_replicationビュー項目のマニュアルからの抜粋
  • 9. © 2023 NTT DATA Corporation 9 write_lag、flush_lag、apply_lagの説明の補足 プライマリ スタンバイ クライアント ①更新SQL ②WAL書込 ④WAL書込(write) ④’WAL書込(flush) ③WAL転送 ⑤応答 ⑥応答 ❺リカバリ ・WAL書込にはバッファに書き込まれたが、ディスクへの書き込みが完了していない状態(WAL書込(write))とディスクへの書き込みま で完了した状態(WAL書込(flush))がある。 ・WAL書込(write)状態だとシステムクラッシュ等でデータが失われるリスクがあるが、WAL書込(flush)状態ではデータが失われない。 列名 マニュアルの説明 赤字状態の補足 write_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出した(が、 まだ吐き出したり適用したりしていない)ことの通知を受け取るまでの経過時間です。 ④WAL書込(write)まで完了 flush_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出して吐き 出した(が、まだ適用していない)ことの通知を受け取るまでの経過時間です ④’WAL書込(flush)まで完了 apply_lag 最近のWALをローカルに吐き出してから、このスタンバイサーバがそれを書き出し、吐き 出し、そして適用したことの通知を受け取るまでの経過時間です。 ❺リカバリまで完了(スタンバイか らデータを参照可能になる)
  • 10. © 2023 NTT DATA Corporation 10 レプリケーション遅延の計算方法と注意事項について ■レプリケーション遅延の計算方法 ・「レプリケーション完了の応答メッセージをスタンバイからプライマリが受信した時刻」 - 「そのレプリケーション完了のLSN(Log Sequence Number)のWALをプライマリが送信した時刻の近似値」 ・スタンバイからレプリケーション完了の応答メッセージを受信するたびに計算される ■注意事項(遅延ポイントによっては計測できないケースがある) ・プライマリのディスクにWALが書き込まれてから、何かの問題でそのWALの送信が遅れている場合、その遅延は計測できない。 ・ネットワークトラブル等でレプリケーション完了の応答メッセージがスタンバイから届かない場合、その間は更新されないため、古い 値がそのまま表示され続ける。 プライマリ スタンバイ 送信済WAL情報 (LSN,時刻)=(100,11:00),(200,12:00),(300,13:00) LSN=100の完了メッセージを11:30に受信 例えばLSN=100の完了メッセージを11:30に受信した場合、遅延時間は11:30 – 11:00 = 30分と計算される。 ※受信したLSNより前の情報が送信側(プライマリ)に残っていない場合、次のLSNの情報から時刻が近似計算される。このあたりは次の機会に詳しく解説したい。
  • 11. © 2022 NTT DATA Corporation 11 © 2023 NTT DATA Corporation 11 03 レプリケーション遅延監視用SQLの例
  • 12. © 2023 NTT DATA Corporation 12 SQLのサンプルについて 以下のような点を考慮して監視用のSQLを検討する • write_lag、flush_lag、apply_lagはプライマリがスタンバイに追いつくと0ではなくNULLになる。 • write_lag、flush_lag、apply_lagの項目を監視目的、要件に応じて選定する。 ➢ 単一の項目を返却してその数値を閾値と比較することでアラートをあげたい等 flush_lagの値を取得するSQLのサンプル →flush_lagの値を閾値と比較するため、秒数で取得したい。NULLの場合は0として取得したいというケース。 SELECT EXTRACT(EPOCH FROM CASE WHEN flush_lag IS NULL THEN '00:00:00'::INTERVAL ELSE flush_lag END) AS replication_delay FROM pg_stat_replication;
  • 13. © 2023 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。
  • 14. © 2023 NTT DATA Corporation 14 参考文献 PostgreSQLマニュアル(公式ドキュメント(PG14版)、日本語ドキュメント) • PostgreSQL: Documentation: 14: PostgreSQL 14.7 Documentation • PostgreSQL 14.5文書