pgpool_setup はカレントディレクトリで Pgpool-II とノード数が指定できる複数の PostgreSQL のクラスタテスト環境を構築するツールです。 カレントディレクトリは空である必要があります。
pgpool_setup はテストのために使うツールなので、 実際の業務システムで利用することはおすすめしません。
現在、「ストリーミングレプリケーションモード」、「ネイティブレプリケーションモード」、「raw モード」及び「ロジカルレプリケーションモード」に対応しています。 Watchdog の対応については watchdog_setup をご参照下さい。
pgpool_setup は以下のコマンドライン引数を受け付けます:
動作モードを指定します。modeは r (ネイティブレプリケーションモード), s (ストリーミングレプリケーションモード)、n (raw モード)、l (ロジカルレプリケーションモード)またはl(slonyモード)を指定できます。 指定しない場合は、s (ストリーミングレプリケーションモード) を指定した見なされます。
PostgreSQL のノード数を指定します。指定しない場合は、ノード数が 2 です。
ベースとなるポート番号を指定します。 Pgpool-II のポートは base_port、pcp のポートは base_port + 1、 最初の PostgreSQL ノードのポートは base_port + 2、 2 番目の PostgreSQL ノードのポートは base_port + 3 というようになります。
-pg オプションを指定した場合、 最初の PostgreSQL ノードのポートは pg_base_port、 2 番目の PostgreSQL ノードのポートは pg_base_port + 1 というように割り当てていきます。
指定しない場合、ベースとなるポート番号は 11000 です。
PostgreSQL のベースとなるポート番号を指定します。 最初の PostgreSQL ノードのポートは pg_base_port、 2 番目の PostgreSQL ノードのポートは pg_base_port + 1 というようになります。
省略した場合は、 base_port+2 が使われます。
セットアップ終了後に Pgpool-II, PostgreSQL を終了しません。
デバッグモードで Pgpool-II を起動します。
ストリーミングレプリケーションモードの時に、アーカイブの代わりにレプリケーションスロットを使います。 アーカイブディレクトリはPostgreSQLクラスタに共有されているので、スタンバイが昇格すると、アーカイアブディレクトリ内のタイムラインが変わり、他のスタンバイが停止してしまいます。 レプリケーションスロットを使うとこの問題が起きないので、レプリケーションスロットをサポートしているPostgreSQL 9.4以降が使えるのであれば、常にレプリケーションスロットを使うのが常にお勧めです。 pgpool_setupが使うレプリケーションスロット名は、pgpool_setup_slotです。
リカバリスクリプト(basebackup.sh)中でpg_rewindを使います。 このコマンドが失敗すると、通常のrsyncを使います。 pg_rewindは、データベースクラスタのすべてをコピーしないので、rsyncに比べてずっと高速になることがあります。
pgpool_setup は以下の環境変数を使用します:
Pgpool-II のインストールディレクトリを指定します。 Pgpool-II バイナリーは PGPOOL_INSTALL_DIR/bin ディレクトリ以下、 pgpool.conf と pool_hba.conf などは PGPOOL_INSTALL_DIR/etc ディレクトリ以下にインストールされます。 デフォルトでは /usr/local ディレクトリ以下にインストールされます。
Pgpool-II 設定ファイルへのパスを指定します。 デフォルトでは PGPOOL_INSTALL_DIR/etc です。
initdb、pg_ctl と psql など PostgreSQL コマンドへのパスを指定します。 デフォルトでは、/usr/local/pgsql/bin です。
PostgreSQL の共有ライブラリへのパスを指定します。 デフォルトでは、/usr/local/pgsql/lib です。
Unixソケットのディレクトリへのパスを指定します。 デフォルトでは /tmp です。
initdb コマンドの引数を指定します。 デフォルトでは "--no-locale -E UTF_8" です。
ストリーミングレプリケーション環境において、この環境変数が"true"に指定されると、アーカイブログの代わりにレプリケーションスロットを使います。 これは、"-s"オプションを使ったのと同じ効果をもたらします。
ストリーミングレプリケーション環境において、この環境変数が"true"に指定されると、basebackup.sh中でpg_rewindを使います。 これは、"-r"オプションを使ったのと同じ効果をもたらします。
$ pgpool_setup Starting set up in streaming replication mode creating startall and shutdownall creating failover script creating database cluster /home/t-ishii/tmp/test/data0...done. update postgresql.conf creating pgpool_remote_start creating basebackup.sh creating recovery.conf creating database cluster /home/t-ishii/tmp/test/data1...done. update postgresql.conf creating pgpool_remote_start creating basebackup.sh creating recovery.conf temporarily start data0 cluster to create extensions temporarily start pgpool-II to create standby nodes INFO: unrecognized configuration parameter "debug_level" node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay ---------+----------+-------+--------+-----------+---------+------------+-------------------+------------------- 0 | /tmp | 11002 | up | 0.500000 | primary | 0 | true | 0 1 | /tmp | 11003 | down | 0.500000 | standby | 0 | false | 0 (2 rows) recovery node 1...pcp_recovery_node -- Command Successful done. creating follow master script Pager usage is off. node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay ---------+----------+-------+--------+-----------+---------+------------+-------------------+------------------- 0 | /tmp | 11002 | up | 0.500000 | primary | 0 | false | 0 1 | /tmp | 11003 | up | 0.500000 | standby | 0 | true | 0 (2 rows) shutdown all pgpool-II setting for streaming replication mode is done. To start the whole system, use /home/t-ishii/tmp/test/startall. To shutdown the whole system, use /home/t-ishii/tmp/test/shutdownall. pcp command user name is "t-ishii", password is "t-ishii". Each PostgreSQL, pgpool-II and pcp port is as follows: #1 port is 11002 #2 port is 11003 pgpool port is 11000 pcp port is 11001 The info above is in README.port. $ ls README.port bashrc.ports data1 log pgpool_reload run startall archivedir data0 etc pcppass pgpool_setup.log shutdownall $ ./startall waiting for server to start....11840 2016-08-18 13:08:51 JST LOG: redirecting log output to logging collector process 11840 2016-08-18 13:08:51 JST HINT: Future log output will appear in directory "pg_log". done server started waiting for server to start....11853 2016-08-18 13:08:52 JST LOG: redirecting log output to logging collector process 11853 2016-08-18 13:08:52 JST HINT: Future log output will appear in directory "pg_log". done server started $ psql -p 11000 test Pager usage is off. psql (9.5.4) Type "help" for help. test=# show pool_nodes; node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay ---------+----------+-------+--------+-----------+---------+------------+-------------------+------------------- 0 | /tmp | 11002 | up | 0.500000 | primary | 0 | false | 0 1 | /tmp | 11003 | up | 0.500000 | standby | 0 | true | 0 (2 rows)