newpage

#設計とアーキテクチャ

Barmanをインストールする場所

バーマンの基盤の1つは、ネットワークを介してデータベースサーバからリモートで操作できることです。

理論的には、あなたはそう両方のことを、あなたはバーマンサーバが離れすぎて自分のPostgreSQLからにしたくない、あなたのバーテンダーサーバは何千マイルも離れてあなたのPostgreSQL server.Realisticallyから、世界の別のパートにあるデータセンターに位置して持つことができますバックアップとリカバリの時間は制御されます。

Barmanをセットアップする_ “万能サイズ” _の方法はありませんが、特に従うことをお勧めするいくつかの推奨事項があります。特に:

  • バーマンを専用サーバーにインストールする PostgreSQLサーバーと同じストレージを共有しないでください

  • Barmanをモニタリングインフラストラクチャと統合する[^ nagios]

  • 稼動環境に展開する前にすべてをテストする

    • [^ nagios]:Nagios / Icingaとの統合は、Barmanの最も重要な機能の1つであり真の命の恩人であるbarman check --nagiosコマンドのおかげで簡単です。

災害リカバリアーキテクチャのモデリングをスタートする合理的な方法は、次のとおりです。

  • PostgreSQLおよびBarmanに関して、次のようないくつかの可能なアーキテクチャをデザインしPostgreSQL。 1.同じデータセンター 2.同じ大都市圏の異なるデータセンター 3.異なるデータセンター

  • 各仮説の長所と短所を詳しく説明する

  • 費用対効果分析により、システムの単一障害点(SPOF)を評価する

  • あなたの意思決定をmakeと、最初のソリューションを実装

とはいえ、非常に一般的なBarmanのセットアップは、 PostgreSQLサーバーと同じデータセンターにインストールすることです。この場合、単一障害点はデータセンターです。幸いなことに、このようなSPOFのインパクトは、バックアップ層の数を増やすためにBarmanが提供する2つの機能のおかげで軽減できます。

  1. 地理的冗長性(Barman 2.6で導入)2。 フックスクリプト

_地理的冗長性_を使用すると、異なるデータセンター/アベイラビリティーゾーンにあるBarmanインスタンスに依存して、ソースBarmanサーバーのコンテンツ全体を同期できます。さらにあります:グローバルレベルだけでなくサーバーレベルでも地理的冗長性をBarmanで構成できる場合、一部のサーバーがローカルPostgreSQLサーバーに直接接続され、他のサブセットがサブセットをバックアップするBarmanの_hybrid installations_を作成できます以下の図 ref {georedundancy-design}は、それぞれがローカルのBarmanインストールでバックアップされたプライマリPostgreSQLサーバーを持つ2つのアベイラビリティゾーン(ヨーロッパとアメリカ)を示しています。、およびrsync / SSHを介した多層バックアップのために、他のBarmanサーバー(_passive_として定義)で中継されます。地理的冗長性の詳細については、特定のセクションをご覧ください。

代わりに_hook scripts_のおかげで、Barmanのバックアップは、tarを介した_tape_などの異なるメディア、またはAmazonクラウドの_S3バケットのような場所にエクスポートできます。

決定は永遠に続くものではないことを忘れないでください。この方法でスタートし、時間の経過とともに最適なソリューションに適応できます。ただし、スタートからシンプルに保つようにしてください。

バーマン1、多数のPostgreSQLサーバー

Barmanが最初に導入した別の関連機能は、マルチプルのサーバーのサポートです。バーマンは、異なるバージョンであっても、マルチプルのPostgreSQLインスタンスからのバックアップデータを一元的に保存できます。 [^ recver]

  • [^ recver]:同じ[PostgreSQLのPITRの要件] [requirements_recovery]がリカバリに適用されます。詳細については、セクション_「リカバリの要件」_を参照してください。

その結果、 PostgreSQLサーバーが中央のバーマンサーバーを中心にローテートする「スタースキーマ」を形成する複雑な災害リカバリアーキテクチャをモデルできます。

すべてのアーキテクチャは、独自の方法で意味をなします。実際の実験とテストに基づいて、あなたに共鳴するもの、最も重要なのはあなたが信頼するものを選択してください。

これ以降、簡単にするために、このガイドでは基本的なアーキテクチャを想定しています。

  • 1つのPostgreSQLインスタンス(ホスト名前pg)

  • Barmanを使用した1つのバックアップサーバ(ホスト名前backup)

ストリーミングバックアップとrsync / SSH

従来、Barmanは常に物理的バックアップ操作にrsyncを利用して、SSH経由でリモートで操作していました。バージョン2.0では、pg_basebackupを介した、バックアップ操作用のPostgreSQLのストリーミングレプリケーションプロトコルのネイティブサポートが導入されています。 [^ fmatrix]

  • [^ fmatrix]: PostgreSQLバージョンがBarmanでのストリーミングレプリケーションバックアップをサポートしている「機能マトリクス」をチェックインします。

これらの2つの方法のいずれかを選択すると、あなたがmake必要があります決定です。

一般的に、Barman 2.0以降、ストリーミングレプリケーションを介したバックアップは、 PostgreSQL 9.4以降の推奨セットアップです。さらに、テーブルスペースを使用しない場合は、 PostgreSQL 9.2以降でストリーミングバックアップを使用できます。

重要: :raw-latex:`\改行バーマンが透過`pg_basebackupを利用しているので、現在利用可能でない増分バックアップ、並列バックアップ、重複排除、およびネットワーク圧縮などの機能>。この場合、帯域幅制限には、rsyncを介した従来のメソッドと比較して、いくつかの制限があります。

rsync / SSHを介した従来のバックアップは、8.3以降のPostgreSQLのすべてのバージョンで使用でき、pg_basebackupの制限が発生するすべてのケースで推奨されます(例、増分バックアップと重複排除の恩恵を受けることができる非常にラージデータベース)。

ストリーミングバックアップを推奨する理由は、経験に基づいて、従来のバックアップよりもセットアップが簡単だからです。また、バックアップをストリーミングと、バックアップにWindowsの[^ウィンドウ]上のPostgreSQLをことができますし、ドッカーで作業する際の人生が容易になります。

  • [^ windows]: WindowsでのPostgreSQLサーバーのバックアップは可能ですが、継続的インテグレーションシステムのパートではないため、まだ実験段階です。詳細については、セクション「 Windowsベースのサーバーのセットアップ方法」_を参照してください。

標準アーカイビング、WALストリーミング…、またはその両方

PostgreSQLのPoint-In-Time-Recoveryでは、_xlog_またはWALファイルとも呼ばれるトランザクションログをベースバックアップと一緒に保存する必要があります。

従来、BarmanはPostgreSQLのarchive_command(通常はrsync / SSHを介して、現在はbarman-cliパッケージのbarman-wal-archiveを介して)を介して標準のWALファイルシッピングをサポートしています。このメソッドでは、 PostgreSQLが新しいWALファイルに切り替えたときにのみWALファイルがアーカイブされます。シンプルに保つために、これは通常16MBのデータ変更ごとに発生します。

Barman 1.6.0では、pg_receivewal( PostgreSQL 10より前のpg_receivexlogとも呼ばれる)を介したトランザクションログアーカイビングの追加メソッドとして、 PostgreSQLサーバー9.2以降のWALファイルのストリーミングを導入しています。 WALストリーミングは、データロスのリスクを軽減し、RPOを「ゼロに近い」値に下げます。

Barman 2.0では、 PostgreSQLサーバー9.4以降でのレプリケーションスロットのサポートが導入されているため、WALストリーミングのみの構成が可能です。さらに、 PostgreSQL 9.5(またはそれ以降)クラスターでBarmanを同期的WALレシーバとして追加し、データロスゼロ(RPO = 0)を達成できるようになりました。

場合によっては選択の余地がなく、従来のアーカイビングの使用を余儀なくされます。他では、あなたがそれを行うにはない強い理由があるの両方を使用するか、単にWALストリーミング.Unlessするかどうかを選択することができ、我々は最大限の信頼性と堅牢性のために、両方のチャネルを使用することをお勧めします。

バックアップの2つの典型的なシナリオ

生活を楽にmakeオーダーに、バーマンの特定のPostgreSQLサーバーの最も一般的な2つのシナリオを以下にまとめます。

これは、Barmanでバックアップすることを決定したすべてのサーバーに対してmake必要がある決定であることを忘れないでください。これは、同じインストール内で異種セットアップを使用できることを意味します。

前述したように、 PostgreSQLサーバー(pg)とBarmanサーバー(backup)についてのみ心配します。ただし、実際には、アーキテクチャにrepmgr、pgBouncer、Nagios / Icingaなどの他のテクノロジーが含まれている可能性があります。

シナリオ1:ストリーミングプロトコルを介したバックアップ

PostgreSQL 9.4以降を使用していて、データベースが一般的なユースケースシナリオに該当する場合、ストリーミングバックアップインストールを決定することになります。以下の図 ref {scenario1- デザイン}を参照してください。

このシナリオでは、以下を構成する必要があります。

1.管理、調整、モニタリングのためのPostgreSQLへの標準接続2。 pg_basebackup(ベースバックアップ操作用)とpg_receivewal(WALストリーミング用)の両方で使用されるストリーミングレプリケーション接続

Barmanの用語では、このセットアップは「ストリーミング専用」セットアップとして知られています。バックアップおよびアーカイビング操作にSSH接続を必要としないためです。これは、Docker環境に特に適しており、非常に実用的です。

ただし、前述のように、標準のアーカイビングを構成し、より堅牢なアーキテクチャを実装することもできます-以下の図 ref {scenario1b-design}を参照してください。

この代替アプローチには以下が必要です。

  • PostgreSQL上のpostgresユーザはバーマンサーバ上barmanユーザとして接続することができ、追加のSSH接続

  • PostgreSQLでarchive_commandはバーマンにWALファイルを出荷するように構成すること

このアーキテクチャは、テーブルスペースを使用しないPostgreSQL 9.2 / 9.3ユーザーも利用できます。

シナリオ2:rsync / SSHを介したバックアップ

SSHを介したrsyncの_traditional_セットアップは、次の場合にのみ使用可能なオプションです。

PostgreSQLサーバーバージョン8.3、8.4、9.0または9.1 - テーブルスペースを使用しているPostgreSQLサーバーバージョン9.2または9.3 - 増分バックアップ、並列バックアップ、重複排除 - バックアップ中のネットワーク圧縮 - テーブルスペースベースを含む、帯域幅使用のより詳細な制御

Scenario 2 - Backup via rsync/SSH

Scenario 2 - Backup via rsync/SSH

このシナリオでは、以下を構成する必要があります。

1.管理、調整、モニタリングを目的としたPostgreSQLへの標準接続2。バーマンサーバ上barmanユーザはPostgreSQLのサーバー3にpostgresユーザとして接続することができrsyncによって使用されるべきベースバックアップ操作のSSH接続。 WALのSSH接続のPostgreSQLでarchive_commandで使用されるアーカイビングかつ、PostgreSQL上のpostgresユーザはバーマンサーバ上barmanユーザとして接続することができ

PostgreSQL 9.2以降では、WALストリーミングに使用されるストリーミングレプリケーション接続を追加して、RPOを大幅に削減できます。このより堅牢な実装は、図 ref {scenario2b-design}に示されています。

<!- TODOリカバリ用のアーキテクチャに関するセクションを追加しますか? ->