概念
21 ページバージョン管理
このドキュメントでは、etcdプロジェクトでサポートされるバージョンについて説明します。 サービスのバージョン管理とサポート対象バージョン etcdのバージョンは、セマンティックバージョニング の用語に従い、x.y.zと表記します。xはメジャーバージョン、yはマイナーバージョン、zはパッチバージョンです。新しいマイナーバージョンでは、APIに機能が追加される場合があります。 etcdプロジェクトでは、現行バージョンとその前のリリースのリリースブランチを保守します。たとえば、v3.5が現行バージョ …
このドキュメントでは、etcdプロジェクトでサポートされるバージョンについて説明します。 サービスのバージョン管理とサポート対象バージョン etcdのバージョンは、セマンティックバージョニング の用語に従い、x.y.zと表記します。xはメジャーバージョン、yはマイナーバージョン、zはパッチバージョンです。新しいマイナーバージョンでは、APIに機能が追加される場合があります。 etcdプロジェクトでは、現行バージョンとその前のリリースのリリースブランチを保守します。たとえば、v3.5が現行バージョ …
2. HAProxy のアーキテクチャ
HAProxy は、マルチスレッドで動作するイベント駆動型のノンブロッキングデーモンです。複数の処理の切り替えをシステムのスケジューリングに任せず、イベントの多重化によってすべての処理をスケジュールします。通常は単一プロセスとして動作するため、システム上で “ps aux” を実行すると “haproxy” プロセスは一つだけ表示されます。ただし、ソフトリロード中に、新しいプロセスと並行して古いプロセスが残りの処理を終えている場合は例外です。このため、strace ユーティリティで動作を簡単に …
HAProxy は、マルチスレッドで動作するイベント駆動型のノンブロッキングデーモンです。複数の処理の切り替えをシステムのスケジューリングに任せず、イベントの多重化によってすべての処理をスケジュールします。通常は単一プロセスとして動作するため、システム上で “ps aux” を実行すると “haproxy” プロセスは一つだけ表示されます。ただし、ソフトリロード中に、新しいプロセスと並行して古いプロセスが残りの処理を終えている場合は例外です。このため、strace ユーティリティで動作を簡単に …
複数のデータセンターにまたがるHA
複数のデータセンターにデプロイしたPostgreSQLクラスターの高可用性は、レプリケーションに基づきます。レプリケーションには同期と非同期があります(レプリケーションモード を参照)。 どちらの場合も、次の概念を明確に理解することが重要です。 Postgresがプライマリーまたはスタンバイリーダーとして動作できるのは、リーダーキーを所有し、それを更新できる場合だけです。 etcd、ZooKeeper、Consulのノードは、3または5という奇数台で実行することを推奨します。 同期レプリケーシ …
複数のデータセンターにデプロイしたPostgreSQLクラスターの高可用性は、レプリケーションに基づきます。レプリケーションには同期と非同期があります(レプリケーションモード を参照)。 どちらの場合も、次の概念を明確に理解することが重要です。 Postgresがプライマリーまたはスタンバイリーダーとして動作できるのは、リーダーキーを所有し、それを更新できる場合だけです。 etcd、ZooKeeper、Consulのノードは、3または5という奇数台で実行することを推奨します。 同期レプリケーシ …
セキュリティに関する考慮事項
Patroni クラスターには、不正アクセスから保護すべき2つのインターフェースがあります。1つは分散型構成ストレージ(DCS)、もう1つは Patroni REST API です。 DCS の保護 Patroni と patronictl は、DCS に対してデータの格納および取得を行います。 DCS には機密情報は含まれていませんが、Patroni/PostgreSQL の設定の一部を変更できるため、最初に保護すべきは DCS 自体です。 保護の詳細は使用する DCS の種類によって異なり …
Patroni クラスターには、不正アクセスから保護すべき2つのインターフェースがあります。1つは分散型構成ストレージ(DCS)、もう1つは Patroni REST API です。 DCS の保護 Patroni と patronictl は、DCS に対してデータの格納および取得を行います。 DCS には機密情報は含まれていませんが、Patroni/PostgreSQL の設定の一部を変更できるため、最初に保護すべきは DCS 自体です。 保護の詳細は使用する DCS の種類によって異なり …
他のツールとの統合
Patroni は、スタック内の他のツールと統合できます。このセクションでは、Patroni が他のツールと統合する方法についてのアイデアを提供する例を示します。ただし、すべての例を網羅しているわけではありません。 Barman Patroni は patroni_barman というアプリケーションを提供しており、pg-backup-api と通信するためのロジックを備えているため、リモートで Barman 操作を実行できます。 このアプリケーションには現在、いくつかのサブコマンドがあります …
Patroni は、スタック内の他のツールと統合できます。このセクションでは、Patroni が他のツールと統合する方法についてのアイデアを提供する例を示します。ただし、すべての例を網羅しているわけではありません。 Barman Patroni は patroni_barman というアプリケーションを提供しており、pg-backup-api と通信するためのロジックを備えているため、リモートで Barman 操作を実行できます。 このアプリケーションには現在、いくつかのサブコマンドがあります …
Citusサポート
Patroniを使用すると、マルチノードCitus クラスターを非常に簡単に構築できます。 要点 必要なのは、次の簡単なルールに従うことだけです。 PostgreSQLのデータベース拡張Citus を、すべてのノードで使用できるようにしてください。サポートされる最低バージョンはCitus 10.0ですが、ワーカーの透過的なスイッチオーバーと再起動の利点をすべて活用するには、Citus 11.2以降を推奨します。 クラスター名(scope)は、すべてのCitusノードで同じにする必要があります。 …
Patroniを使用すると、マルチノードCitus クラスターを非常に簡単に構築できます。 要点 必要なのは、次の簡単なルールに従うことだけです。 PostgreSQLのデータベース拡張Citus を、すべてのノードで使用できるようにしてください。サポートされる最低バージョンはCitus 10.0ですが、ワーカーの透過的なスイッチオーバーと再起動の利点をすべて活用するには、Citus 11.2以降を推奨します。 クラスター名(scope)は、すべてのCitusノードで同じにする必要があります。 …
DCSフェイルセーフモード
問題 Patroniは、リーダー選出とネットワーク分断の検出を行うため、分散構成ストア(DCS)に大きく依存しています。つまり、DCS内のリーダーロックを更新できる場合に限り、ノードはPostgresをプライマリーとして実行できます。リーダーロックの更新に失敗すると、Postgresはただちに降格し、読み取り専用として起動します。この「問題」が発生する可能性は、使用するDCSによって異なります。たとえば、Patroni専用のetcdでは発生する可能性はほぼゼロですが、etcdを基盤に持つK8s …
問題 Patroniは、リーダー選出とネットワーク分断の検出を行うため、分散構成ストア(DCS)に大きく依存しています。つまり、DCS内のリーダーロックを更新できる場合に限り、ノードはPostgresをプライマリーとして実行できます。リーダーロックの更新に失敗すると、Postgresはただちに降格し、読み取り専用として起動します。この「問題」が発生する可能性は、使用するDCSによって異なります。たとえば、Patroni専用のetcdでは発生する可能性はほぼゼロですが、etcdを基盤に持つK8s …
補完製品と代替製品
HAProxy は、以下に挙げる製品の一部と非常にうまく連携します。そのため、HAProxy に直接関連しないものもここで紹介します。 4.1. Apache HTTP server Apache は、事実上の標準となっている HTTP サーバーです。非常に充実したモジュール構成のプロジェクトで、ファイル配信と動的コンテンツの両方をサポートします。一部のアプリケーションサーバーのフロントエンドとしても使用でき、リクエストのプロキシやレスポンスのキャッシュも行えます。いずれの用途でも、通常は前段 …
HAProxy は、以下に挙げる製品の一部と非常にうまく連携します。そのため、HAProxy に直接関連しないものもここで紹介します。 4.1. Apache HTTP server Apache は、事実上の標準となっている HTTP サーバーです。非常に充実したモジュール構成のプロジェクトで、ファイル配信と動的コンテンツの両方をサポートします。一部のアプリケーションサーバーのフロントエンドとしても使用でき、リクエストのプロキシやレスポンスのキャッシュも行えます。いずれの用途でも、通常は前段 …
ウォッチドッグのサポート
複数のPostgreSQLサーバーがプライマリーとして動作すると、タイムラインが分岐してトランザクションが失われる可能性があります。この状況はスプリットブレイン問題とも呼ばれます。スプリットブレインを避けるには、DCS内のリーダーキーが期限切れになった後にPostgreSQLがトランザクションのコミットを受け付けないよう、Patroniが保証する必要があります。通常、Patroniは何らかの理由でリーダーロックの更新に失敗すると、PostgreSQLを停止することでこれを実現しようとします。し …
複数のPostgreSQLサーバーがプライマリーとして動作すると、タイムラインが分岐してトランザクションが失われる可能性があります。この状況はスプリットブレイン問題とも呼ばれます。スプリットブレインを避けるには、DCS内のリーダーキーが期限切れになった後にPostgreSQLがトランザクションのコミットを受け付けないよう、Patroniが保証する必要があります。通常、Patroniは何らかの理由でリーダーロックの更新に失敗すると、PostgreSQLを停止することでこれを実現しようとします。し …
プロジェクトの指標
コードカバレッジ pgBackRest は、/src のコア C コードを完全に function/branch/line カバーすることを目指しています。 関数/行は例外なく完全にカバーされています。 ブランチ カバレッジでは、マクロ内のブランチと assert() 呼び出しは除外されます。マクロには独自の単体テストがあるため、マクロが出現するすべての場所でテストする必要はありません。アサートは常に true であるべきケースをテストするため、完全な分岐カバレッジを持つことは期待されていませ …
コードカバレッジ pgBackRest は、/src のコア C コードを完全に function/branch/line カバーすることを目指しています。 関数/行は例外なく完全にカバーされています。 ブランチ カバレッジでは、マクロ内のブランチと assert() 呼び出しは除外されます。マクロには独自の単体テストがあるため、マクロが出現するすべての場所でテストする必要はありません。アサートは常に true であるべきケースをテストするため、完全な分岐カバレッジを持つことは期待されていませ …
コミュニティ
チュートリアル Postgres Plus Standard Server 用に PgBouncer を設定する方法 PgBouncer の概念についての良い概要。 バウンシングの意味とは何か。 プーリングモードの違いについて説明します。 サポート プロジェクトページ を GitHub で查看 イシュー トラッカー を GitHub で利用 PgBouncer セクション at Stack Overflow GitHub でのコミュニティディスカッション
チュートリアル Postgres Plus Standard Server 用に PgBouncer を設定する方法 PgBouncer の概念についての良い概要。 バウンシングの意味とは何か。 プーリングモードの違いについて説明します。 サポート プロジェクトページ を GitHub で查看 イシュー トラッカー を GitHub で利用 PgBouncer セクション at Stack Overflow GitHub でのコミュニティディスカッション
レプリケーションモード
PatroniはPostgreSQLのストリーミングレプリケーションを使用します。ストリーミングレプリケーションの詳細はPostgresのドキュメント を参照してください。デフォルトでは、PatroniはPostgreSQLに非同期レプリケーションを設定します。レプリケーション方式の選択は業務上の要件によって異なります。非同期と同期の両方式、および他の高可用性ソリューションを検討し、最適なものを判断してください。 非同期モードの永続性 非同期モードでは、可用性を確保するために、コミット済みトラ …
PatroniはPostgreSQLのストリーミングレプリケーションを使用します。ストリーミングレプリケーションの詳細はPostgresのドキュメント を参照してください。デフォルトでは、PatroniはPostgreSQLに非同期レプリケーションを設定します。レプリケーション方式の選択は業務上の要件によって異なります。非同期と同期の両方式、および他の高可用性ソリューションを検討し、最適なものを判断してください。 非同期モードの永続性 非同期モードでは、可用性を確保するために、コミット済みトラ …
etcd 3.7 ドキュメント
etcdは、強い整合性を備えた分散キー・バリューストアです。これらのガイドでは、etcdのインストールと運用、APIを使用したアプリケーションの構築、設計の理解、性能の測定、3.7リリース系列でのクラスターのアップグレードとダウングレードについて説明します。 ローカルの単一メンバークラスターを作成する場合はクイックスタート 、サポートされるインストール方法についてはインストール 、本番環境へのデプロイについては運用ガイド から始めてください。
etcdは、強い整合性を備えた分散キー・バリューストアです。これらのガイドでは、etcdのインストールと運用、APIを使用したアプリケーションの構築、設計の理解、性能の測定、3.7リリース系列でのクラスターのアップグレードとダウングレードについて説明します。 ローカルの単一メンバークラスターを作成する場合はクイックスタート 、サポートされるインストール方法についてはインストール 、本番環境へのデプロイについては運用ガイド から始めてください。
pgBadger 13.2ドキュメント
pgBadgerは、Perlで書かれた高速な単体動作のPostgreSQLログアナライザーです。PostgreSQLまたはPgBouncerのログを読み取り、詳細なHTML、テキスト、バイナリ、JSON、または生のCSVを出力します。HTMLレポートは自己完結型で、操作や拡大縮小が可能です。閲覧に必要なのはウェブブラウザーだけです。 pgBadgerを選ぶ理由 pgBadgerは、大きなログの解析と運用での利用を想定して設計されています。 単一のPerlプログラムであり、Perlコア以外の必須モ …
pgBadgerは、Perlで書かれた高速な単体動作のPostgreSQLログアナライザーです。PostgreSQLまたはPgBouncerのログを読み取り、詳細なHTML、テキスト、バイナリ、JSON、または生のCSVを出力します。HTMLレポートは自己完結型で、操作や拡大縮小が可能です。閲覧に必要なのはウェブブラウザーだけです。 pgBadgerを選ぶ理由 pgBadgerは、大きなログの解析と運用での利用を想定して設計されています。 単一のPerlプログラムであり、Perlコア以外の必須モ …
PgBouncer 1.25.2 ドキュメント
pgbouncer は PostgreSQL のコネクションプーラーです。任意の対象アプリケーションは、実際のサーバーのように pgbouncer に接続できます。このとき、pgbouncer は実際に接続先のサーバーに接続するか、既存の接続を再利用します。 pgbouncer の目的は、PostgreSQL への新しい接続を開く際のパフォーマンスへの影響を低減することです。 接続プールのトランザクションセマンティクスを損なわないようにするため、pgbouncer は接続をローテーションする際に …
pgbouncer は PostgreSQL のコネクションプーラーです。任意の対象アプリケーションは、実際のサーバーのように pgbouncer に接続できます。このとき、pgbouncer は実際に接続先のサーバーに接続するか、既存の接続を再利用します。 pgbouncer の目的は、PostgreSQL への新しい接続を開く際のパフォーマンスへの影響を低減することです。 接続プールのトランザクションセマンティクスを損なわないようにするため、pgbouncer は接続をローテーションする際に …
pgBackRest 2.59.1 ドキュメント
はじめに pgBackRestは、最大規模のデータベースやワークロードにもシームレスに対応できる、PostgreSQL向けの信頼性の高いバックアップとリストアのソリューションです。 現在の安定版はpgBackRest v2.59.1 です。リリースノートはリリース ページにあります。 pgBackRestを気に入っていただけたら、GitHub でスターを付けてください! ニュース 2026年8月17日 - pgBackRest 2.59.1をリリース 2026年7月20日 - 新しい配布用 …
はじめに pgBackRestは、最大規模のデータベースやワークロードにもシームレスに対応できる、PostgreSQL向けの信頼性の高いバックアップとリストアのソリューションです。 現在の安定版はpgBackRest v2.59.1 です。リリースノートはリリース ページにあります。 pgBackRestを気に入っていただけたら、GitHub でスターを付けてください! ニュース 2026年8月17日 - pgBackRest 2.59.1をリリース 2026年7月20日 - 新しい配布用 …
機能
接続をローテートする際の幾つかのレベルの厳しさ: セッションプーリング 最も丁寧な方法です。クライアントが接続すると、そのクライアントが接続を維持している間は、サーバー接続が常に割り当てられます。クライアントが切断すると、そのサーバー接続はプールに戻されます。このモードは、すべての PostgreSQL 機能をサポートしています。 トランザクションプーリング クライアントにサーバー接続が割り当てられるのは、トランザクション中に限られます。PgBouncer がトランザクションの終了を検知すると …
接続をローテートする際の幾つかのレベルの厳しさ: セッションプーリング 最も丁寧な方法です。クライアントが接続すると、そのクライアントが接続を維持している間は、サーバー接続が常に割り当てられます。クライアントが切断すると、そのサーバー接続はプールに戻されます。このモードは、すべての PostgreSQL 機能をサポートしています。 トランザクションプーリング クライアントにサーバー接続が割り当てられるのは、トランザクション中に限られます。PgBouncer がトランザクションの終了を検知すると …
はじめに
Patroniは、Pythonを使用した高可用性(HA)PostgreSQLソリューションのテンプレートです。PatroniはComposeのプロジェクトであるGovernor のフォークとして誕生し、多くの新機能を備えています。 背景については、次も参照してください。 KubernetesとPatroniによるPostgreSQLのHA 、KubeCon 2016でのJosh Berkusの講演(動画) 2016年二月のZalando Techブログ記事 開発状況 Patroniは活発に開発 …
Patroniは、Pythonを使用した高可用性(HA)PostgreSQLソリューションのテンプレートです。PatroniはComposeのプロジェクトであるGovernor のフォークとして誕生し、多くの新機能を備えています。 背景については、次も参照してください。 KubernetesとPatroniによるPostgreSQLのHA 、KubeCon 2016でのJosh Berkusの講演(動画) 2016年二月のZalando Techブログ記事 開発状況 Patroniは活発に開発 …
Patroni 4.1.5ドキュメント
警告 Python 3.11+を使用する、メモリー制限のあるシステムでのPatroniの実行 たとえばvm.overcommit_memory=2(PostgreSQLで推奨)を設定したような、メモリー制限が厳しいシステムでPatroniを実行し、Python 3.11以降を使用すると、予期しない動作が見られる場合があります。 Patroniは正常に見える PostgreSQLは動作を継続する PatroniのREST APIが応答しなくなる オペレーティングシステムは、Patroniが …
警告 Python 3.11+を使用する、メモリー制限のあるシステムでのPatroniの実行 たとえばvm.overcommit_memory=2(PostgreSQLで推奨)を設定したような、メモリー制限が厳しいシステムでPatroniを実行し、Python 3.11以降を使用すると、予期しない動作が見られる場合があります。 Patroniは正常に見える PostgreSQLは動作を継続する PatroniのREST APIが応答しなくなる オペレーティングシステムは、Patroniが …