pgpool_setup creates a temporary installation of Pgpool-II cluster, which includes a Pgpool-II installation and specified number of PostgreSQL installations under current directory. Current directory must be empty before running pgpool_setup.
pgpool_setup is for testing purpose only and should not be used to create production installations.
Currently pgpool_setup supports streaming replication mode, native replication mode, raw mode and logical replication mode. To support watchdog, see watchdog_setup for details.
pgpool_setup accepts the following command-line arguments:
Specifies the running mode. mode can be r (native replication mode), s (streaming replication mode), n (raw mode), l (logical replication mode) or y (slony mode). If this is omitted, s is assumed.
Specifies the number of PostgreSQL installations. If this is omitted, 2 is used.
Specify the base port number used by Pgpool-II and PostgreSQL. Pgpool-II port is base_port. pcp port is base_port + 1. The first PostgreSQL node's port is base_port + 2, second PostgreSQL node's port is base_port + 3 and so on.
If -pg option is specified, the first PostgreSQL node's port is assigned to pg_base_port, the second PostgreSQL node's port is pg_base_port + 1 and so on.
If this is omitted, 11000 is used.
Specify the base port number used by PostgreSQL. The first PostgreSQL node's port is base_port + 2, second PostgreSQL node's port is base_port + 3 and so on.
If this is omitted, base_port+2 is used.
Do not stop pgpool and PostgreSQL after the work.
Start pgpool with debug mode.
In streaming replication mode, use replication slot instead of archive. Since the archive directory is shared by all PostgreSQL clusters, if a standby is promoted, the time line in the archive directory will be changed and other standby servers will be stopped. Using a replication slot does not have this problem and is always preferable if you can use PostgreSQL 9.4 or later, which supports replication slot. The replication slot name used by pgpool_setup is pgpool_setup_slot.
Use pg_rewind command in recovery script (basebackup.sh). If the command fails, switch to use ordinal rsync command. In certain cases recovery using pg_rewind is much faster than rsync since it does not copy whole database cluster.
pgpool_setup recognizes following environment variables:
Specifies the Pgpool-II installation directory. Pgpool-II binaries is expected to be placed under PGPOOL_INSTALL_DIR/bin and pgpool.conf and pool_hba.conf etc. are expected to be placed under PGPOOL_INSTALL_DIR/etc. The default is /usr/local.
Specifies the path to Pgpool-II configuration files. The default is PGPOOL_INSTALL_DIR/etc.
Specifies the path to PostgreSQL commands such as initdb, pg_ctl and psql. The default is /usr/local/pgsql/bin.
Specifies the path to PostgreSQL shared libraries. The default is /usr/local/pgsql/lib.
Specifies the path to Unix socket directory. The default is /tmp.
Specifies the arguments for initdb command. The default is "--no-locale -E UTF_8".
If "true", in streaming replication mode, use replication slot instead of archive. This brings the same effect as "-s" option is specified.
If "true", in streaming replication mode, use pg_rewind in basebackup.sh script. This brings the same effect as "-r" option is specified.
    $ 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)