<!--
doc/src/sgml/ref/pgpool_setup.sgml
Pgpool-II documentation
-->

<refentry id="PGPOOL-SETUP">
 <indexterm zone="pgpool-setup">
  <primary>pgpool_setup</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>pgpool_setup</refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo>Other Commands</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>pgpool_setup</refname>
  <refpurpose>
  <!--
  Create a temporary installation of Pgpool-II cluster</refpurpose>
  -->
  <productname>Pgpool-II</productname> クラスタのテスト環境を構築するツール</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
  <cmdsynopsis>
   <command>pgpool_setup</command>
   <arg rep="repeat"><replaceable>option</replaceable></arg>
  </cmdsynopsis>
 </refsynopsisdiv>

 <refsect1 id="R1-PGPOOL-SETUP-1">
 <!--
  <title>Description</title>
  -->
  <title>説明</title>
  <para>
  <application>pgpool_setup</application>
  <!--
  creates a temporary
  installation of <productname>Pgpool-II</productname> cluster, which
  includes a <productname>Pgpool-II</productname> installation and
  specified number of <productname>PostgreSQL</productname>
  installations under current directory.
  Current directory must be empty before running <application>pgpool_setup</application>.
  -->
  はカレントディレクトリで <productname>Pgpool-II</productname>
  とノード数が指定できる複数の <productname>PostgreSQL</productname>
  のクラスタテスト環境を構築するツールです。
  カレントディレクトリは空である必要があります。
  </para>
  <para>
  <!--
    <application>pgpool_setup</application> is for testing purpose
    only and should not be used to create production installations.
    -->
    <application>pgpool_setup</application> はテストのために使うツールなので、
    実際の業務システムで利用することはおすすめしません。
  </para>

  <para>
  <!--
    Currently <application>pgpool_setup</application> supports streaming replication mode, native replication mode and raw mode.
    Watchdog is not supported yet.
    -->
    現在、「ストリーミングレプリケーションモード」、「ネイティブレプリケーションモード」及び「raw モード」に対応しています。
    Watchdog  の対応については  <xref linkend="WATCHDOG-SETUP"> をご参照下さい。
  </para>
 </refsect1>

 <refsect1>
 <!--
  <title>Options</title>
  -->
  <title>オプション</title>
   <para>
   <!--
    <application>pgpool_setup</application> accepts the following command-line arguments:
    -->
    <application>pgpool_setup</application> 以下のコマンドライン引数を受け付けます:

    <variablelist>

     <varlistentry>
      <term><option>-m <replaceable class="parameter">mode</replaceable></option></term>
      <listitem>
       <para>
       <!--
        Specifies the running mode.  <replaceable>mode</replaceable>
        can be <literal>r</literal> (native replication mode), <literal>s</literal> (streaming replication mode), or
        <literal>n</literal> (raw mode).
	    If this is omitted, <literal>s</literal> is used.
        -->
        動作モードを指定します。<replaceable>mode</replaceable>は
        <literal>r</literal> (ネイティブレプリケーションモード), <literal>s</literal> (ストリーミングレプリケーションモード)、または
        <literal>n</literal> (raw モード)を指定できます。
        指定しない場合は、<literal>s</literal> (ストリーミングレプリケーションモード) です。
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-n <replaceable class="parameter">num_clusters</replaceable></option></term>
      <listitem>
       <para>
       <!--
        Specifies the number of PostgreSQL installations.
	    If this is omitted, <literal>2</literal> is used.
        -->
        PostgreSQL のノード数を指定します。指定しない場合は、ノード数が 2 です。
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-p <replaceable class="parameter">base_port</replaceable></option></term>
      <listitem>
       <para>
       <!--
         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.
         ベースとなるポート番号を指定します。
         -->
         ベースとなるポート番号を指定します。
         Pgpool-II のポートは base_port、pcp のポートは base_port + 1、
         最初の PostgreSQL ノードのポートは base_port + 2、
         2 番目の PostgreSQL ノードのポートは base_port + 3 というようになります。
       </para>
       <para>
       <!--
         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.
         -->
         -pg オプションを指定した場合、 最初の PostgreSQL ノードのポートは pg_base_port、
         2 番目の PostgreSQL ノードのポートは pg_base_port + 1 というように割り当てていきます。

       </para>
       <para>
       <!--
	    If this is omitted, <literal>11000</literal> is used.
        -->
        指定しない場合、ベースとなるポート番号は 11000 です。
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-pg <replaceable class="parameter">pg_base_port</replaceable></option></term>
      <listitem>
       <para>
       <!--
         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.
         -->
         PostgreSQL のベースとなるポート番号を指定します。
         最初の PostgreSQL ノードのポートは base_port + 2、
         2 番目の PostgreSQL ノードのポートは base_port + 3 というようになります。
       </para>
       <para>
       <!--
        If this is omitted, <literal>base_port</literal>+2 is used.
        -->
        省略した場合は、 <literal>base_port</literal>+2 が使われます。
       </para>

      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>--no-stop</option></term>
      <listitem>
       <para>
       <!--
	    Do not stop pgpool and PostgreSQL after the work.
        -->
        セットアップ終了後に <productname>Pgpool-II</productname>, PostgreSQL を終了しません。
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-d</option></term>
      <listitem>
       <para>
       <!--
	    Start pgpool with debug mode.
        -->
        デバッグモードで <productname>Pgpool-II</productname> を起動します。
       </para>
      </listitem>
     </varlistentry>
    </variablelist>
   </para>
 </refsect1>

 <refsect1>
 <!--
  <title>Environment variables</title>
  -->
  <title>環境変数</title>
   <para>
   <!--
    <application>pgpool_setup</application> recognizes following environment variables:
    -->
    <application>pgpool_setup</application> 以下の環境変数を使用します:

    <variablelist>

     <varlistentry>
      <term><option>PGPOOL_INSTALL_DIR</option></term>
      <listitem>
       <para>
       <!--
        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.
        -->
        <productname>Pgpool-II</productname> のインストールディレクトリを指定します。
        <productname>Pgpool-II</productname> バイナリーは PGPOOL_INSTALL_DIR/bin ディレクトリ以下、
        <filename>pgpool.conf</filename> と <filename>pool_hba.conf</filename>
        などは PGPOOL_INSTALL_DIR/etc ディレクトリ以にインストールされます。
        デフォルトでは /usr/local ディレクトリ以下にインストールされます。
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>PGPOOLDIR</option></term>
      <listitem>
       <para>
       <!--
        Specifies the path to Pgpool-II configuration files.
        The default is PGPOOL_INSTALL_DIR/etc.
        -->
        <productname>Pgpool-II</productname> 設定ファイルへのパスを指定します。
        デフォルトでは PGPOOL_INSTALL_DIR/etc です。
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>PGBIN</option></term>
      <listitem>
       <para>
       <!--
        Specifies the path to PostgreSQL commands such as initdb, pg_ctl and psql.
        The default is /usr/local/pgsql/bin.
        -->
        initdb、pg_ctl と psql など <productname>PostgreSQL</productname> コマンドへのパスを指定します。
        デフォルトでは、/usr/local/pgsql/bin です。
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>PGLIB</option></term>
      <listitem>
       <para>
       <!--
        Specifies the path to PostgreSQL shared libraries.
        The default is /usr/local/pgsql/lib.
        -->
        <productname>PostgreSQL</productname> の共有ライブラリへのパスを指定します。
        デフォルトでは、/usr/local/pgsql/lib です。
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>PGSOCKET_DIR</option></term>
      <listitem>
       <para>
       <!--
        Specifies the path to Unix socket directory.
        The default is /tmp.
        -->
        Unixソケットのディレクトリへのパスを指定します。
        デフォルトでは /tmp です。
       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><option>INITDBARG</option></term>
      <listitem>
       <para>
       <!--
	    Specifies the arguments for initdb command.
        The default is "no-locale -E UTF_8".
        -->
        initdb コマンドの引数を指定します。
        デフォルトでは "--no-locale -E UTF_8" です。
       </para>
      </listitem>
     </varlistentry>

    </variablelist>

   </para>
 </refsect1>

 <refsect1>
 <!--
  <title>Example</title>
  -->
  <title>出力例</title>
   <para>
<screen>
$ pgpool_setup
Satrting set up in streaming replication mode
creating startall and shutdownall
creating failover script
creating database cluster /home/t-ishii/tmp/test/data0...done.
update postgreql.conf
creating pgpool_remote_start
creating basebackup.sh
creating recovery.conf
creating database cluster /home/t-ishii/tmp/test/data1...done.
update postgreql.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)

</screen>
</para>
 </refsect1>

</refentry>
