$Header: /home/t-ishii/repository/pgpool/README,v 1.11 2003/08/09 02:27:17 t-ishii Exp $

pgpool version 0.1.4 (iiwi) README

1. pgpoolȤ

   pgpoolϡPostgreSQLѤΤ֥ͥסץФǡ 
   PostgreSQL饤ȤPostgreSQLФδ֤ξԤΩ򤷤ޤ
   pgpoolѤ뤳ȤˤäơPostgreSQLФؤ³Хإå
   㸺ǤƥΤΥ롼ץåȤ夵뤳ȤǤޤ

   PostgreSQLΥ饤Ȥpgpool³ȡPostgreSQLؤ
   ³pgpoolΩޤ饤ȤλƤPostreSQLؤ
   ³Ǥ뤳ȤʤĤꡤƱ桼ǡ١
   pgpoolؤ³äȤˤϤPostgreSQLؤ³Ѥ
   

   ޤpgpoolˤϡ֥ե륪СפεǽΤǡƥΥ
   󥿥Ǿ¤˲뤳ȤǤޤ

2. pgpoolΥå

   ˤpgpoolʳˤǡ١ѤΥͥס륵Ф
   ¸ߤޤӤpgpoolΥåȤޤ

   (1) ץꥱѹɬפޤ

       ͥסѤΥեȤˤѤ̤API(ץꥱ
       ץ।󥿡ե)ͳʤѤǤʤΤ⤢
       ޤpgpoolϥ饤Ȥ鸫̤PostgreSQL
       ˸뤿ᡤΤ褦APIѤɬפޤ󡥺ޤ
       PostgreSQLȤäƤץꥱϡ³Υݡֹ
       ۥȤѹǤpgpoolѤǤ褦ˤʤޤ

   (2) ɤθǤȤޤ

        pgpoolPostgreSQLΥ饤Ȥ䥢ץꥱ󤫤鸫
	̤PostgreSQLФ˸ޤäPHP, Perl, Javaʤ
	ƸѤPostgreSQLAPIΤޤ޻Ȥޤ

   (3) preforkƥ

       ApacheʤɤƱ͡餫᥵ХץforkƤ
       ƥѡͥ׵٤˥Хץfork
       ١ХإåɤʤͥƤޤ

   (4) PostgreSQLؤ³¤ǽ

       PHPPostgreSQL˥硤Ʊ³ApacheФ
       ץʤ뤿ᡤPostgreSQL٤ˤʤ꤬Ǥ
       pgpoolǤPostgreSQLؤ³preforkpgpoolΥп
       ä¤뤿ᡤPostgreSQLäȤΨɤưƱ
       ³ݻ뤳ȤǤޤ

   (5) ե륪Сǽ

       pgpoolˤϡ֥ե륪Сפεǽޤʤ
       PostgreSQLФ2ꤷƤ1椬󤷤ݤ˼ưŪ2
       ܤΥФڤؤ뤳ȤǤޤե륪Сǽ
       ꡤƥΥ󥿥Ǿ¤˲뤳ȤǤޤ
       2PostgreSQLФΥǡƱ뵡ǽϤޤ
       ΤǡɬפʤdbmirrorʤɤΥץꥱѥåʻ
       ѤƤ

       ޤե륪Сκݤˤϥ饤ȤȤΥͥ
       Ǥޤäơե륪Сϥ饤ȤϺ
       pgpool³ɬפޤ

3. pgpoolΥǥå

   (1) Хإåɤޤ

       PostgreSQLФ륢Ϥ٤Ƥäpgpoolͳ뤿ᡤ
       ʬΥХإåɤޤХإåɤ̤Ͼˤä
       ۤʤΤǰ쳵ˤϸޤ󤬡䤬pgbenchǻ¤Ǥ7-
       15%٤ǽǧޤ

   (2) ٤Ƥlibpqץȥ뤬ݡȤƤޤ

       ǤϡʲεǽݡȤƤޤ

       o trustʳǧ

       o pgpoolФơpg_hba.confˤ륢ϥݡȤ
         ޤ(pgpool³PostgreSQLǤϤpg_hba.conf
         륢椬ͭˤʤޤ)

   (3) pgpoolΤpg_hba.confˤ륢¤Ϥޤ

       TCP/IPͥĤƤ(Ҥ
       allow_inet_domain_socket1ξ)pgpoolΤˤϤɤΥۥȤ
       Ǥ³ǤƤޤޤɬפʤiptablesʤɤȤäƥ
       ¤򤫤Ʋ(pgpool³PostgreSQL
       ФǤpg_hba.confˤ륢¤ͭǤ)

4. pgpoolβƯĶ

   pgpoolϡlibpqץȥversion 2(PostgreSQL 7.0-7.3.xǺ)
   бƤޤRESET ALLбƤʤ 7.1뤤ϤΥС
   Ǥ pool.h

   #undef NO_RESET_ALL

   

   #define NO_RESET_ALL

   ѤƤ

   бOSä¤ޤ󡥰ʲưǧ줿ĶǤ

   Vine Linux 2.6CR (kernel 2.4.20-0vl29.1)/PostgreSQL 7.3.3
   RedHat Linux 8.0 (kernel 2.4.18-14)/PostgreSQL 7.3.2
   FreeBSD 4.7-RELEASE/PostgreSQL 7.2.4 
   FreeBSD 4.2-RELEASE/PostgreSQL 7.3.2

   SolarisǤϤޤưʤ褦ʤΤǡĴǤ

5. pgpoolΥ󥹥ȡˡ

   (1) pgpoolΥ󥹥ȡ

      ./configure
      make
      make install

      ǥ󥹥ȡ뤬λޤ(GNU makeɬפʤΤǡFreeBSDʤɤǤ
      makegmakeɤؤƤ)ǥեȤΥ󥹥ȡϡ
      /usr/localʲǰʲΤ褦ʥե뤬󥹥ȡ뤵ޤ

      /usr/local/bin/pgpool	ץ
      /usr/local/etc/pgpool.conf.sample	ե륵ץ

      󥹥ȡѹϡconfigure --prefix=path... Ȥ
      Ƥ

6. pgpoolˡ

   pgpoolѥ᡼pgpool.confꤷޤpgpool.conf.sample
   pgpool.conf˥ԡԤäƤ

   pgpool.confν񼰤ϰʲǤ

   (1)  =  ΥڥԤޤ

   (2) ͤͤξϤΤޤ޿񤭤ޤʸξ'(ñ
       )ǳޤ:'foo'

   (3) Ԥ̵뤵ޤ

   (4) ԤƬ"#"(㡼)Ԥ̵뤵ޤȹԤȤ
       Ȥ

   pgpool.confˤϰʲΤ褦ܤޤ

   allow_inet_domain_socket

   INETɥᥤ󥽥åȤ̤pgpool³뤳ȤĤ1
   Ƥǥեͤ0ˤʤäƤޤʤUNIXɥᥤ󥽥
   ȷͳ³Ͼ˼դޤ

   port

   pgpoolͥդݡֹǤǥեͤ9999
   Ǥ

   backend_host_name

   pgpool³PostgreSQL(postmaster)ưƤۥȤ̾
   (ʸ)Ǥǥեͤ''ǡξUNIXɥᥤ󥽥åȤ
   ̤³Ԥޤ''ʳʤХۥ̾ȸʤINETɥᥤ
   åȷͳ³ޤξ硤PostgreSQL¦ǤTCP/IPͥ
   դ褦ˤʤäƤ뤳ȡޤpg_hba.confŬڤꤵ
   Ƥpgpool³Ĥ褦ˤʤäƤɬפޤ
   PostgreSQL鸫ȡpgpoolϥ饤Ȥ˸뤳ȤפФ
   Ƥˡ

   backend_port

   PostgreSQLФΥݡֹǤǥեͤ5432Ǥ

   secondary_backend_host_name

   ե륪СǽѤ硤2ܤPostgreSQLФΥۥ
   ̾ꤷޤǥեͤ''Ǥ

   secondary_backend_port

   ե륪СǽѤ硤2ܤPostgreSQLФΥݡ
   ֹꤷޤ0ꤹȥե륪Фޤ󡥥ǥե
   0Ǥ

   num_init_children

   preforkpgpoolΥХץοǤǥեͤ16ˤʤ
   Ƥޤ

   max_pool

   pgpoolγƥХץפPostgreSQLؤκ祳ͥ
   Ǥpgpoolϡ桼̾ǡ١ƱʤХͥ
   ѤޤǤʤпPostgreSQLؤΥͥ
   Ω褦ȤޤäơǤꤵ[桼̾:ǡ١
   ̾]Υڥμοmax_pool˻ꤷƤɬפޤ
   max_poolΥǥեͤ1Ǥ

   ʤpgpoolΤȤƤϡnum_init_children*max_pool ʬ
   PostgreSQLؤΥͥĥդƤ

   connection_life_time

   ͥסΥ֤ͥͭñ̤ǻꤷޤ0
   ꤹ̵֤ͭ¤ˤʤޤconnection_life_timeΥǥե
   ͤ0Ǥ

   logdir

   pgpoolγƼեǼǥ쥯ȥǤߤΤȤ
   pgpool.pidȤץIDǼե褦ˤʤ
   ƤޤlogdirΥǥեͤ'/tmp'Ǥ

7. pgpoolεư

   pgpoolưäȤñˡϡ

   $ pgpool

   ȤǤ/usr/local/etc/pgpool.confɤ߹ߡ
   ǥФưޤ

   ǽʥץϼ̤Ǥ

   -f path

   ǥեȰʳΥե졼եΥѥ̾ꤷޤ

   -n

   ǡ⡼ɤǵưޤ󡥤Υץloggerrotatelogs
   ɤȤäƥ顼åե˽ϤȤʤɤǤ

   -d

   ǥХåå̤˽Ϥޤ

   -h

   إץåϤƽλޤ

8. pgpoolνλ

   stopץץȤޤ

   $ pgpool stop

   ߤǤޤ

9. regression testμ»

   ʲΤ褦ˤpgpoolʻѤregression testԤȤǤޤ

   $ cd /usr/local/src/postgresql-7.3.3/src/test/regress
   $ make all
   $ ./pg_regress --schedule=parallel_schedule --port=9999

10. ٥ޡμ»

   ٥ޡ»ܤˤϤˡޤǤ
   pgbenchPHPabȤäñˡ򤴾Ҳ𤷤ޤ

   ޤ٥ޡǡ١ޤ

   $ pgbench -i test
  
   abưޤåȤȤʤPHPץȤϤǤϰʲΤ褦
   ñʤΤȤޤ

   <?php
    ini_set("track_errors", "1");
    define_syslog_variables();

    $con = pg_pconnect("dbname=test user=postgres port=9999");
    if ($con == FALSE) {
      syslog(LOG_ERR, "could not connect $php_errormsg");
      trigger_error("Could not connect to DB", E_USER_ERROR);
      exit;
    }
    $aid = rand(1,10000);
    pg_query($con, "SELECT * FROM accounts WHERE aid = $aid");
    pg_close($con);
  ?>

  $ /usr/local/apache/bin/ab -c 100 -n 1000 "http://localhost/bench.php"
