<!-- doc.ja/src/sgml/installation.sgml -->

<chapter id="installation">
<!--
 <title>Installation of <productname>Pgpool-II</productname></title>
-->
 <title><productname>Pgpool-II</productname>のインストール</title>
 <indexterm zone="installation">
<!--
  <primary>installation</primary>
-->
  <primary>インストール</primary>
 </indexterm>

 <sect1 id="install-source">
<!--
  <title>Installation of Pgpool-II</title>
-->
  <title>Pgpool-IIのインストール</title>
   <para>
<!--
     This chapter describes the installation
     of <productname>Pgpool-II</productname>.  First, installation from
     source code distribution is explained. Then installation from RPM
     packages is explained.
-->
この章は<productname>Pgpool-II</productname>のインストールについて書かれています。
最初に、ソースコード配布物からのインストールについて説明します。
その後、RPMパッケージからのインストールについて説明します。
   </para>
 </sect1>

 <sect1 id="install-requirements">
<!--
  <title>Requirements</title>
-->
  <title>必要条件</title>

  <para>
<!--
   In general, a modern Unix-compatible platform should be able to run
   <productname>Pgpool-II</>. Windows is not supported.
-->
通常、最近のUnix互換プラットフォームならば<productname>Pgpool-II</>を動作させることができるはずです。
Windows はサポートされてません。
  </para>

  <para>
<!--
   The following software packages are required for building
   <productname>Pgpool-II</>:
-->
<productname>Pgpool-II</>を構築するには以下のソフトウェアパッケージが必要です。
   <itemizedlist>
    <listitem>
     <para>
      <indexterm>
       <primary>make</primary>
      </indexterm>

<!--
      <acronym>GNU</> <application>make</> version 3.80 or newer is required; other
      <application>make</> programs or older <acronym>GNU</> <application>make</> versions will <emphasis>not</> work.
      (<acronym>GNU</> <application>make</> is sometimes installed under
      the name <filename>gmake</filename>.)  To test for <acronym>GNU</acronym>
      <application>make</application> enter:
-->
<acronym>GNU</> <application>make</>のバージョン3.80以上が必要です。
他の<application>make</>や古い<acronym>GNU</> <application>make</>では<emphasis>動作しません</>。
(<acronym>GNU</> <application>make</>はときどき<filename>gmake</filename>という名前でインストールされます。)
<acronym>GNU</acronym> <application>make</>の試験を行うためには以下を実行してください。
<screen>
<userinput>make --version</userinput>
</screen>
     </para>
    </listitem>

    <listitem>
     <para>
<!--
      You need an <acronym>ISO</>/<acronym>ANSI</> C compiler (at least
      C89-compliant). Recent
      versions of <productname>GCC</> are recommended, but
      <productname>Pgpool-II</> is known to build using a wide variety
      of compilers from different vendors.
-->
<acronym>ISO</>/<acronym>ANSI</> Cコンパイラ（最低限C89-準拠）が必要です。
<productname>GCC</> の最近のバージョンをお勧めしますが、<productname>Pgpool-II</>は異なるベンダの、様々なコンパイラを使用して構築できることで知られています。
     </para>
    </listitem>

    <listitem>
     <para>
<!--
      <application>tar</> is required to unpack the source
      distribution, in addition to <application>gzip</>.
-->
配布物を展開するために、<application>tar</>および<application>gzip</>が必要です。
     </para>
    </listitem>

   </itemizedlist>
  </para>

  <para>
<!--
   If you are building from a <productname>Git</productname> tree instead of
   using a released source package, or if you want to do server development,
   you also need the following packages:
-->
リリースされたソースパッケージではなく<productname>Git</productname>ツリーからの構築の場合、またはサーバ開発を行いたい場合には、以下のパッケージも必要となります。 
  </para>

  <para>
   <itemizedlist>
    <listitem>
     <para>
      <indexterm>
       <primary>flex</primary>
      </indexterm>
      <indexterm>
       <primary>lex</primary>
      </indexterm>
      <indexterm>
       <primary>bison</primary>
      </indexterm>
      <indexterm>
       <primary>yacc</primary>
      </indexterm>

<!--
      GNU <application>Flex</> and <application>Bison</>
      are needed to build from a Git checkout, or if you changed the actual
      scanner and parser definition files. If you need them, be sure
      to get <application>Flex</> 2.5.31 or later and
      <application>Bison</> 1.875 or later. Other <application>lex</>
      and <application>yacc</> programs cannot be used.
-->
GNUの<application>Flex</>および<application>Bison</>は、Gitチェックアウトから構築する場合や、実際のスキャナとパーサの定義ファイルを変更した場合に必要となります。
それらが必要な場合は、<application>Flex</> 2.5.31以降と<application>Bison</> 1.875以降を使うようにしてください。
他の<application>lex</>と<application>yacc</>プログラムは使用できません。 
     </para>
    </listitem>

   </itemizedlist>
  </para>

  <para>
<!--
   If you need to get a <acronym>GNU</acronym> package, you can find
   it at your local <acronym>GNU</acronym> mirror site (see <ulink
   url="http://www.gnu.org/order/ftp.html"></>
   for a list) or at <ulink
   url="ftp://ftp.gnu.org/gnu/"></ulink>.
-->
<acronym>GNU</acronym>パッケージの入手が必要な場合、近くの<acronym>GNU</acronym>ミラーサイトから探してください（ミラーサイトの一覧は<ulink url="http://www.gnu.org/order/ftp.html"></>にあります）。
または、<ulink url="ftp://ftp.gnu.org/gnu/"></ulink>から探してください。 
  </para>

  <para>
<!--
   Also check that you have sufficient disk space. You will need about
   40 MB for the source tree during compilation and about 20 MB for
   the installation directory. If you are going to
   run the regression tests you will temporarily need up to an extra
   4 GB. Use the <command>df</command> command to check free disk
   space.
-->
また、十分なディスク領域があることも確認してください。
コンパイル中、ソースツリーのために40メガバイト、インストールディレクトリに20メガバイトほど必要となります。
リグレッションテストを実行する場合は、一時的に最大で4ギガバイトの領域がさらに必要になります。
ディスクの空き容量を確認するためには<command>df</command>コマンドを使います。 
  </para>
 </sect1>

 <sect1 id="install-getsource">
<!--  
  <title>Getting The Source</title>
-->
  <title>ソースの入手</title>

  <para>
<!--  
   The <productname>Pgpool-II</> &version; sources can be obtained
   from the download section of our
   website: <ulink url="http://www.pgpool.net"></ulink>.  You should
   get a file
   named <filename>pgpool-II-&version;.tar.gz</filename>. After you
   have obtained the file, unpack it:
-->
<productname>Pgpool-II</>のソースは、Webサイト<ulink url="http://www.pgpool.net"></ulink>のダウンロードページから入手することができます。
<filename>pgpool-II-&version;.tar.gz</filename>という名前のファイルを入手してください。
ファイルを入手したら、展開します。
<screen>
<userinput>tar xf pgpool-II-&version;.tar.gz</userinput>
</screen>
<!--  
   This will create a directory
   <filename>pgpool-II-&version;</filename> under the current directory
   with the <productname>Pgpool-II</> sources.
   Change into that directory for the rest
   of the installation procedure.
-->
これにより、カレントディレクトリ以下に<filename>pgpool-II-&version;</filename>というディレクトリが作成され、<productname>Pgpool-II</productname>のソースが展開されます。
この後のインストール手順を行うために、このディレクトリに移動してください。 
  </para>

 </sect1>

  <sect1 id="install-pgpool">
<!--  
    <title>Installing Pgpool-II</title>
-->
    <title>Pgpool-IIのインストール</title>
    <para>
<!--
      After extracting the source tarball, execute the <filename>configure</> script.
-->
ソースのtarballを展開したら、<filename>configure</>スクリプトを実行します。
<programlisting>
./configure
</programlisting>
    </para>

    <para>
<!--
    You can customize the build and installation process by supplying one
    or more of the following command line options to
    <filename>configure</filename>:
-->
<filename>configure</filename>に以下のコマンドラインオプションを1つ以上指定することで、構築処理やインストール処理を変更することができます。 
    </para>

    <variablelist>

      <varlistentry>
	<term><option>--prefix=path</option></term>
	<listitem>
      <para>
<!--
      Specifies the top directory where <productname>Pgpool-II</> binaries and related
      files like docs will be installed in. Default value is <filename>/usr/local</filename>.
-->
<productname>Pgpool-II</>バイナリやドキュメントなどの関連ファイルがインストールされるトップディレクトリを指定します。
デフォルトは<filename>/usr/local</filename>です。 
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><option>--with-pgsql=path</option></term>
	<listitem>
      <para>
<!--
      Specifies the top directory where <productname>PostgreSQL</>'s client libraries are
      installed. Default value is the path provided by <command>pg_config</command> command.
-->
<productname>PostgreSQL</>のクライアントライブラリなどがインストールされているトップディレクトリを指定します。
デフォルト値は<command>pg_config</command>コマンドで取得できるパスです。 
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><option>--with-openssl</option></term>
	<listitem>
          <para>
<!--
	   <productname>Pgpool-II</productname> binaries will be built
           with <productname>OpenSSL</productname>
           support.  <productname>OpenSSL</productname> support is
           disabled by default.
-->
<productname>Pgpool-II</productname>バイナリが<productname>OpenSSL</productname>サポート付で構築されます。
デフォルトでは<productname>OpenSSL</productname>サポートは無効です。
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><option>--enable-sequence-lock</option></term>
	<listitem>
          <para>
<!--
	    Use insert_lock compatible
            with <productname>Pgpool-II</productname> 3.0 series
            (until 3.0.4).  <productname>Pgpool-II</productname> locks
            against a row in the sequence
            table. <productname>PostgreSQL</productname> 8.2 or later
            which was released after June 2011 cannot use this lock
            method.
-->
<productname>Pgpool-II</productname> 3.0シリーズ (3.0.4まで) 互換の insert_lock を使用します。
<productname>Pgpool-II</productname>は、シーケンステーブルの行に対してロックを行います。
2011年06月より後にリリースされた<productname>PostgreSQL</productname> 8.2以降ではこのロック方式は使用できません。
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><option>--enable-table-lock</option></term>
	<listitem>
          <para>
<!--
	    Use insert_lock compatible
            with <productname>Pgpool-II</productname> 2.2 and 2.3
            series.  <productname>Pgpool-II</productname> locks
            against the insert target table.  This lock method is
            deprecated because it causes a lock conflict
            with <command>VACUUM</command>.
-->
<productname>Pgpool-II</productname> 2.2と2.3シリーズ互換のinsert_lockを使用します。
<productname>Pgpool-II</productname>は、挿入対象のテーブルに対してロックを行ないます。
このロック方式は<command>VACUUM</command>とロック競合するため非推奨です。
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><option>--with-memcached=path</option></term>
	<listitem>
          <para>
<!--
	    <productname>Pgpool-II</productname> binaries will use <productname>memcached</productname> for in
          memory query cache.  You have to
          install <ulink url="http://libmemcached.org/libMemcached.html">libmemcached</ulink>.
-->
<productname>Pgpool-II</productname>バイナリはインメモリクエリキャッシュのキャッシュストレージに<productname>memcached</productname>を利用します。
<ulink url="http://libmemcached.org/libMemcached.html">libMemcached</ulink>のインストールが必要です
	  </para>
	</listitem>
      </varlistentry>

    </variablelist>

    <para>
      <programlisting>
make
make install
      </programlisting>
<!--
      This will install <productname>Pgpool-II</>. (If you use <productname>Solaris</> or <productname>FreeBSD</>, replace make with gmake)
-->
これにより<productname>Pgpool-II</>がインストールされます。
（<productname>Soralis</>または<productname>FreeBSD</>を使用している場合は<command>make</>を<command>gmake</>で置き換えて下さい。）
    </para>

  </sect1>

  <sect1 id="install-pgpool-recovery">
<!--
    <title>Installing pgpool_recovery</title>
-->
    <title>pgpool_recoveryのインストール</title>
    <para>
<!--
      This is required in all <productname>Pgpool-II</productname>
      installation.
-->
これは全ての<productname>Pgpool-II</productname>のインストールで必要です。
      <programlisting>
$ cd pgpool-II-x.x.x/sql/pgpool-recovery
$ make
$ make install
      </programlisting>
<!--
After this:
-->
この後に以下か、
      <programlisting>
$ psql template1
=# CREATE EXTENSION pgpool_recovery;
      </programlisting>

<!--
      or
-->
または
      <programlisting>
$ psql -f pgpool-recovery.sql template1
      </programlisting>
を実行します。

    </para>

    <para>
<!--
      With <productname>Pgpool-II</productname> 3.3 or later, you need
      to tweak <filename>postgresql.conf</filename>.  Suppose the path
      to <command>pg_ctl</command>
      is <filename>/usr/local/pgsql/bin/pg_ctl</filename>. Then you
      add following to <filename>postgresql.conf</filename>.
-->
<productname>Pgpool-II</productname> 3.3 以降では、<filename>postgresql.conf</filename>を変更する必要があります。
<command>pg_ctl</command>へのパスが<filename>/usr/local/pgsql/bin/pg_ctl</filename>であるとします。
その場合、<filename>postgresql.conf</filename>に以下を追加してください。

      <programlisting>
pgpool.pg_ctl = '/usr/local/pgsql/bin/pg_ctl'
      </programlisting>

<!--
      Probably you want to execute following after this:
-->
もしかするとその後に以下を実行する必要があるかもしれません。
      <programlisting>
$ pg_ctl reload -D /usr/local/pgsql/data
      </programlisting>

    </para>
  </sect1>

  <sect1 id="install-pgpool-regclass">
<!--
    <title>Installing pgpool-regclass</title>
-->
    <title>pgpool-regclassのインストール</title>
    <para>
<!--
      If you are using <productname>PostgreSQL</productname> 9.4 or
      later, you can skip this section.
-->
<productname>PostgreSQL</productname> 9.4以降を使用している場合には、本節は飛ばすことができます。 
    </para>

    <para>
<!--
      If you are using <productname>PostgreSQL</productname> 8.0
      to <productname>PostgreSQL</productname> 9.3, installing
      <function>pgpool_regclass</function> function on
      all <productname>PostgreSQL</productname> to be accessed by
      <productname>Pgpool-II</productname> is strongly recommended, as
      it is used internally by <productname>Pgpool-II</productname>.
      Without this, handling of duplicate table names in different
      schema might cause trouble (temporary tables aren't a problem).
      If you are using <productname>PostgreSQL</productname> 9.4 or
      later, installing <function>pgpool_regclass</function> is not
      necessary since an equivalent (<function>to_regclass</function>)
      is included in the <productname>PostgreSQL</productname> core.
-->
<productname>PostgreSQL</productname> 8.0から<productname>PostgreSQL</productname> 9.3までを使用している場合は、<productname>Pgpool-II</productname> がアクセスする全ての<productname>PostgreSQL</productname>において<function>pgpool_regclass</function> 関数をインストールすることを強く推奨します。
<productname>Pgpool-II</productname>から内部的に使用されるからです。
これがないと、異なるスキーマの間で重複するテーブル名を扱う際の不具合の原因となります。
（一時テーブルの場合は問題となりません。）
<productname>PostgreSQL</productname> 9.4以降を使用している場合は、同等の関数(<function>to_regclass</function>)が<productname>PostgreSQL</productname>に含まれているため、<function>pgpool_regclass</function>のインストールは必要ありません。
    </para>

    <para>
      <programlisting>
$ cd pgpool-II-x.x.x/sql/pgpool-regclass
$ make
$ make install
      </programlisting>
<!--
      After this:
-->
この後に以下か、

      <programlisting>
$ psql template1
=# CREATE EXTENSION pgpool_regclass;
      </programlisting>

<!--
or 
-->
または

      <programlisting>
$ psql -f pgpool-regclass.sql template1
      </programlisting>

を実行します。

<!--
      Executing <command>CREATE EXTENSION</command>
      or <filename>pgpool-regclass.sql</filename> should be performed
      on every databases accessed
      via <productname>Pgpool-II</productname>.  However, you do not need to
      do this for a database created after the execution of
      <command>CREATE EXTENSION</command> or
      <command>psql -f pgpool-regclass.sql template1</command>,
	  as this template database will be cloned to create new databases.
-->
<command>CREATE EXTENSION</command>または<filename>pgpool-regclass.sql</filename>の実行は、<productname>Pgpool-II</productname>経由でアクセスされる全てのデータベースで実行しなければなりません。
ただし、<command>CREATE EXTENSINO</command>または"psql -f pgpool-regclass.sql template1"の実行後に作成されたデータベースでは、新しいデータベース作成のためにテンプレートデータベースが複製されるため、これを実行する必要はありません。 
    </para>

  </sect1>

  <sect1 id="create-installlock-table">
<!--
    <title>Creating insert_lock table</title>
-->
    <title>insert_lockテーブルの作成</title>

    <para>
<!--
      If you are not going to use the native replication mode, you can skip this section.
-->
ネイティブレプリケーションモードを使う予定のない場合は、本説は飛ばすことができます。
    </para>

    <para>
<!--
      If you plan to use native replication mode and insert_lock,
      creating <structname>pgpool_catalog.insert_lock</structname>
      table for mutual exclusion is strongly recommended.  Without
      this, insert_lock works so far. However in that
      case <productname>Pgpool-II</productname> locks against the
      insert target table. This behavior is same
      as <productname>Pgpool-II</productname> 2.2 and 2.3 series. The
      table lock conflicts with <command>VACUUM</command>, so <command>INSERT</command>
      processing may be thereby kept waiting for a long time.
-->
ネイティブレプリケーションモードでinsert_lockを利用したい場合は、排他制御用のテーブル<structname>pgpool_catalog.insert_lock</structname>を作成することを強く推奨します。
これがなくてもある程度はinsert_lock は動作します。
しかしその場合は、<productname>Pgpool-II</productname>は挿入対象のテーブルに対してロックを行います。
これは<productname>Pgpool-II</productname> 2.2と2.3 シリーズの動作と同じです。
このテーブルに対するロックは、<command>VACUUM</command>と競合するため、<command>INSERT</command>処理が長時間が待たされ続ける可能性があります。

      <programlisting>
	$ cd pgpool-II-x.x.x/sql
	$ psql -f insert_lock.sql template1
      </programlisting>

    </para>

    <para>
<!--
      Executing <filename>insert_lock.sql</filename> should be
      performed on every databases accessed
      via <productname>Pgpool-II</productname>.  You do not need to
      do this for a database created after the execution of
      <command>psql -f insert_lock.sql template1</command>, as this
      template database will be cloned to create new databases.
-->
<filename>insert_lock.sql</filename>は、pgpool-II経由で利用するデータベース毎に必要になります。
ただし、"psql -f insert_lock.sql template1"の実行後に作成されたデータベースでは、新しいデータベース作成のためにテンプレートデータベースが複製されるため、これを実行する必要はありません。 
    </para>
  </sect1>

  <sect1 id="setting-up-pgpool-conf">
<!--
    <title>Setting up pgpool.conf</title>
-->
    <title>pgpool.confの設定</title>

    <para>
<!--
      For each <productname>Pgpool-II</productname> operation mode,
      there are sample configurations.
-->
各<productname>Pgpool-II</productname>の動作モードについて設定のサンプルがあります。

    </para>

    <table id="pgpool-conf-samples-table">
<!--
     <title>pgpool.conf samples</title>
-->
     <title>pgpool.confのサンプル</title>

     <tgroup cols="2">
      <thead>
       <row>
<!--
        <entry>Operation mode</entry>
        <entry>Configuration file name</entry>
-->
        <entry>動作モード</entry>
        <entry>設定ファイル名</entry>
       </row>
      </thead>

      <tbody>
       <row>
<!--
        <entry>Streaming replication mode</entry>
-->
        <entry>ストリーミングレプリケーションモード</entry>
	<entry><literal>pgpool.conf.sample-stream</literal></entry>
       </row>
       <row>
<!--
        <entry>Replication mode</entry>
-->
        <entry>レプリケーションモード</entry>
	<entry><literal>pgpool.conf.sample-replication</literal></entry>
       </row>
       <row>
<!--
        <entry>Master slave mode</entry>
-->
        <entry>マスタースレーブモード</entry>
	<entry><literal>pgpool.conf.sample-master-slave</literal></entry>
       </row>
       <row>
<!--
        <entry>Raw mode</entry>
-->
        <entry>Rawモード</entry>
	<entry><literal>pgpool.conf.sample</literal> </entry>
       </row>
      </tbody>
     </tgroup>
    </table>

    <para>
<!--	
      These configuration files are located at /usr/local/etc with
      default installation from source code.
      You can copy one of them as <filename>pgpool.conf</filename>.
      (probably you need root privilege for this)
-->
これらの設定ファイルはデフォルトのソースコードからのインストールでは/usr/local/etcに配置されています。
これらを<filename>pgpool.conf</filename>としてコピーして使うことが可能です。
（もしかするとそのためにはroot権限が必要かもしれません。）
      <programlisting>
# cd /usr/local/etc
# cp pgpool.conf.sample-stream pgpool.conf
      </programlisting>
    </para>
  </sect1>

&installation-rpm;

</chapter>
