<!-- doc/src/sgml/runtime.sgml -->

<chapter id="runtime">
<!--
 <title>Server Setup and Operation</title>
-->
 <title>サーバの準備と運用</title>

 <para>
<!--
  This chapter discusses how to set up and run the <productname>Pgpool-II</> server
  and its interactions with the operating system.
-->
本章では、<productname>Pgpool-II</>サーバの設定と実行方法、そしてオペレーティングシステムとの相互作用について説明します。 
 </para>

 <sect1 id="pgpool-II-user">
<!--
  <title>The <productname>Pgpool-II</productname> User Account</title>
-->
  <title><productname>Pgpool-II</productname>ユーザアカウント</title>

  <indexterm>
<!--
   <primary>Pgpool-II user</primary>
-->
   <primary>Pgpool-IIユーザ</primary>
  </indexterm>

  <para>
<!--
   As with any server daemon that is accessible to the outside world,
   it is advisable to run <productname>Pgpool-II</productname> under a
   separate user account. This user account should only own the data
   that is managed by the server, and should not be shared with other
   daemons. (For example, using the user <literal>nobody</literal> is a bad
   idea.) It is not advisable to install executables owned by this
   user because compromised systems could then modify their own
   binaries.
-->
外部へアクセスできるサーバデーモンと同じように、<productname>Pgpool-II</productname>を独立したユーザアカウントで実行することをお勧めします。
このユーザアカウントは、サーバによって管理されるデータのみを所有する必要があります。
また、他のデーモンとアカウントを共有しない方が良いです。
（例えば、<literal>nobody</literal>ユーザの使用はお勧めできません。）
このユーザによって所有される実行プログラムをインストールすることも好ましくありません。
システムが攻撃を受けた場合などに、自分自身のバイナリを変更されてしまう可能性があるからです。 
  </para>

  <para>
<!--
   To add a Unix user account to your system, look for a command
   <command>useradd</command> or <command>adduser</command>. The user
   name <systemitem>pgpool</systemitem> is often used, and is assumed
   throughout this book, but you can use another name if you like.
-->
システムにUnixのユーザアカウントを追加するためには、コマンド<command>useradd</command>か<command>adduser</command>を使用してください。
<systemitem>pgpool</systemitem>というユーザ名がよく使われ、本書全体でも使用していますが、好みの名前を使用しても構いません。
  </para>
 </sect1>

 <sect1 id="configuring-pcp-conf">
<!--
  <title>Configuring pcp.conf</title>
-->
  <title>pcp.confの設定</title>

  <indexterm>
<!--
   <primary>pcp configuration</primary>
-->
   <primary>pcpの設定</primary>
  </indexterm>

  <para>
<!--
    <productname>Pgpool-II</productname> provides a interface
    for administrators to perform management operation, such as
    getting <productname>Pgpool-II</productname> status or terminating
    <productname>Pgpool-II</productname> processes
    remotely. <filename>pcp.conf</filename> is the user/password file
    used for authentication by this interface. All operation modes
    require the <filename>pcp.conf</filename> file to be set. A
    <filename>$prefix/etc/pcp.conf.sample</filename> file is created
    during the installation
    of <productname>Pgpool-II</productname>. Copy the file as 
    <filename>$prefix/etc/pcp.conf</filename> and add your user name and password
    to it.
-->
<productname>Pgpool-II</productname>は管理者が<productname>Pgpool-II</productname>のステータス取得や、リモートからの<productname>Pgpool-II</productname>プロセスの停止といった、管理操作を行うためのインターフェイスを提供しています。
<filename>pcp.conf</filename>はこのインタフェースの認証に使われるユーザ/パスワードのファイルです。
全ての動作モードにおいて<filename>pcp.conf</filename>の設定が必要です。
<productname>Pgpool-II</productname>のインストール中に<filename>$prefix/etc/pcp.conf.sample</filename>が作られます。
そのファイルを<filename>$prefix/etc/pcp.conf</filename>という名前でコピーしてユーザ名とパスワードを追加してください。

	  <screen>
<prompt>$</> <userinput>cp $prefix/etc/pcp.conf.sample $prefix/etc/pcp.conf</userinput>
	  </screen>

<!--
      An empty line or a line starting with <literal>#</literal> is treated as a
      comment and will be ignored. A user name and its associated
      password must be written as one line using the following format:
-->
空白行や<literal>#</literal>で始まる行はコメントと見なされ無視されます。
ユーザ名とそれに対応するパスワードは以下の形式を使って１行で書かれなくてはなりません。 

	  <synopsis>
<!--
<replaceable>username</>:<replaceable>[md5 encrypted password]</>
-->
<replaceable>ユーザ名</>:<replaceable>[md5暗号化されたパスワード]</>
	  </synopsis>

<!--
<replaceable>[md5 encrypted password]</> can be produced with the <filename>$prefix/bin/pg_md5</> command.
-->
<replaceable>[md5暗号化されたパスワード]</>は、<filename>$prefix/bin/pg_md5</filename>コマンドで作成できます。 

      <screen>
<prompt>$</> <userinput>pg_md5 your_password</userinput>
1060b7b46a3bd36b3a0d66e0127d0517
      </screen>

<!--
If you don't want pass the password as the argument, execute <command>pg_md5 -p</command>.
-->
 パスワードを引数に渡したくない場合は<command>pg_md5 -p</command>を実行してください。 

      <screen>
<prompt>$</> <userinput>pg_md5 -p</userinput>
password: <userinput>your_password</userinput>
      </screen>

<!--
      The <filename>pcp.conf</filename> file must be readable by the
      user who executes <productname>Pgpool-II</productname>.
-->
<filename>pcp.conf</filename>は、<productname>Pgpool-II</productname>を実行するユーザから読み取り可能になっていなければなりません。 
  </para>

 </sect1>

 <sect1 id="configuring-pgpool">
<!--
  <title>Configuring Pgpool-II</title>
-->
  <title>Pgpool-IIの設定</title>

  <indexterm>
<!--
   <primary>Pgpool-II configuration</primary>
-->
   <primary>Pgpool-IIの設定</primary>
  </indexterm>

  <sect2 id="configuring-pgpool-conf">
<!--
    <title>Configuring pgpool.conf</title>
-->
    <title>pgpool.confの設定</title>

    <para>
<!--
      <filename>pgpool.conf</filename> is the main configuration file
      of <productname>Pgpool-II</productname>. You need to specify the
      path to the file when
      starting <productname>Pgpool-II</productname>
      using <option>-f</option> option.
      <filename>pgpool.conf</filename> is located
      at <filename>$prefix/etc/pgpool.conf</filename> by default.
-->
<filename>pgpool.conf</filename>は<productname>Pgpool-II</productname>のメインの設定ファイルです。
<productname>Pgpool-II</productname>の起動時には<option>-f</option>オプションでこのファイルのパスを指定する必要があります。
デフォルトでは<filename>pgpool.conf</filename>は<filename>$prefix/etc/pgpool.conf</filename>に配置されます。
    </para>
  </sect2>

  <sect2 id="running-mode">
<!--
    <title>Running mode of Pgpool-II</title>
-->
    <title> Pgpool-IIの動作モード</title>

    <para>
<!--
      There are four different running modes in <productname>Pgpool-II</>: streaming
      replication mode, master slave mode, native replication mode and
      raw mode. In any mode, <productname>Pgpool-II</> provides connection pooling,
      automatic fail over and online recovery. The sample configuration
      files for each mode are provied. They are located
      under <filename>$prefix/etc</filename>. You can copy one of them
      to <filename>$prefix/etc/pgpool.conf</filename>.
-->
<productname>Pgpool-II</>にはストリーミングレプリケーションモード、マスタースレーブモード、ネイティブレプリケーションモード、rawモードの4つの動作モードがあります。
いずれのモードにおいても、<productname>Pgpool-II</>はコネクションプーリング、自動フェイルオーバ、オンラインリカバリの機能を提供します。
各モードのためのサンプルの設定ファイルが提供されています。
これらは<filename>$prefix/etc/</filename>以下に配置されており、<filename>$prefix/etc/pgpool.conf</filename>としてコピーして使用することができます。
    </para>

    <para>
<!--
      Those modes are exclusive each other and cannot be changed after
      starting the server. You should make a decision which to use in
      the early stage of designing the system. If you are not sure, it
      is recommended to use the streaming replication mode.
-->
これらのモードは互いに排他的であり、サーバ起動後は変更することができません。
システム設計の初期の段階でどのモードを使うか決めなければなりません。
どれを使えばわからない場合は、ストリーミングレプリケーションモードを使うことを推奨します。
    </para>

    <para>
<!--
      The streaming replication mode can be used with <productname>PostgreSQL</> servers
      operating streaming replication. In this mode, <productname>PostgreSQL</> is
      responsible for synchronizing databases. This mode is widely used
      and most recommended way to use <productname>Pgpool-II</>. Load balancing is
      possible in the mode.  The sample configuration file
      is <filename>$prefix/etc/pgpool.conf.sample-stream</filename>.
-->
ストリーミングレプリケーションモードはストリーミングレプリケーションを使用する<productname>PostgreSQL</>サーバと一緒に使うことができます。
このモードでは、<productname>PostgreSQL</>がデータベースを同期する責任を持ちます。
このモードは広く使われており、最も推奨される<productname>Pgpool-II</>の使用法です。
このモードでは負荷分散が可能です。
サンプルの設定ファイルは<filename>$prefix/etc/pgpool.conf.sample-stream</filename>です。
    </para>

    <para>
<!--
      The master slave mode mode can be used with <productname>PostgreSQL</> servers
      operating <productname>Slony</>. In this mode, <productname>Slony</>/<productname>PostgreSQL</> is responsible for
      synchronizing databases. Since <productname>Slony</> is being obsoletd by streaming
      replication, we do not recommend to use this mode unless you have
      specific reason to use <productname>Slony</>. Load balancing is possible in the
      mode. The sample configuration file
      is <filename>$prefix/etc/pgpool.conf.sample-master-slave</filename>.
-->
マスタスレーブモードは<productname>Slony</>を使用する<productname>PostgreSQL</>サーバと一緒に使うことができます。
このモードでは、<productname>Slony</>/<productname>PostgreSQL</>がデータベースを同期する責任を持ちます。
<productname>Slony</>はストリーミングレプリケーションの登場により廃れつつあるため、<productname>Slony</>を使う特別な理由が無い限りこのモードの使用を推奨しません。
このモードでは負荷分散が可能です。
サンプルの設定ファイルは<filename>$prefix/etc/pgpool.conf.sample-master-slave</filename>です。
    </para>

    <para>
<!--
      In the native replication mode, <productname>Pgpool-II</> is responsible for
      synchronizing databases. The advantage for the mode is the
      synchronization is done in synchronous way: writing to the
      database does not return until all of <productname>PostgreSQL</> servers finish
      the write operation. Note, however, read snapshot control is not
      done and consistent visibility is not guaranteed in the mode.
      Load balancing is possible in the mode. The sample configuration
      file <filename>$prefix/etc/pgpool.conf.sample-replication</filename>.
-->
ネイティブレプリケーションモードでは、<productname>Pgpool-II</>がデータベースを同期する責任を持ちます。
このモードの利点は同期が同期的に行われることです。
すなわち、データベースへの書き込みは全ての<productname>PostgreSQL</>サーバが書き込み操作を完了するまでに返ってきません。
ただし、読み込みスナップショットの制御は行われていないため、このモードでは一貫性のある可視性は保証されていないことに注意してください。
このモードでは負荷分散が可能です。
サンプルの設定ファイルは<filename>$prefix/etc/pgpool.conf.sample-replication</filename>です。
    </para>

    <para>
<!--
      In the raw mode, <productname>Pgpool-II</> does not care about the database
      synchronization. It's user's responsibility to make the whole
      system does a meaningfull thing. Load balancing
      is <emphasis>not</emphasis> possible in the mode. The sample
      configuration
      file <filename>$prefix/etc/pgpool.conf.sample</filename>.
-->
rawモードでは、<productname>Pgpool-II</>はデータベースの同期に関しては関与しません。
システム全体に意味の有る動作をさせるのはユーザの責任となります。
このモードでは負荷分散は<emphasis>できません</emphasis>。
サンプルの設定ファイルは<filename>$prefix/etc/pgpool.conf.sample</filename>です。

    </para>
  </sect2>
 </sect1>

 <sect1 id="configuring-backend-info">
<!-- 
  <title>Configuring backend information</title>
-->
  <title>バックエンド情報の設定</title>

  <para>
<!-- 
    For <productname>Pgpool-II</productname> to recognize <productname>PostgreSQL</>
    backend servers, you need to configure <varname>backend*</varname>
    in <filename>pgpool.conf</filename>.  For starters, at
    least <xref linkend="guc-backend-hostname">
    and <xref linkend="guc-backend-port"> paramters are required to
    be set up to start <productname>Pgpool-II</> server.
-->
<productname>Pgpool-II</>が<productname>PostgreSQL</>バックエンドサーバを認識するために、<filename>pgpool.conf</filename>の<varname>backend*</varname>を設定する必要があります。
手始めに、<productname>Pgpool-II</>を起動するには少なくても<xref linkend="guc-backend-hostname">と<xref linkend="guc-backend-port">パラメータが設定されている必要があります。
  </para>

  <sect2 id="backend-settings">
<!--  
    <title>Backend Settings</title>
-->
    <title>バックエンドの設定</title>

    <para>
<!--  
      Backend <productname>PostgreSQL</> used by <productname>Pgpool-II</> must be specified in <filename>pgpool.conf</filename>.
      See <xref linkend="runtime-config-backend-settings">
-->
<productname>Pgpool-II</>に使用されるバックエンド<productname>PostgreSQL</>が<filename>pgpool.conf</filename>で指定されている必要があります。
<xref linkend="runtime-config-backend-settings">を参照してください。
    </para>

<!--
    <variablelist>

      <varlistentry id="guc-backend-hostname" xreflabel="backend_hostname">
	<term><varname>backend_hostname</varname> (<type>string</type>)
	  <indexterm>
	    <primary><varname>backend_hostname</varname> configuration parameter</primary>
	  </indexterm>
	</term>

	<listitem>
	  <para>
            <varname>backend_hostname</varname> specifies where to
            connect to the <productname>PostgreSQL</productname>
            backend. It is used
            by <productname>Pgpool-II</productname> to communicate
            with the server.
	  </para>

	  <para>
	    For TCP/IP communication, this parameter can take a hostname
	    or an IP address. If this begins with a slash, it specifies
	    Unix-domain communication rather than TCP/IP; the value is
	    the name of the directory in which the socket file is
	    stored. The default behavior when backend_hostname is empty
	    ('') is to connect to a Unix-domain socket in /tmp.
	  </para>

	  <para>
	    Multiple backends can be specified by adding a number at the
	    end of the parameter name (e.g.backend_hostname0). This
	    number is referred to as "DB node ID", and it starts from
	    0. The backend which was given the DB node ID of 0 will be
	    called "Master DB". When multiple backends are defined, the
	    service can be continued even if the Master DB is down (not
	    true in some modes). In this case, the youngest DB node ID
	    alive will be the new Master DB.
	  </para>

	  <para>
	    Please note that the DB node which has id 0 has no special
	    meaning if operated in streaming replication mode. Rather,
	    you should care about if the DB node is the "primary node" or
	    not. See Streaming Replication for more details.
	  </para>

	  <para>
	    If you plan to use only one PostgreSQL server, specify it by
	    backend_hostname0.
	  </para>

	  <para>
	    New nodes can be added in this parameter by reloading a
	    configuration file. However, values cannot be updated so
	    you must restart <productname>Pgpool-II</productname> in
	    that case.
	  </para>

	</listitem>

      </varlistentry>

      <varlistentry id="guc-backend-port" xreflabel="backend_port">
	<term><varname>backend_port</varname> (<type>integer</type>)
	  <indexterm>
	    <primary><varname>backend_port</varname> configuration parameter</primary>
	  </indexterm>
	</term>

	<listitem>
	  <para>
            <varname>backend_port</varname> specifies the port number
            of the backends. Multiple backends can be specified by
            adding a number at the end of the parameter name
            (e.g. backend_port0). If you plan to use only one
            PostgreSQL server, specify it by backend_port0.
	  </para>
	  <para>
	    New backend ports can be added in this parameter by
	    reloading a configuration file. However, values cannot be
	    updated so you must
	    restart <productname>Pgpool-II</productname> in that case.
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry id="guc-backend-data-directory" xreflabel="backend_data_directory">
	<term><varname>backend_data_directory</varname> (<type>string</type>)
	  <indexterm>
	    <primary><varname>backend_data_directory</varname> configuration parameter</primary>
	  </indexterm>
	</term>

	  <listitem>
	  <para>
            <varname>backend_data_directory</varname> specifies the
            database directory. Multiple backends can be
            specified by adding a number at the end of the parameter
            name (e.g. backend_data_directory0). If you plan to use
            only one PostgreSQL server, specify it by
            backend_data_directory0.
	  </para>
	  <para>
	    New backend data_directorys can be added in this parameter
	    by reloading a configuration file. However, values cannot
	    be updated so you must
	    restart <productname>Pgpool-II</productname> in that case.
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry id="guc-backend-flag" xreflabel="backend_flag">
	<term><varname>backend_flag</varname> (<type>string</type>)
	  <indexterm>
	    <primary><varname>backend_flag</varname> configuration parameter</primary>
	  </indexterm>
	</term>

	<listitem>
	  <para>
            <varname>backend_flag</varname> controls various backend
            behavior. Multiple backends can be specified by adding a
            number at the end of the parameter name
            (e.g. backend_flag0). If you plan to use only one
            PostgreSQL server, specify it by backend_flag0.
	  </para>
	  <para>
	    New backend flags can be added in this parameter by
	    reloading a configuration file.  Currently followings are
	    allowed. Multiple flags can be specified by using "|".
	  </para>

	  <table id="backend-flag-table">
	    <title>Backend flags</title>
	    <tgroup cols="2">
	      <thead>
		<row>
		  <entry>Flag</entry>
		  <entry>Description</entry>
		</row>
	      </thead>

	      <tbody>
		<row>
		  <entry><literal>ALLOW_TO_FAILOVER</literal></entry>
		  <entry>Allow to failover or detaching backend. This
		    is the default. You cannot specify with
		    DISALLOW_TO_FAILOVER at a same time.</entry>
		</row>
		<row>
		  <entry><literal>DISALLOW_TO_FAILOVER</literal></entry>
		  <entry>This is useful when you protect backend by
		    using HA (High Availability) softwares such as
		    Heartbeat or Pacemaker. You cannot specify with
		    ALLOW_TO_FAILOVER at a same time.
		  </entry>
		</row>
	      </tbody>
	    </tgroup>
	  </table>

	</listitem>
      </varlistentry>

    </variablelist>

-->

  </sect2>

 </sect1>

</chapter>
