通常、Pgpoolをバックエンドサーバーにインストールしません。写真に表示されているのは、最も一般的な構成です。Pgpoolは、基本的にデータベースの前に位置するスタンドアロンサーバーです。多くの場合、2つのPostgresサーバーはストリーミングレプリケーションで構成されています。1つはマスターで、もう1つはスレーブです。
これにより、Pgpoolは2つ(またはそれ以上)のデータベース間ですべての読み取りクエリの負荷を分散できます。書き込みを含むクエリは、マスターサーバーにルーティングされ、マスターサーバーがスレーブに複製されます。
以下のよう@Neilマクギガンは言った、あなたはまた、より良い高可用性を実現するために、複数のpgpoolのサーバを持つことができます。技術的には、この構成のデータベースサーバーにPgpoolをインストールできますが、これは悪い習慣です。複数のPgpoolサーバーの実行は、はるかに複雑な構成です。Pgpoolを使用するのが初めての場合は、2つ動作させる前に1つのPgpoolサーバーから始めます。
どちらの構成でも、アプリケーションサーバーは、単一のPostgresデータベースに接続していると見なします。
についてpgpool_regclass
、これは本当に別の質問になるはずですが、これはPgpool FAQからのものです:
PostgreSQL 8.0以降を使用している場合は、pgpool-IIが内部で使用するため、pgpool-regclass関数をpgpool-IIがアクセスするすべてのPostgreSQLにインストールすることを強くお勧めします。これがないと、異なるスキーマで重複するテーブル名を処理すると問題が発生する可能性があります(一時テーブルは問題ではありません)。
PostgreSQL 9.4.0以降およびpgpool-II 3.3.4以降、3.4.0以降を使用している場合、PostgreSQL 9.4には関数 "to_regclass"のようなpgpool_regclassが組み込まれているため、pgpool_regclassをインストールする必要はありません。
これが必要な場合は、Postgresマスターサーバー上で実行され、Pgpoolが使用する関数を追加するSQLコードの一部です。
regclassを使用すると、追加の手順を実行する必要があります(私はinsert_lockを考えていました)。ソースからコンパイルしている場合(一般に、ほとんどのディストリビューションはPgpoolのバージョンが本当に古い)、Postgresライブラリもコンパイルする必要があります。
ソースからコンパイルした場合は、.../pgpool-II-3.X.X/src/sql/pgpool-regclass
フォルダーに移動してを実行する必要があり./configure; make
ます。
pgpool-regclass.soファイルをPostgres拡張ディレクトリにコピーします。私のUbuntu 14.04サーバー(Postgres 9.3パッケージインストールを使用するだけ)では、次の場所にあります/usr/lib/postgresql/9.3/lib
。すべての Postgresサーバーに対してこれを行うことを忘れないでください。
それが完了するpgpool-regclass.sql
と、マスターで実行できます。これは、pgpool_regclass
関数をコピーしたライブラリにマップするだけです。