<!-- doc/src/sgml/example-basic.sgml -->

<sect1 id="example-basic">
 <!--
 <title>Basic Configuration Example</title>
 -->
 <title>基本設定の例</title>

 <sect2 id="example-configs-begin">
  <!--
  <title>Let's Begin!</title>
  -->
  <title>さあ始めましょう</title>
  <para>
   <!--
   First, we must learn how to install and configure <productname>Pgpool-II</productname> and database nodes before using replication.
   -->
   ここでは、レプリケーションを行うための準備として、<productname>Pgpool-II</productname> のインストールや設定、データベースノードの準備について説明します。
  </para>

  <sect3 id="example-configs-begin-installing">
   <!--
   <title>Installing <productname>Pgpool-II</productname></title>
   -->
   <title><productname>Pgpool-II</productname>のインストール</title>
   <para>
    <!--
    Installing <productname>Pgpool-II</productname> is very easy.
    In the directory which you have extracted the source tar ball,
    execute the following commands.
    -->
    <productname>Pgpool-II</productname>のインストールはとても簡単です。
    ソースのtar ballを展開したディレクトリで以下のようにコマンドを実行します。
    <programlisting>
     $ ./configure
     $ make
     $ make install
    </programlisting>
    <!--
    <command>configure</command> script collects your system information
    and use it for the compilation procedure. You can pass command
    line arguments to <command>configure</> script to change the default behavior,
    such as the installation directory. <productname>Pgpool-II</productname>
    will be installed to <literal>/usr/local</literal> directory by default.
    -->
    <link linkend="INSTALL-PGPOOL"><command>configure</command>スクリプト</link>はシステム情報を収集しコンパイル処理に利用します。
    <command>configure</>スクリプトにコマンドライン引数を指定することにより、インストール先ディレクトリなど、デフォルトの動作を変更することができます。
    デフォルトでは<productname>Pgpool-II</> は<literal>/usr/local</literal>ディレクトリ以下にインストールされます。
   </para>
   <para>
    <!--
    <command>make</command> command compiles the source code, and
    <command>make install</command> will install the executables.
    You must have write permission on the installation directory.
    In this tutorial, we will install <productname>Pgpool-II
   </productname> in the default <literal>/usr/local</literal> directory.
    -->
    <command>make</command>コマンドはソースコードをコンパイルし、<command>make install</command>コマンドで実行可能ファイルがインストールされます。
    インストール先ディレクトリに書き込み権限を持っている必要があります。
    ここでは、<productname>Pgpool-II</productname>は<literal>/usr/local</literal>にインストールすることにします。
   </para>
   <note>
    <para>
     <!--
     <productname>Pgpool-II</productname> requires <literal>libpq</literal>
     library in <productname>PostgreSQL</> 7.4 or later (version 3 protocol).
     -->
     <productname>Pgpool-II</>は<productname>PostgreSQL</> 7.4 以降の<literal>libpq</literal>ライブラリ(3.0 プロトコル)を必要とします。
    </para>
   </note>
   <para>
    <!--
    If the <command>configure</command> script displays the following error message, the
    <literal>libpq</literal> library may not be installed, or it is not of version 3
    -->
    <command>configure</command>スクリプトが以下のエラーメッセージを表示した場合、<literal>libpq</literal>ライブラリがインストールされていないか、バージョンが3.0でない可能性があります。
    <programlisting>
     configure: error: libpq is not installed or libpq is old
    </programlisting>
    <!--
    If the library is version 3, but the above message is still displayed, your
    <literal>libpq</literal> library is probably not recognized by the <command>
    configure</command> script.
    The <command>configure</command> script searches for <literal>libpq</literal>
    library under <literal>/usr/local/pgsql</literal>. If you have installed the
    <productname>PostgreSQL</> in a directory other than <literal>/usr/local/pgsql</literal>, use
    <literal>&#045;&#045;with-pgsql</literal>, or <literal>&#045;&#045;with-pgsql-includedir</literal>
    and <literal>&#045;&#045;with-pgsql-libdir</literal> command line options when you
    execute <command>configure</command>.
    -->
    プロトコルのバージョンが3.0の<literal>libpq</literal>ライブラリがインストールされているにも係わらず上記のエラーメッセージが表示される場合、<command>configure</command>スクリプトに<literal>libpq</literal>ライブラリが認識されていない可能性があります。
    <command>configure</command>スクリプトは標準では<literal>/usr/local/pgsql</literal>ディレクトリ以下から<literal>libpq</literal>ライブラリを検索します。
    <productname>PostgreSQL</>のインストール先が<literal>/usr/local/pgsql</literal>ディレクトリ以下でなければ、<command>configure</command>スクリプトを実行する際にコマンドライン引数として<literal>--with-pgsql</literal>や<literal>--with-pgsql-includedir</literal>、<literal>--with-pgsql-libdir</literal>オプションを指定してください。
   </para>
  </sect3>

  <sect3 id="example-configs-begin-config-files">
   <!--
   <title>Configuration Files</title>
   -->
   <title>設定ファイルの作成</title>
   <para>
    <!--
    <productname>Pgpool-II</productname> configuration parameters are saved in the
    <literal>pgpool.conf</literal> file. The file is in <literal>"parameter = value"
   </literal> per line format. When you install <productname>Pgpool-II</productname>,
    <literal>pgpool.conf.sample</literal> is automatically created.
    We recommend copying and renaming it to <literal>pgpool.conf</literal>, and edit
    it as you like.
    -->
    <productname>Pgpool-II</>の設定パラメータは<literal>pgpool.conf</literal>ファイルに保存されています。
    ファイルは、1 行ごとに<literal>パラメータ名 = 値</literal>という書式です。
    <productname>Pgpool-II</> をインストールすると、<literal>pgpool.conf.sample</literal>ファイルが作成されます。
    それを<literal>pgpool.conf</literal>というファイル名にコピーしてから編集するといいでしょう。
    <programlisting>
     $ cp /usr/local/etc/pgpool.conf.sample /usr/local/etc/pgpool.conf
    </programlisting>
    <!--
    <productname>Pgpool-II</productname> only accepts connections from the localhost
    using port 9999 by the default. If you wish to receive connections from other hosts,
    set <xref linkend="guc-listen-addresses"> to <literal>'*'</literal>.
    -->
    <productname>Pgpool-II</> はデフォルトではローカルホストからのポート番号9999への接続のみを受け付けます。
    <productname>Pgpool-II</> と異なるホストからの接続を受け付けたい場合は、<xref linkend="guc-listen-addresses">を<literal>'*'</literal>に設定します。
     <programlisting>
      listen_addresses = 'localhost'
      port = 9999
     </programlisting>
     <!--
     We will use the default parameters in this tutorial.
     -->
     ここではデフォルトのパラメータを使うことにします。
   </para>
  </sect3>

  <sect3 id="example-configs-begin-config-pcp">
   <!--
   <title>Configuring <acronym>PCP</acronym> Commands</title>
   -->
   <title><acronym>PCP</acronym>コマンドの設定</title>

   <para>
    <!--
    <productname>Pgpool-II</productname> has an interface for administrative
    purpose to retrieve information on database nodes, shutdown
    <productname>Pgpool-II</productname>, etc. via network. To use
    <acronym>PCP</acronym> commands, user authentication is required.
    This authentication is different from <productname>PostgreSQL</>'s user authentication.
    A user name and password need to be defined in the <literal>pcp.conf</literal>
    file. In the file, a user name and password are listed as a pair on each line,
    and they are separated by a colon (:). Passwords are encrypted in
    <literal>md5</literal> hash format.
    -->
    <productname>Pgpool-II</productname>には、データベースノードの情報取得や<productname>Pgpool-II</productname>停止などをネットワーク越しに行える管理目的のインターフェイスがあります。
    <acronym>PCP</acronym>コマンドを使用するにはユーザ認証が必要になります。
    この認証は<productname>PostgreSQL</>ユーザの認証とは異なります。
    ユーザ名とパスワードが<literal>pcp.conf</literal>ファイルに定義されている必要があります。
    このファイルでは、1行ごとにユーザ名とパスワードがペアとしてリストされており、これらがコロン(:)で区切られています。
    パスワードは<literal>MD5</literal>ハッシュ形式で暗号化されている必要があります。

    <programlisting>
     postgres:e8a48653851e28c69d0506508fb27fc5
    </programlisting>

    <!--
    When you install <productname>Pgpool-II</productname>, <literal>pcp.conf.sample
   </literal> is automatically created. We recommend copying and renaming it
    to <literal>pcp.conf</literal>, and edit it.
    -->
    <productname>Pgpool-II</> をインストールするとサンプルとして<literal>pcp.conf.sample</literal>が自動的に生成されます。
    それを<literal>pcp.conf</literal>というファイル名にコピーしてから編集するといいでしょう。
    <programlisting>
     $ cp /usr/local/etc/pcp.conf.sample /usr/local/etc/pcp.conf
    </programlisting>
    <!--
    To encrypt your password into md5 hash format, use the <command>pg_md5</command>
    command, which is installed as one of <productname>Pgpool-II</productname>'s
    executables. <command>pg_md5</command> takes text as a command line argument,
    and displays its md5-hashed text.
    For example, give <literal>"postgres"</literal> as the command line argument,
    and <command>pg_md5</command> displays md5-hashed text on its standard output.
    -->
    パスワードをMD5ハッシュ形式に変換する際には、<productname>Pgpool-II</>とともにインストールされる<command>pg_md5</command>コマンドを使用します。
    <command>pg_md5</command>コマンドは、コマンドライン引数として文字列を指定すると、それをMD5ハッシュ化したものを表示します。
    例えば、以下のようにコマンドライン引数として<literal>"postgres"</literal>を指定して実行すると、それをMD5ハッシュ化したテキストが標準出力に表示されます。
    <programlisting>
     $ /usr/local/bin/pg_md5 postgres
     e8a48653851e28c69d0506508fb27fc5
    </programlisting>
    <!--
    PCP commands are executed via network, so the port number must be configured
    with <xref linkend="guc-pcp-port"> parameter in <literal>pgpool.conf</literal> file.
    We will use the default 9898 for <xref linkend="guc-pcp-port"> in this tutorial.
    -->
    PCPコマンドはネットワークを通して実行されるので、ポート番号を<literal>pgpool.conf</literal>ファイルの<xref linkend="guc-pcp-port">パラメータに設定します。
     ここでは、<xref linkend="guc-pcp-port">のデフォルトである9898を使用することにします。
      <programlisting>
       pcp_port = 9898
      </programlisting>
   </para>
  </sect3>


  <sect3 id="example-configs-prep-db-nodes">
   <!--
   <title>Preparing Database Nodes</title>
   -->
   <title>データベースノードの準備</title>
   <para>
    <!--
    Now, we need to set up backend <productname>PostgreSQL</> servers for <productname>Pgpool-II
   </productname>. These servers can be placed within the same host as
    <productname>Pgpool-II</productname>, or on separate machines. If you decide
    to place the servers on the same host, different port numbers must be assigned
    for each server. If the servers are placed on separate machines,
    they must be configured properly so that they can accept network
    connections from <productname>Pgpool-II</productname>.
    In this example, we create 3 <productname>PostgreSQL</productname> servers and
    specify the PostgreSQL information in the following parameters.
    -->
    次に、<productname>Pgpool-II</productname>のための<productname>PostgreSQL</>サーバを設定する必要があります。
    これらのサーバは、<productname>Pgpool-II</> と同じホストで起動しても、異なるホストであっても構いません。
    同じホストにサーバを配置するのならば、各サーバにそれぞれ異なるポート番号を割り合てなければなりません。
    異なるマシンで起動する場合は <productname>Pgpool-II</>からのネットワーク接続を受け入れられるよう適切に設定されている必要があります。
    この設定例では、事前に3つのPostgreSQLサーバを作成しておき、それぞれのPostgreSQLサーバの情報を次のパラメータに指定します。

    <programlisting>
     backend_hostname0 = 'localhost'
     backend_port0 = 5432
     backend_weight0 = 1
     backend_hostname1 = 'localhost'
     backend_port1 = 5433
     backend_weight1 = 1
     backend_hostname2 = 'localhost'
     backend_port2 = 5434
     backend_weight2 = 1
    </programlisting>

    <!--
    For <xref linkend="guc-backend-hostname">, <xref linkend="guc-backend-port">,
    <xref linkend="guc-backend-weight">, set the node's hostname, port number,
    and ratio for load balancing. At the end of each parameter string,
    node ID must be specified by adding positive integers starting with 0 (i.e. 0, 1, 2..).
    -->
    <xref linkend="guc-backend-hostname">、<xref linkend="guc-backend-port">、<xref linkend="guc-backend-weight">には、ノードのホスト名、ポート番号、負荷分散の割合を設定します。
       各パラメータ名の後ろには、ノードIDが0から始まる整数(すなわち、0, 1, 2, ...)で指定されていなければなりません。
   </para>
   <note>
    <para>
     <!--
     <xref linkend="guc-backend-weight"> parameters for all nodes are
     set to 1, meaning that SELECT queries are equally distributed among
     three servers.
     -->
     すべてのノードで<xref linkend="guc-backend-weight">パラメータが1に設定されているのは、SELECTクエリが３台のサーバで等しく分散されることを意味しています。
    </para>
   </note>
  </sect3>

  <sect3 id="example-configs-start-stop-pgpool">
   <!--
   <title>Starting/Stopping <productname>Pgpool-II</productname></title>
   -->
   <title><productname>Pgpool-II</productname>の起動と停止</title>
   <para>
    <!--
    To fire up <productname>Pgpool-II</productname>, execute the following
    command on a terminal.
    -->
    <productname>Pgpool-II</> を起動するにはターミナルで以下のコマンドを実行します。

    <programlisting>
     $ pgpool
    </programlisting>

    <!--
    The above command, however, prints no log messages because <productname>
    Pgpool-II</productname> detaches the terminal. If you want to show
    <productname>Pgpool-II</productname> log messages, you pass <literal>-n</literal>
    option to <command>pgpool</command> command so <productname>Pgpool-II</productname>
    is executed as non-daemon process, and the terminal will not be detached.
    -->
    しかしこれでは、<productname>Pgpool-II</productname>が制御端末を切り離すため、ログが出力されません。
    <productname>Pgpool-II</productname>にログメッセージを表示させたい場合、<command>pgpool</command>コマンドに<literal>-n</literal>オプションを指定すると、<productname>Pgpool-II</productname>は非デーモンプロセスとして起動し、制御端末は切り離されません。
    <programlisting>
     $ pgpool -n &
    </programlisting>

    <!--
    The log messages are printed on the terminal, so it is recommended to use the following options.
    -->
    コマンドを実行した端末にログメッセージが表示されるので、以下のようなオプションを使うことをお勧めします。
    <programlisting>
     $ pgpool -n -d > /tmp/pgpool.log 2>&1 &
    </programlisting>

    <!--
    The <literal>-d</literal> option enables debug messages to be generated.
    The above command keeps appending log messages to <literal>/tmp/pgpool.log
   </literal>. If you need to rotate log files, pass the logs to a external
    command which has log rotation function.
    For example, you can use <ulink url="https://httpd.apache.org/docs/2.4/programs/rotatelogs.html">
    <command>rotatelogs</command></ulink> from Apache2:
    -->
    -d オプションはデバッグメッセージの出力を有効にします。
    上記の例はファイルにリダイレクトさせているため、ログメッセージが<literal>/tmp/pgpool.log</literal>に追加され続けます。
    ログをローテートさせたい場合は、ローテート機能を持った外部コマンドにログを渡してください。
    たとえば、Apache2の<ulink url="https://httpd.apache.org/docs/2.4/programs/rotatelogs.html">rotatelogs</ulink>が使用できます。

    <programlisting>
     $ pgpool -n 2>&1 | /usr/local/apache2/bin/rotatelogs \
     -l -f /var/log/pgpool/pgpool.log.%A 86400 &
    </programlisting>

    <!--
    This will generate a log file named <literal>"pgpool.log.Thursday"</literal>
    then rotate it 00:00 at midnight. Rotatelogs adds logs to a file if it already
    exists. To delete old log files before rotation, you could use cron:
    -->
    これにより毎日夜中の0時にログがローテートされ、<literal>pgpool.log.Thursday</literal>のような名前のログファイルが毎日作成されます。
    ただし、すでに同じ名前のファイルがある場合にはrotatelogsはログをそのファイルに追加してしまいます。
    cronを使うことで、古いログファイルをローテーションの前に削除することができます。

    <programlisting>
     55 23 * * * /usr/bin/find /var/log/pgpool -type f -mtime +5 -exec /bin/rm -f '{}' \;
    </programlisting>

    <!--
    Please note that rotatelogs may exist as <literal>/usr/sbin/rotatelogs2</literal>
    in some distributions. <literal>-f</literal> option generates a log file as soon as
    <command>rotatelogs</command> starts and is available in apache2 2.2.9 or greater.
    Also <ulink url="http://www.cronolog.org/">cronolog</ulink> can be used.
    -->
    注意：Linuxディストリビューションによっては、rotatelogsは<literal>/usr/sbin/rotatelogs2</literal>として存在しているかもしれません。
    <literal>-f</literal>オプションは<command>rotatelogs</command>が起動された直後に直ちにログファイルを作るオプションで、apache2 2.2.9以降でのみ有効です。
    <ulink url="http://www.cronlog.org/">cronolog</ulink>を使うこともできます。
    <programlisting>
     $ pgpool -n 2>&1 | /usr/sbin/cronolog \
     --hardlink=/var/log/pgsql/pgpool.log \
     '/var/log/pgsql/%Y-%m-%d-pgpool.log' &
    </programlisting>

    <!--
    To stop <productname>Pgpool-II</>  execute the following command.
    -->
    <productname>Pgpool-II</> を停止するには以下のコマンドを実行します。
    <programlisting>
     $ pgpool stop
    </programlisting>

    <!--
    If any client is still connected, <productname>Pgpool-II</productname>
    waits for it to disconnect, and then terminates itself. Run the following
    command instead if you want to shutdown <productname>Pgpool-II</productname>
    forcibly.
    -->
    <productname>Pgpool-II</> を停止する際にクライアントが接続している場合、<productname>Pgpool-II</productname>はその接続が切断されるまで待ってから停止します。
    <productname>Pgpool-II</>を強制的にシャットダウンしたい場合は、以下のコマンドを実行します。
    <programlisting>
     $ pgpool -m fast stop
    </programlisting>

   </para>
  </sect3>
 </sect2>

 <sect2 id="example-configs-replication">
  <!--
  <title>Your First Replication</title>
  -->
  <title>初めてのレプリケーション</title>
  <para>
   <!--
   Replication (see <xref linkend="runtime-config-replication-mode">) enables
   the same data to be copied to multiple database nodes.
   In this section, we'll use three database nodes, which we have already set
   up in <xref linkend="example-configs-begin">, and takes you step by step to
   create a database replication system.
   Sample data to be replicated will be generated by the
   <ulink url="https://www.postgresql.org/docs/current/static/pgbench.html">
   <command>pgbench</command></ulink> benchmark program.
   -->
   ネィティブレプリケーションモード（<xref linkend="guc-replication-mode">を参照）では複数のデータベースノードに同じデータを複製して格納します。
    ここでは、<xref linkend="example-configs-begin">で準備した 3 台のデータベースノードを使用し、一歩一歩データベースクラスタシステムを作っていきましょう。
     複製させるサンプルのデータは<ulink url="https://www.postgresql.org/docs/current/static/pgbench.html"><command>pgbench</command></ulink>ベンチマークプログラムで生成することにします。
  </para>

  <sect3 id="example-configs-config-replication">
   <!--
   <title>Configuring Replication</title>
   -->
   <title>レプリケーションの設定</title>
   <para>
    <!--
    To enable the database replication function, set
    <xref linkend="guc-replication-mode"> to on in <literal>pgpool.conf</literal> file.
    -->
    データベースノードのレプリケーションを有効にするには、<literal>pgpool.conf</literal>ファイルの<xref linkend="guc-replication-mode">をonに設定します。
     <programlisting>
      replication_mode = true
     </programlisting>
     <!--
     When <xref linkend="guc-replication-mode"> is on, <productname>Pgpool-II</productname>
     will send a copy of a received query to all the database nodes.
     In addition, when <xref linkend="guc-load-balance-mode"> is set to true,
     <productname>Pgpool-II</productname> will distribute <acronym>SELECT</acronym> queries
     among the database nodes.
     -->
     <xref linkend="guc-replication-mode">をonに設定することにより、<productname>Pgpool-II</>は受信したクエリを全てのデータベースノードに送信します。
      対して実行され、同じデータが複製されて格納されるようになります。
      さらに、<xref linkend="guc-load-balance-mode">をonに設定することにより、<productname>Pgpool-II</>はSELECTクエリをデータベースノード間に振り分けます。
       <programlisting>
	load_balance_mode = true
       </programlisting>
       <!--
       In this section, we will enable both <xref linkend="guc-replication-mode">
       and <xref linkend="guc-load-balance-mode">.
       -->
       ここでは、<xref linkend="guc-replication-mode">、<xref linkend="guc-load-balance-mode">の両方を有効にします。
   </para>
  </sect3>

  <sect3 id="example-configs-checking-replication">
   <!--
   <title>Checking Replication</title>
   -->
   <title>レプリケーションの確認</title>
   <para>
    <!--
    To reflect the above changes in <literal>pgpool.conf</literal>,
    <productname>Pgpool-II</productname> must be restarted.
    Please refer to "Starting/Stopping <productname>Pgpool-II</productname>"
    <xref linkend="example-configs-start-stop-pgpool">.
    After configuring <literal>pgpool.conf</literal> and restarting the
    <productname>Pgpool-II</productname>, let's try the actual replication
    and see if everything is working.
    First, we need to create a database to be replicated. We will name it
    <literal>"bench_replication"</literal>. This database needs to be created
    on all the nodes. Use the
    <ulink url="https://www.postgresql.org/docs/current/static/app-createdb.html">
    <command>createdb</command></ulink> commands through
    <productname>Pgpool-II</productname>, and the database will be created
    on all the nodes.
    -->
    上記の<literal>pgpool.conf</literal>の変更を<productname>Pgpool-II</>に反映させるには<productname>Pgpool-II</>を再起動する必要があります。
    「<productname>Pgpool-II</> の起動と停止」<xref linkend="example-configs-start-stop-pgpool">を参照してください。
     <literal>pgpool.conf</literal>の設定と再起動がすんだら、実際にレプリケーションを試してうまく行くことを確認しましょう。
     まず、複製するデータベースを作成する必要があります。
     これを<literal>"bench_replication"</literal>と名づけましょう。
     このデータベースが全てのノードで作成される必要があります。
     <ulink url="https://www.postgresql.org/docs/current/static/app-createdb.html"><command>createdb</command></ulink>コマンドを<productname>Pgpool-II</>経由で実行すると、すべてのノードでデータベースが作成されます。
     <programlisting>
      $ createdb -p 9999 bench_replication
     </programlisting>
     <!--
     Then, we'll execute <ulink url="https://www.postgresql.org/docs/current/static/pgbench.html">
     <command>pgbench</command></ulink> with <literal>-i</literal> option.
     <literal>-i</literal> option initializes the database with pre-defined tables and data.
     -->
     そして<ulink url="https://www.postgresql.org/docs/current/static/pgbench.html"><command>pgbench</command></ulink>に<literal>-i</literal>オプションを指定して実行します。
     <literal>-i</literal>オプションにより、データベースは事前に定義されたテーブルとデータで初期化されます。
     <programlisting>
      $ pgbench -i -p 9999 bench_replication
     </programlisting>
     <!--
     The following table is the summary of tables and data, which will be created by
     <ulink url="https://www.postgresql.org/docs/current/static/pgbench.html">
     <command>pgbench -i</command></ulink>. If, on all the nodes, the listed tables and
     data are created, replication is working correctly.
     -->
     <ulink url="https://www.postgresql.org/docs/current/static/pgbench.html"><command>pgbench -i</command></ulink>によって作成されるテーブルとデータを以下の表にまとめます。
     すべてのノードにおいてこれらのテーブルおよびデータが作成されていれば、正常にレプリケーションが動作していることになります。
   </para>

   <table id="example-configs-checking-replication-table">
    <title>data summary</title>
    <tgroup cols="2">
     <thead>
      <row>
       <!--
       <entry>Table Name</entry>
       <entry>Number of Rows</entry>
       -->
       <entry>テーブル名</entry>
       <entry>行数</entry>
      </row>
     </thead>

     <tbody>
      <row>
       <entry>pgbench_branches</entry>
       <entry>1</entry>
      </row>

      <row>
       <entry>pgbench_tellers</entry>
       <entry>10</entry>
      </row>

      <row>
       <entry>pgbench_accounts</entry>
       <entry>100000</entry>
      </row>

      <row>
       <entry>pgbench_history</entry>
       <entry>0</entry>
      </row>

     </tbody>
    </tgroup>
   </table>

   <para>
    <!--
    Let's use a simple shell script to check the above on all the nodes.
    The following script will display the number of rows in pgbench_branches,
    pgbench_tellers, pgbench_accounts, and pgbench_history tables on all the nodes (5432, 5433, 5434).
    -->
    これをチェックするため、簡単なシェルスクリプトを実行してみましょう。
    以下のスクリプトはすべてのノード (ポート番号 5432、5433、5434) のデータベースにおけるpgbench_branches、pgbench_tellers、pgbench_accounts、pgbench_historyの行数が表示されます。
    <programlisting>
     $ for port in 5432 5433 5434; do
     >     echo $port
     >     for table_name in pgbench_branches pgbench_tellers pgbench_accounts pgbench_history; do
     >         echo $table_name
     >         psql -c "SELECT count(*) FROM $table_name" -p $port bench_replication
     >     done
     > done
    </programlisting>

   </para>
  </sect3>
 </sect2>

</sect1>
