Last modified: Fri Apr 20 15:56:23 JST 2012
Welcome to pgpool -II page


pgpool-II$B$H$O(B

pgpool-II$B$O(BPostgreSQL$B@lMQ$N%_%I%k%&%'%"$G!"(BPostgreSQL$B$N%G!<%?%Y!<%9%/%i%$%"%s%H$H(BPostgreSQL$B%5!<%P$N4V$K3d$j9~$`7A$GF0:n$7!"(BPostgrSQL$B$K0J2<$N$h$&$J5!G=$rDI2C$7$^$9!#(B

  • $B%3%M%/%7%g%s%W!<%j%s%0(B

    PostgreSQL$B$X$N@\B3$rJ]B8$7$F$*$-!"F1$8B0@-(B($B%f!<%6L>!"%G!<%?%Y!<%9!"%W%m%H%3%k%P!<%8%g%s(B)$B$r;}$D@\B3$re$9$k$3$H$,$G$-$^$9!#(B

  • $B%l%W%j%1!<%7%g%s(B

    pgpool-II$B$OJ#?t$N(BPostgreSQL$B%5!<%P$r4IM}$9$k$3$H$,$G$-$^$9!#%l%W%j%1!<%7%g%s5!G=$r;HMQ$9$k$3$H$K$h$j!"J*M}E*$K(B2$BBf0J>e$N(BDB$B%5!<%P$K%j%"%k%?%$%`$G%G!<%?$rJ]B8$9$k$3$H$,$G$-!"K|$,0l$I$l$+$N(BDB$B%5!<%P$K>c32$,H/@8$7$F$b1?MQ$r7QB3$9$k$3$H$,$G$-$^$9!#(B

  • $BIi2YJ,;6(B

    $B%l%W%j%1!<%7%g%s$^$?%^%9%?!<%9%l!<%V%b!<%I$G1?MQ$7$F$$$k>l9g!"$I$N%5!<%P$KLd$$9g$o$;$F$bF1$87k2L$,JV$C$F$-$^$9!#B??t$N8!:w%j%/%(%9%H$r$=$l$>$l$N%5!<%P$GJ,C4$7$FIi2Y$r7Z8:$5$;!"%7%9%F%`A4BN$N@-G=$r8~>e$5$;$k$3$H$,$G$-$^$9!#:GNI$N>l9g$K$O%5!<%PBf?t$KHfNc$7$?@-G=8~>e$,8+9~$a$^$9!#FC$KB??t$N%f!<%6$,BgNL$NLd$$9g$o$;$rEj$2$k$h$&$J4D6-$G0RNO$rH/4x$7$^$9!#(B

  • $B@\B3?t$N@)8B(B

    PostgreSQL$B$K@\B32DG=$J%;%C%7%g%s?t$K$O>e8B$,$"$j!"$=$l$rD6$($F@\B3$9$k$3$H$O$G$-$^$;$s!#$+$H8@$C$F!"F1;~%;%C%7%g%s?t$r$`$d$_$KB?$/$9$k$H!"%a%b%j!<$J$I$N%j%=!<%9$,B?$/>CHq$5$l$F%Q%U%)!<%^%s%9$K1F6A$,$"$j$^$9!#(Bpgpool-II$B$G$b%/%i%$%"%s%H$+$i$N@\B3?t$K$O>e8B$,$"$j$^$9$,!"$=$l$rD6$($F$b$?$@$A$K%(%i!<$K$J$k$3$H$O$J$/!"0lDj$N4VBT$?$5$l$k$h$&$K$J$C$F$$$^$9!#$7$?$,$C$F!"(Bpgpool-II$B$O(BPostgreSQL$B$X$N@\B3MW5a$r

  • $B%Q%i%l%k%/%(%j(B

    $BJ#?t$N%5!<%P$K%G!<%?$rJ,3d$7$F$l$N%5!<%P$KF1;~$K8!:wLd$$9g$o$;$rEj$2$F!"Ld$$9g$o$;$N=hM};~4V$rC;=L$9$k%Q%i%l%k%/%(%j$,MxMQ$G$-$^$9!#FC$KBg5,LO$J%G!<%?%Y!<%9$KBP$7$F8!:w$r

pgpool-II$B$O(BPostgreSQL$B%P%C%/%(%s%I$H%U%m%s%H%(%s%I$NDL?.%W%m%H%3%k$rM}2r$7$F$=$N4V$rCf7Q$7$^$9!#$9$J$o$A!"(BPostgreSQL$B$N%G!<%?%Y!<%9%"%W%j%1!<%7%g%s$+$i$O(BPostgreSQL$B%5!<%P$K!"(BPostgreSQL$B$+$i$O%G!<%?%Y!<%9%"%W%j%1!<%7%g%s$K8+$($k$h$&$K@_7W$5$l$F$$$^$9!#$=$N$?$a!"(BPostgreSQL$B$=$N$b$N$O$b$A$m$s!"%"%W%j%1!<%7%g%s$N3+H/8@8l$K$h$i$:!"(BPostgreSQL$B$N%G!<%?%Y!<%9%"%W%j%1!<%7%g%s$K$[$H$s$I

$B0lIt$N(BSQL$B$K$O(B$B@)8B;v9`(B$B$,$"$j$^$9!#(B

pgpool-II$B$N2TF/4D6-(B

pgpool-II$B$O!"(BLinux$B$r$O$8$a!"(BSolaris$B$d(BFreeBSD$B$J$I$N$[$H$s$I$N(BUNIX$B4D6-$GF0:n$7$^$9!#(BWindows$B$G$OF0$-$^$;$s!#(B

$BBP1~$9$k(BPostgreSQL$B$N%P!<%8%g%s$O!"(BPostgreSQL$B$N(B6.4$B0J9_$G$9!#$?$@$7%Q%i%l%k%/%(%j%b!<%I$r;HMQ$9$k$H$-$O(BPostgreSQL 7.4$B0J9_$r$*;H$$$/$@$5$$!#(B $B$^$?!"(BPostgreSQL 7.4$B$h$jA0$N%P!<%8%g%s$G$O!";HMQ$G$-$k5!G=$K@)8B;v9`$,$"$j$^$9!#(B $B$b$C$H$b!"$=$N$h$&$J8E$$%P!<%8%g%s$N(BPostgreSQL$B$O$=$b$=$b;H$&$Y$-$G$O$"$j$^$;$s!#(B

pgpool-II$BG[2<$GMxMQ$9$k(BPostgreSQL$B%5!<%P$N%a%8%c!<%P!<%8%g%s$O0lCW$7$F$$$J$1$l$P$J$j$^$;$s!#(B $B$^$?!"%*%s%i%$%s%j%+%P%j5!G=$rMxMQ$9$k$H$-$O!"(BOS$B$d%O!<%I%&%'%"%"!<%-%F%/%A%c$rF1$8$b$N$K$7$J$1$l$P$J$j$^$;$s!#(B

pgpool-II$B$N%$%s%9%H!<%k(B

Linux$BMQ$N(BRPM$B%Q%C%1!<%8$O!"(BCentOS$B!"(BRedHat Enterprise Linux$B!"(BFedora$B!"(BDebian$BMQ$J$I$,Ds6!$5$l$F$$$^$9!#(B $B3:Ev%j%]%8%H%j$r%A%'%C%/$7$F$_$F$/$@$5$$!#(B

pgpool-II $B$N%=!<%9%3!<%I$O(Bpgpool$B3+H/%Z!<%8(B $B$+$i%@%&%s%m!<%I$G$-$^$9!#(B

pgpool-II$B$N%=!<%9%3!<%I$+$i$N%$%s%9%H!<%k$K$O!"(Bgcc 2.9$B0J>e!"$*$h$S(BGNU make$B$,I,MW$G$9!#(B $B$^$?!"(Bpgpool-II$B$O(Blibpq(PostgreSQL$BIUB0$N%/%i%$%"%s%H%i%$%V%i%j(B)$B$r;HMQ$9$k$N$G!"%S%k%I$r9T$&%^%7%s>e$K(Blibpq$B$,%$%s%9%H!<%k$5$l$F$$$k$3$H$,I,MW$G$9!#(B $B$^$?!"(BOpenSSL$B%5%]!<%H$rM-8z$K$9$k>l9g$O!"(BOpenSSL$B%i%$%V%i%j$H3+H/MQ$N%X%C%@!<%U%!%$%k$,I,MW$G$9!#(B

configure$B$N

$B%=!<%9%3!<%I$N(Btar ball$B$rE83+$7$?$i!"(Bconfigure$B$r ./configure configure$B$K;XDj$G$-$k%*%W%7%g%s$O0J2<$G$9!#(B

  • --prefix=path
    pgpool-II$BK\BN$d4XO"%U%!%$%k$r%$%s%9%H!<%k$9$k%H%C%W%G%#%l%/%H%j$r;XDj$7$^$9!#(B $B%G%U%)%k%H$O(B/usr/local$B$G$9!#(B
  • --with-pgsql=path
    PostgreSQL$B$N%/%i%$%"%s%H%i%$%V%i%j$J$I$,%$%s%9%H!<%k$5$l$F$$$k%H%C%W%G%#(B $B%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k%H$O(Bpg_config$B%3%^%s%I$G
  • --with-openssl
    pgpool-II$B$r(BOpenSSL$B%5%]!<%HIU$G:n@.$7$^$9!#(B $B%G%U%)%k%H$G$O(BOpenSSL$B%5%]!<%H$OL58z$G$9!#(B
  • --enable-sequence-lock
    pgpool-II 3.0$B%7%j!<%:(B(3.0.4$B$^$G(B)$B8_49$N(Binsert_lock$B$r;HMQ$7$^$9!#(B pgpool-II$B$O!"%7!<%1%s%9%F!<%V%k$N9T$KBP$7$F%m%C%/$r9T$$$^$9!#(B $B$3$l$O!"(B2011$BG/(B06$B7n$h$j8e$K%j%j!<%9$5$l$?(BPostgreSQL 8.2$B0J9_$G$O;HMQ$G$-$^$;$s!#(B
  • --enable-table-lock
    pgpool-II 2.2$B$H(B2.3$B%7%j!<%:8_49$N(Binsert_lock$B$r;HMQ$7$^$9!#(B pgpool-II$B$O!"A^F~BP>]$N%F!<%V%k$KBP$7$F%m%C%/$r9T$$$^$9!#(B $B$3$l$O!"%m%C%/$,(BVACUUM$B$H6%9g$9$k$?$aHs?d>)$G$9!#(B

make$B$N

make
make install

pgpool_regclass$B$N%$%s%9%H!<%k(B

PostgreSQL 8.0$B0J9_$r;HMQ$7$F$$$k>l9g$O!"(Bpgpool-II$B$,FbIt$G;HMQ$9$k(BC$B4X?t(Bpgpool_regclass$B$r%$%s%9%H!<%k$7$^$9!#(B $B$3$N4X?t$,%$%s%9%H!<%k$5$l$F$$$J$/$F$b(Bpgpool-II$B$OF0:n$7$^$9$,!"0c$&%9%-!<%^$GF1$8%F!<%V%kL>$rDj5A$7$F$$$F!"(BSQL$BJ8$NCf$G%9%-!<%^L>$r>JN,$7$F$$$k>l9g$K!"IT6q9g$,@8$8$k$3$H$,$"$j$^$9(B($B0l;~%F!<%V%k$r=|$/(B)$B!#(B $B$7$?$,$C$F!"2DG=$J$i$P(Bpgpool_regclass$B$r%$%s%9%H!<%k$9$k$3$H$r$*4+$a$7$^$9!#(B $B$3$N%$%s%9%H!<%k$O!"(Bpgpool-II$B$,%"%/%;%9$9$kM=Dj$N$9$Y$F$N(BPostgreSQL$B%5!<%P$G cd pgpool-II-x.x.x/sql/pgpool-regclass make make install psql -f pgpool-regclass.sql template1 pgpool-regclass.sql$B$N

insert_lock$B%F!<%V%k$N:n@.(B

$B%l%W%j%1!<%7%g%s%b!<%I$G(Binsert_lock$B$rMxMQ$7$?$$>l9g$O!"GSB>@)8fMQ$N%F!<%V%k(Bpgpool_catalog.insert_lock$B$r:n@.$7$^$9!#(B insert_lock$B%F!<%V%k$,B8:_$7$J$/$F$b:#$N$H$3$m(Binsert_lock$B$OF0:n$7$^$9$,!"$=$N>l9g$O!"A^F~BP>]$N%F!<%V%k$KBP$7$F%m%C%/$,9T$o$l$^$9!#$3$l$O(Bpgpool-II 2.2$B$H(B2.3$B%7%j!<%:$NF0:n$HF1$8$G$9!#A^F~BP>]$N%F!<%V%k$KBP$9$k%m%C%/$O!"(BVACUUM$B$H6%9g$7$F(BINSERT$B=hM}$,D9;~4V$,BT$?$5$l$k2DG=@-$,$"$j$^$9!#(B $B$7$?$,$C$F!"(Binsert_lock$B%F!<%V%k$r:n@.$9$k$3$H$r$*4+$a$7$^$9!#(B $B%F!<%V%k$N:n@.$O!"(Bpgpool-II$B$,%"%/%;%9$9$kM=Dj$N$9$Y$F$N(BPostgreSQL$B%5!<%P$G cd pgpool-II-x.x.x/sql psql -f insert_lock.sql template1 insert_lock.sql$B$N

$B0J>e$G%$%s%9%H!<%k$,40N;$7$^$9(B(GNU make$B$,I,MW$J$N$G!"(BSolaris$B$d(BFreeBSD$B$J$I$G$O(B make$B$r(Bgmake$B$KFI$_BX$($F$/$@$5$$(B)$B!#(B

pgpool-II$B$N@_Dj(B

pgpool-II$B$N@_Dj%U%!%$%k$O%G%U%)%k%H$G$O(B/usr/local/etc/pgpool.conf$B$*$h$S(B /usr/local/etc/pcp.conf$B$G$9!#(Bpgpool-II$B$OF0:n%b!<%I$K$h$C$F;HMQ$G$-$k5!G=$H!"(B $BI,MW$J@_Dj9`L\$,0[$J$j$^$9!#(B

$B;HMQ$G$-$k5!G=(B/$B%b!<%I(B raw$B%b!<%I(B(*3) $B%l%W%j%1!<%7%g%s%b!<%I(B $B%^%9%?%9%l!<%V%b!<%I(B $B%Q%i%l%k%/%(%j%b!<%I(B
$B%3%M%/%7%g%s%W!<%j%s%0(B $B!_(B $B!{(B $B!{(B $B!{(B
$B%l%W%j%1!<%7%g%s(B $B!_(B $B!{(B $B!_(B $B"$(B(*1)
$BIi2YJ,;6(B $B!_(B $B!{(B $B!{(B $B"$(B(*1)
$B%U%'%$%k%*!<%P(B $B!{(B $B!{(B $B!{(B $B!_(B
$B%*%s%i%$%s%j%+%P%j(B $B!_(B $B!{(B $B"$(B(*2) $B!_(B
$B%Q%i%l%k%/%(%j(B $B!_(B $B!_(B $B!_(B $B!{(B
$B%5!<%PBf?t(B 1$B0J>e(B 2$B0J>e(B 2$B0J>e(B 2$B0J>e(B
$B%7%9%F%`(BDB $BITMW(B $BITMW(B $BITMW(B $BI,MW(B

  • (*1)$B%Q%i%l%k%/%(%j%b!<%I$G$O!"%l%W%j%1!<%7%g%s$^$?$OIi2YJ,;6$rM-8z$K$9$kI,MW$,$"$j$^$9!#(B $B$?$@$7!"J,3d$7$FJ]B8$7$F$$$k%F!<%V%k$KBP$7$F$O!"%l%W%j%1!<%7%g%s$J$i$S$KIi2YJ,;6$N5!G=$O;HMQ$5$l$^$;$s!#(B
  • (*2)$B%^%9%?!<%9%l!<%V%b!<%I$G$O!"(BStreaming Replication$B$HJ;MQ$9$k$H$-$K$N$_%*%s%i%$%s%j%+%P%j$,2DG=$G$9!#(B
  • (*3)$BC1$K(Bpgpool-II$B$r7PM3$7$F@\B3$9$k$@$1$N%b!<%I$G$9!#(B $B%l%W%j%1!<%7%g%s%b!<%I$b%^%9%?!<%9%l!<%V%b!<%I$bM-8z$K$7$F$$$J$$$H$-$NF0:n$G$9!#(B PostgreSQL$B%5!<%P$X$N@\B3%;%C%7%g%s?t$r@)8B$7$?$j!"(B2$BBf0J>e$N(BPostgreSQL$B%5!<%P$rMQ0U$7$F%U%'%$%k%*!<%PF0:n$r$5$;$?$$$H$-$KMxMQ$7$^$9!#(B

pcp.conf$B$N@_Dj(B

$B$I$NF0:n%b!<%I$G$b!"(Bpcp.conf$B$N@_Dj$OI,MW$G$9!#(Bpgpool-II$B$K$O4IM}pJsZ$,I,MW$K$J$k$N$G!"$=(B $B$N%f!<%6L>$H%Q%9%o!<%I$r(Bpcp.conf$B$KEPO?$7$^$9!#(B pgpool-II$B$r%$%s%9%H!<%k$9$k$H!"(B$prefix/etc/pcp.conf.sample$B$,$G$-$k$N$G!"$=$l$r(B $prefix/etc/pcp.conf$B$H$$$&L>A0$G%3%T!<$7$^$9!#(B

cp $prefix/etc/pcp.conf.sample $prefix/etc/pcp.conf

pcp.conf$B$G$O6uGr9T$d(B#$B$G;O$^$k9T$O%3%a%s%H$H8+$J$5$l$^$9!#(B $B%f!<%6$H%Q%9%o!<%I$O!"(B

$B%f!<%6L>(B:[md5$B0E9f2=$7$?%Q%9%o!<%I(B]

$B$N$h$&$K;XDj$7$^$9!#(B [md5$B0E9f2=$7$?%Q%9%o!<%I(B]$B$O!"(B$prefix/bin/pg_md5$B%3%^%s%I$G:n@.$G$-$^$9!#(B

./pg_md5 foo
acbd18db4cc2f85cedef654fccc4a4d8

$B%Q%9%o!<%I$r0z?t$KEO$7$?$/$J$$>l9g$O(B pg_md5 -p $B$r

./pg_md5 -p
password: <$B%Q%9%o!<%I$rF~NO(B>

pcp.conf$B$O!"(Bpgpool-II$B$rF0:n$5$;$k%f!<%6(BID$B$GFI$_

pgpool.conf$B$N@_Dj(B

$B%5%s%W%k%U%!%$%k(B

pgpool-II$B$r%$%s%9%H!<%k$9$k$H!"%$%s%9%H!<%k@h%G%#%l%/%H%j(B($B%G%U%)%k%H$G$O(B/usr/local)/etc/pgpool.conf.sample$B$,$G$-$k$N$G!"$=$l$r(B $B%$%s%9%H!<%k@h%G%#%l%/%H%j(B/etc/pgpool.conf$B$H$$$&L>A0$G%3%T!<$7$^$9!#(B

cp $B%$%s%9%H!<%k@h%G%#%l%/%H%j(B/etc/pgpool.conf.sample $prefix/etc/pgpool.conf

$B$^$?!"3FF0:n%b!<%IMQ$N%5%s%W%k(Bpgpool.conf$B$,MQ0U$5$l$F$$$^$9!#(B $B$3$A$i$b$4MxMQ2<$5$$!#(B

$BF0:n%b!<%I(B $B%5%s%W%k%U%!%$%kL>(B
$B%l%W%j%1!<%7%g%s%b!<%I(B pgpool.conf.sample-replication
$B%^%9%?!<%9%l!<%V%b!<%I(B(Slony-I) pgpool.conf.sample-master-slave
$B%^%9%?!<%9%l!<%V%b!<%I(B(Streaming replication) pgpool.conf.sample-stream

$B%3%a%s%H$N07$$(B

pgpool.conf$B$G$O6uGr9T$d(B#$B$G;O$^$k9T$O%3%a%s%H$H8+$J$5$l$^$9!#(B

$B6&DL@_Dj9`L\(B

$B3FF0:n%b!<%I$G6&DL$9$k@_Dj9`L\$r@bL@$7$^$9!#(B

listen_addresses

pgpool-II$B$,(BTCP/IP$B%3%M%/%7%g%s$r$^$?$O(BIP$B%"%I%l%9$G(B $B;XDj$7$^$9!#!V(B*$B!W$r;XDj$9$k$H$9$Y$F$N(BIP$B%$%s%?%U%'!<%9$+$i$N%3%M%/%7%g(B $B%s$ro$K

port

pgpool-II$B$,%3%M%/%7%g%s$r

socket_dir

pgpool-II$B$,%3%M%/%7%g%s$r'/var/run'$B$J$I$N%G%#%l%/%H%j$KJQ99$9$k$3$H$r$*4+$a$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

pcp_port

pcp$B$,;HMQ$9$k%]!<%HHV9f$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

pcp_socket_dir

pcp$B$,%3%M%/%7%g%s$r'/var/run'$B$J$I$N%G%#%l%/%H%j$KJQ99$9$k$3$H$r$*4+$a$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

backend_socket_dir
DEPRECATED

$B$3$N%Q%i%a!<%?$O!"(Blibpq$B$N%]%j%7!<$K9g$o$;$F:o=|$5$l$^$9!#(B $BBe$o$j$K(Bbackend_hostname$B%Q%i%a!<%?$r;H$C$F$/$@$5$$!#(B

UNIX$B%I%a%$%s%=%1%C%H7PM3$G(Bpgpool-II$B$,(BPostgreSQL$B$H@\B3$9$k:]$K;HMQ$9$k(B PostgreSQL$B$N(BUNIX$B%I%a%$%s%=%1%C%H$,CV$+$l$F$$$k%G%#%l%/%H%j$G$9!#%G%U%)%k%HCM$O(B/tmp$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

pcp_timeout

pcp$B$,(Bpgppool$B$H@\B3$9$k:]$N%?%$%`%"%&%HCM!#(B0$B$K$9$k$H%?%$%`%"%&%H$7$^$;$s!#(B $B%G%U%)%k%HCM$O(B10($BIC(B)$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

num_init_children

prefork$B$9$k(Bpgpool-II$B$N%5!<%P%W%m%;%9$N?t$G$9!#%G%U%)%k%HCM$O(B32$B$K$J$C$F$$$^$9!#(B $B$3$l$,!"(Bpgpool-II$B$KBP$7$F%/%i%$%"%s%H$,F1;~$K@\B3$G$-$k>e8B$N?t$K$J$j$^$9!#(B $B$3$l$rD6$($?>l9g$O!"$=$N%/%i%$%"%s%H$O!"(Bpgpool-II$B$N$I$l$+$i$N%W%m%;%9$X$N%U%m%s%H%(%s%I$N@\B3$,=*N;$9$k$^$GBT$?$5$l$^$9(B(PostgreSQL$B$H0c$C$F%(%i!<$K$J$j$^$;$s(B)$B!#(B $BBT$?$5$l$k?t$N>e8B$O!"(B2*num_init_children $B$G$9!#(B $B4pK\E*$K8e=R$N(Bmax_pool*num_init_children$BJ,$@$1(BPostgreSQL$B$X$N%3%M%/%7%g%s$,D%$i$l$^$9$,!"B>$K0J2<$N9MN8$,I,MW$G$9!#(B

  • $BLd$$9g$o$;$N%-%c%s%;%k$r9T$&$HDL>o$N%3%M%/%7%g%s$H$OJL$K?7$?$J%3%M%/%7%g%s$,D%$i$l$^$9!#(B $B$7$?$,$C$F!"$9$Y$F$N%3%M%/%7%g%s$,;HMQCf$N>l9g$OLd$$9g$o$;$N%-%c%s%;%k$,$G$-$J$/$J$C$F$7$^$&$N$G!"$4Cm0U2<$5$$!#(B $BLd$$9g$o$;$N%-%c%s%;%k$rI,$:J]>Z$7$?$$>l9g$O!"A[Dj$5$l$k%3%M%/%7%g%s?t$NG\$NCM$r@_Dj$9$k$3$H$r$*$9$9$a$7$^$9!#(B
  • $B0lHL%f!<%6$G(BPostgreSQL$B$K@\B3$G$-$k$N$O!"(Bmax_connections - superuser_reserved_connections $BJ,$@$1$G$9!#(B

$B0J>e$r$^$H$a$k$H!"(B

max_pool*num_init_children <= (max_connections - superuser_reserved_connections) ($B%/%(%j$N%-%c%s%;%k$r9MN8$7$J$$>l9g(B)
max_pool*num_init_children*2 <= (max_connections - superuser_reserved_connections) ($B%/%(%j$N%-%c%s%;%k$r9MN8$9$k>l9g(B)
$B$N$I$A$i$+$rK~$?$9$h$&$K@_Dj$7$F$/$@$5$$!#(B

$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

child_life_time

pgpool-II$B$N;R%W%m%;%9$NuBV$K$J$C$F$+$i(B child_life_time$BIC7P2a$9$k$H!"0lC6=*N;$7$F?7$7$$%W%m%;%9$r5/F0$7$^$9!#(B $B%a%b%j!<%j!<%/$=$NB>$N>c32$KHw$($?M=KIA

child_max_connections

$B3F(Bpgpool-II$B;R%W%m%;%9$X$N@\B32s?t$,$3$N@_DjCM$rD6$($k$H!"$=$N;R%W%m(B $B%;%9$r=*N;$7$^$9!#(Bchild_life_time$B$d(Bconnection_life_time$B$,8z$+$J$$$/(B $B$i$$K;$7$$%5!<%P$G!"(BPostgreSQL$B%P%C%/%(%s%I$,HnBg2=$9$k$N$rKI$0$N$K(B $BM-8z$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

client_idle_limit

$BA02s%/%i%$%"%s%H$+$iMh$?%/%(%j$+$i!"(Bclient_idle_limit $BIC1[$($F$bl9g$O!"%/%i%$%"%s%H$X$N@\B3$r6/@)E*$K@ZCG$7!"%/%i%$(B $B%"%s%H$+$i$N

authentication_timeout

$BG'>Z=hM}$N%?%$%`%"%&%H;~4V$rICC10L$G;XDj$7$^$9!#(B0 $B$r;XDj$9$k$H%?%$(B $B%`%"%&%H$rL58z$K$7$^$9!#(Bauthentication_timeout $B$N%G%U%)%k%HCM$O(B 60 $B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

logdir

$B$3$N%G%#%l%/%H%j2<$K!"(Bpgpool-II$B$N(BDB$B%N!<%I$N>uBV$r5-O?$9$k(Bpgpool_status$B%U%!%$%k$,=q$+$l$^$9!#(B

log_destination

pgpool-II$B$O!"(Bstderr$B$+(Bsyslog$B$N$I$A$i$+$K%m%0$r=q$/$3$H$,$G$-$^$9!#%G%U%)%k%H$O(Bstderr$B$G$9!#(B

$BCm0U(B:syslog$B$r;H$&>l9g$O!"(Bsyslog$B%G!<%b%s$N@_Dj$rJQ99$9$kI,MW$,$"$j$^$9!#(B Note: you will need to alter the configuration of your system's syslog daemon in order to make use of the syslog option for log_destination. pgpool-II$B$O!"(Bsyslog $B%U%!%7%j%F%#(B LOCAL0 $B$+$i(B LOCAL7 $B$^$G$K%m%0$r=q$/$3$H$,$G$-$^$9(B (syslog_facility$B$r$4Mw$/$@$5$$(B)$B!#(B $B$7$+$7!"$[$H$s$I$N%G%U%)%k%H$N(Bsyslog$B@_Dj$O!"$=$N$h$&$J%a%C%;!<%8$rGQ4~$7$F$7$^$$$^$9!#(B $B$=$3$G!"(Bsyslog$B%G!<%b%s$N0J2<$N$h$&$J@_Dj$,I,MW$K$J$j$^$9!#(B

	local0.*    /var/log/pgpool.log
	

syslog_facility

syslog$B$,M-8z$J>l9g!"$3$N%Q%i%a!<%?$K$h$C$F(Bsyslog$B$N!V%U%!%7%j%F%#!W$r@_Dj$7$^$9!#(B LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7$B$+$iA*Br$7$^$9!#(B $B%G%U%)%k%H$O(B LOCAL0 $B$G$9!#(B $BJ;$;$F(Bsyslog$B%G!<%b%s$N%I%-%e%a%s%H$b$4Mw$/$@$5$$!#(B

syslog_ident

syslog$B$,M-8z$J>l9g!"$3$N%Q%i%a!<%?$K$h$C$F(Bsyslog$B$N%a%C%;!<%8$K$"$i$o$l$k%W%m%0%i%`L>$r@_Dj$7$^$9!#%G%U%)%k%H$O(B"pgpool"$B$G$9!#(B

pid_file_name

pgpool-II$B$N(Bpid file($B%W%m%;%9(BID$B$r3JG<$7$?%U%!%$%k(B)$B$N%U%k%Q%9L>$G$9!#(B $B%G%U%)%k%HCM$O(B'/var/run/pgpool/pgpool.pid'$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

print_timestamp

true$B$J$i$P(Bpgpool-II$B$N%m%0$K%?%$%`%9%?%s%W$rDI2C$7$^$9!#%G%U%)%k%H$O(B true$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

connection_cache

true$B$J$i(BPostgreSQL$B$X$N%3%M%/%7%g%s$r%-%c%C%7%e$7$^$9!#%G%U%)%k%H$O(Btrue$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

health_check_timeout

pgpool-II$B$O%5!<%P>c32$d%M%C%H%o!<%/>c32$r8!CN$9$k$?$a$K!"Dj4|E*$K%P%C(B $B%/%(%s%I$K@\B3$r;n$_$^$9!#$3$l$r!V%X%k%9%A%'%C%/!W$H8@$$$^$9!#>c32(B $B$,8!CN$5$l$k$H!"%U%'%$%k%*!<%P$d=LB`1?E>$r;n$_$^$9!#(B $B$3$N(B $B%Q%i%a!<%?$O!"%M%C%H%o!<%/%1!<%V%k$,H4$1$?:]$J$I$K%X%k%9%A%'%C(B $B%/$,D9;~4VBT$?$5$l$k$N$rKI$0$?$a$N%?%$%`%"%&%HCM$rICC10L$G;XDj$7$^(B $B$9!#%G%U%)%k%H$O(B20$BIC$G$9!#(B0$B$r;XDj$9$k$H%?%$%`%"%&%H=hM}$r$7$^$;$s(B ($B$9$J$o$A(B TCP/IP $B$N%?%$%`%"%&%H$^$GBT$D$3$H$K$J$j$^$9(B)$B!#(B $B$J$*!"%X%k%9%A%'%C%/$rM-8z$K$9$k$H!"%X%k%9%A%'%C%/$N$?$a$NM>J,$N@\(B $BB3$,(B1$B$DI,MW$K$J$j$^$9$N$G!"(BPostgreSQL$B$N(Bpostgresql.conf$B$N@_Dj9`L\$N(B max_connections$B$r>/$/$H$b(B1$BA}$d$9$h$&$K$7$F$/$@$5$$!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

health_check_period

$B%X%k%9%A%'%C%/$r9T$&4V3V$rICC10L$G;XDj$7$^$9!#(B0$B$r;XDj$9$k$H%X%k%9(B $B%A%'%C%/$r9T$$$^$;$s!#%G%U%)%k%H$O(B0$B$G$9(B($B$D$^$j%X%k%9%A%'%C%/$r9T$$(B $B$^$;$s(B)$B!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

health_check_user

$B%X%k%9%A%'%C%/$r9T$&$?$a$N(BPostgreSQL$B%f!<%6L>$G$9!#(B $B$3$N%f!<%6L>$O(BPostgreSQL$B$KEPO?:Q$_$G$J$1$l$P$J$j$^$;$s!#(B $B$5$b$J$$$H!"%X%k%9%A%'%C%/$,%(%i!<$H$J$j$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

health_check_password

$B$3$N%Q%i%a!<%?$O$^$@

failover_command

$B%N!<%I$,@Z$jN%$5$l$?;~$KpJs$KCV$-49$($F%3%^%s%I$r
$BJ8;z(B$B0UL#(B
%d$B@Z$jN%$5$l$?%N!<%IHV9f(B
%h$B@Z$jN%$5$l$?%N!<%I$N%[%9%HL>(B
%H$B?7$7$$%^%9%?!<$N%[%9%HL>(B
%p$B@Z$jN%$5$l$?%N!<%I$N%]!<%HHV9f(B
%D$B@Z$jN%$5$l$?%N!<%I$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B
%M$B8E$$%^%9%?!<$N%N!<%IHV9f(B
%m$B?7$7$$%^%9%?!<$N%N!<%IHV9f(B
%P$B8E$$%W%i%$%^%j%N!<%IHV9f(B
%%'%'$BJ8;z(B
$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

$B%U%'%$%k%*!<%P!<;~$K$O!"(Bpgpool$B$O$^$:;R%W%m%;%9$r@ZCG$7$^$9(B($B7k2L$H$7$F!"$9$Y$F$N%;%C%7%g%s$,@ZCG$5$l$^$9(B)$B!#uBV$K$J$j$^$9!#(B

failback_command

$B%N!<%I$,I|5"$7$?;~$KpJs$KCV$-49$($F%3%^%s%I$r
$BJ8;z(B$B0UL#(B
%d$BI|5"$7$?%N!<%IHV9f(B
%h$BI|5"$7$?%N!<%I$N%[%9%HL>(B
%p$BI|5"$7$?%N!<%I$N%]!<%HHV9f(B
%D$BI|5"$7$?%N!<%I$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B
%M$B8E$$%^%9%?!<$N%N!<%IHV9f(B
%m$B?7$7$$%^%9%?!<$N%N!<%IHV9f(B
%H$B?7$7$$%^%9%?!<$N%[%9%HL>(B
%P$B8E$$%W%i%$%^%j%N!<%IHV9f(B
%%'%'$BJ8;z(B
$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

follow_master_command

$B%^%9%?!<%N!<%I$N%U%'%$%k%*!<%P!<8e$Kl9g$N$_M-8z$G$9!#(B $BFCpJs$KCV$-49$($F%3%^%s%I$r
$BJ8;z(B$B0UL#(B
%d$B@Z$jN%$5$l$?%N!<%IHV9f(B
%h$B@Z$jN%$5$l$?%N!<%I$N%[%9%HL>(B
%p$B@Z$jN%$5$l$?%N!<%I$N%]!<%HHV9f(B
%D$B@Z$jN%$5$l$?%N!<%I$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B
%M$B8E$$%^%9%?!<$N%N!<%IHV9f(B
%m$B?7$7$$%^%9%?!<$N%N!<%IHV9f(B
%H$B?7$7$$%^%9%?!<$N%[%9%HL>(B
%P$B8E$$%W%i%$%^%j%N!<%IHV9f(B
%%'%'$BJ8;z(B
$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

$B6uJ8;zNs0J30$r;XDj$9$k$H!"%^%9%?!<%N!<%I$N%U%'%$%k%*!<%P!<8e$K?7$7$$%^%9%?!<0J30$N$9$Y$F$N%N!<%I$O@Z$jN%$5$l!"%/%i%$%"%s%H$+$i:F$S@\B3$r$l$N%N!<%I$KBP$7$F(Bfollow_master_command$B$K;XDj$7$?%3%^%s%I$,o$O!"$3$3$K(Bpcp_recovery_node$B%3%^%s%I$rAH$_9~$s$@%7%'%k%9%/%j%W%H$J$I$r;XDj$7!"?7$7$$%^%9%?!<$+$i%9%l!<%V$r%j%+%P%j$9$k$?$a$K;HMQ$7$^$9!#(B

fail_over_on_backend_error

true$B$J$i$P!"%P%C%/%(%s%I$N%=%1%C%H$X$N=q$-9~$_$K<:GT$9$k$H%U%'%$%k%*!<%P$7$^$9!#(B $B$3$l$O(Bpgpool-II 2.2.x$B$^$G$N5sF0$HF1$8$G$9!#(B false$B$K$9$k$H!"%U%'%$%k%*!<%P$;$:!"C1$K%(%i!<$,%l%]!<%H$5$l$F%;%C%7%g%s$,@ZCG$5$l$^$9!#(B $B$3$N%Q%i%a!<%?$r(Bfalse$B$K$9$k>l9g$K$O!"(Bhealth check$B$rM-8z$K$9$k$3$H$r$*4+$a$7$^$9!#(B $B$J$*!"$3$N%Q%i%a!<%?$,(Bfalse$B$N>l9g$G$b!"%/%i%$%"%s%H$,(Bpgpool$B$K@\B3$9$k:]$K%P%C%/%(%s%I$X$N@\B3$K<:GT$7$?>l9g!"$"$k$$$O%P%C%/%(%s%I$,%7%c%C%H%@%&%s$5$l$?$3$H$r(Bpgpool-II$B$,8!CN$7$?>l9g$K$O%U%'%$%k%*!<%P$,5/$-$k$3$H$KCm0U$7$F$/$@$5$$!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

ignore_leading_white_space

true$B$J$i$P!"(Bload balance$B$N:]$K(BSQL$BJ89TF,$N6uGr$rL5;k$7$^$9(B($BA43Q%9(B $B%Z!<%9$OL5;k$5$l$^$;$s(B)$B!#$3$l$O!"(BDBI/DBD:Pg$B$N$h$&$K!">!

log_statement

true$B$J$i$P(BSQL$BJ8$r%m%0=PNO$7$^$9!#$3$NLrL\$O(BPostgreSQL$B$N(B log_statement$B%*%W%7%g%s$H;w$F$$$F!"%G%P%C%0%*%W%7%g%s$,$J$$$H$-$G$b(B $BLd$$9g$o$;$r%m%0=PNO$7$FD4$Y$k$3$H$,$G$-$k$N$GJXMx$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

log_per_node_statement

log_statement$B$H;w$F$$$^$9$,!"(BDB$B%N!<%IC10L$G%m%0$,=PNO$5$l$k$N$G!"%l%W%j%1!<%7%g%s$dIi2YJ,;6$N3NG'$,MF0W$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

log_hostname

true$B$J$i$P!"(Bps$B%3%^%s%I$G$N>uBVI=<(;~$K(BIP$B%"%I%l%9$G$O$J$/!"%[%9%HL>(B $B$rI=<($7$^$9!#$^$?!"(Blog_connections$B$,M-8z$J>l9g$K$O%m%0$K%[%9%HL>$r(B $B=PNO$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

log_connections

true$B$J$i$P!"A4$F$N%/%i%$%"%s%H@\B3$r%m%0$X=PNO$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

enable_pool_hba

true$B$J$i$P!"(Bpool_hba.conf$B$K=>$C$F%/%i%$%"%s%HG'>Z$r9T$$$^$9!#(B $B>\:Y$O(B$B%/%i%$%"%s%HG'>Z(B(HBA)$B$N$?$a$N(Bpool_hba.conf$B@_Dj(B $BJ}K!(B$B$r;2>H$7$F$/$@$5$$!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

backend_hostname

$B;HMQ$9$k(BPostgreSQL$B%5!<%P$N%[%9%HL>$r;XDj$7$^$9!#(B pgpool-II$B$O!"$3$N%[%9%HL>$r;H$C$F(BPostgreSQL$B$HDL?.$7$^$9!#(B

TCP/IP$B$r;HMQ$9$k>l9g!"%[%9%HL>$^$?$O(BIP$B%"%I%l%9$r;XDj$G$-$^$9!#(B "/"$B$G;O$^$kJ8;zNs$r;XDj$9$k$H!"(BTCP/IP$B$G$O$J$/!"(BUNIX$B%I%a%$%s%=%1%C%H$r;HMQ$5$l!"(B $B%G%#%l%/%H%jL>$H$_$J$7$F$=$3$K%=%1%C%H%U%!%$%k$,:n@.$5$l$k$3$H$K$J$j$^$9!#(B $B6uJ8;z(B('')$B$r;XDj$9$k$H!"(B/tmp$B2<$K:n@.$7$?(BUNIX$B%I%a%$%s%=%1%C%H$G@\B3$7$^$9!#(B

$Bbackend_hostname0)$B!#(B $B$3$N?t;z$N$3$H$r!V(BDB$B%N!<%I(BID$B!W$H8F$S!"(B0$B$+$i3+;O$7$^$9!#(B DB$B%N!<%I(BID == 0$B$N(BPostgreSQL$B$O!"FCJL$K!V%^%9%?!<(BDB$B!W$H8F$P$l$^$9!#(B $BJ#?t$N(BDB$B%N!<%I$r1?MQ$7$F$$$k>l9g!">r7o$K$h$C$F$O%^%9%?!<(BDB$B$,%@%&%s$7$F$b(B $B1?MQ$rB3$1$k$3$H$,$G$-$^$9!#$3$N>l9g$O!"2TF/Cf$+$D(BDB$B%N!<%I(BID$B$,$b$C$H$b(B $B

$B$?$@$7!"%9%H%j!<%_%s%0%l%W%j%1!<%7%g%s%b!<%I$G1?MQ$7$F$$$k>l9g$O!"(BDB$B%N!<%I(BID$B$,(B0$B$N%N!<%I$K$OFCJL$J0UL#$O$J$/!"%W%i%$%^%j%N!<%I$+$I$&$+$,LdBj$K$J$j$^$9!#(B $B>\:Y$O(BStreaming Replication$B$X$NBP1~(B$B$r$4Mw$/$@$5$$!#(B

1$BBf$7$+(BPostgreSQL$B$r;HMQ$7$J$$>l9g$O!"(B"backend_hostname0"$B$H$7$F$/$@$5$$!#(B

backend_hostname $B$O?7$7$/DI2C$7$?9T$r@_Dj%U%!%$%k:FFI$_9~$_$GDI2C$9$k(B $B$3$H$,$G$-$^$9!#$9$G$K$"$k>pJs$rESCf$GJQ99$9$k$3$H$O$G$-$^$;$s!#JQ99$9(B $B$k>l9g$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

backend_port

$B;HMQ$9$k(BPostgreSQL$B%5!<%P$N%]!<%HHV9f$r;XDj$7$^$9!#(B $Bl9g$O!"(B "backend_port0"$B$H$7$F$/$@$5$$!#(B

backend_port $B$O?7$7$/DI2C$7$?9T$r@_Dj%U%!%$%k:FFI$_9~$_$GDI2C$9$k(B $B$3$H$,$G$-$^$9!#$9$G$K$"$k>pJs$rESCf$GJQ99$9$k$3$H$O$G$-$^$;$s!#JQ99$9(B $B$k>l9g$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

backend_weight

$B;HMQ$9$k(BPostgreSQL$B%5!<%P$KBP$9$kIi2YJ,;6$NHfN($r(B0$B0J>e$N@0?t$^$?$OIbF0>.?tE@$G;XDj$7$^$9!#(B "backend_weight"$B$N8e$K$O!"(BDB$B%N!<%I(BID$B$rIU2C$7$F;HMQ$9$kJ#?t$N(BPostgreSQL$B$r6hJL$7$^$9!#(B 1$BBf$7$+(BPostgreSQL$B$r;HMQ$7$J$$>l9g$O!"(B"backend_weight0"$B$H$7$F$/$@$5$$!#(B $BIi2YJ,;6$r;HMQ$7$J$$>l9g$O!"!V(B1$B!W$r@_Dj$7$F$/$@$5$$!#(B

backend_weight $B$O?7$7$/DI2C$7$?9T$r@_Dj%U%!%$%k:FFI$_9~$_$GDI2C$9$k$3$H$,$G$-$^$9!#(B pgpool-II 2.2.6/2.3$B0J9_$G$O!"@_Dj%U%!%$%k$N:FFI9~$G(Bbackend_weight$BCM$rJQ99$G$-$^$9!#(B $B?7$7$/@\B3$7$?%/%i%$%"%s%H%;%C%7%g%s$+$i!"$3$N?7$7$$(Bweight$BCM$,H?1G$5$l$^$9!#(B $B%^%9%?!<%9%l!<%V%b!<%I$K$*$$$F!"$"$k%9%l!<%V$KBP$7$F4IM}6HL3$re!"Ld$$9g$o$;$,$=$N%9%l!<%V$KAw$i$l$k$N$rKI$.$?$$>l9g$KM-MQ$G$9!#(B

backend_data_directory

$B;HMQ$9$k(B PostgreSQL $B%5!<%P$N%G!<%?%Y!<%9%/%i%9%?$N%Q%9$r;XDj$7$^$9!#(B $Bl9g$K$O@_Dj$9$kI,MW$O$"$j$^$;$s!#(B

backend_data_directory $B$O?7$7$/DI2C$7$?9T$r@_Dj%U%!%$%k:FFI$_9~$_$GDI2C$9$k(B $B$3$H$,$G$-$^$9!#$9$G$K$"$k>pJs$rESCf$GJQ99$9$k$3$H$O$G$-$^$;$s!#JQ99$9(B $B$k>l9g$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

backend_flag

$B%P%C%/%(%s%IC10L$G$NMM!9$J5sF0$r@)8f$9$k%U%i%0$G$9!#(B $Bbackend_flag0 $BJ#?t$N%U%i%0$r(B"|"$B$GO"7k$7$F;XDj$9$k$3$H$,$G$-$^$9!#(B $B8=:_0J2<$N$b$N$,$"$j$^$9!#(B

ALLOW_TO_FAILOVER
$B%U%'%$%k%*!<%P$d%G%?%C%A$,2DG=$K$J$j$^$9!#$3$l$,%G%U%)%k%H$NF0:n$G$9!#(B DISALLOW_TO_FAILOVER$B$HF1;~$K$O;XDj$G$-$^$;$s!#(B
DISALLOW_TO_FAILOVER
$B%U%'%$%k%*!<%P$d%G%?%C%A$,9T$o$l$^$;$s!#(B Hheartbeat$B$d(BPacemaker$B$J$I$N(BHA(High Availability)$B%=%U%H$G%P%C%/%(%s%I$rFs=E2=$7$F$$$k$J$I$N;v>p$G!"(B pgpool-II$BB&$G%U%'%$%k%*!<%P$N@)8f$r$7$FM_$7$/$J$$$H$-$J$I$K;XDj$7$^$9!#(B ALLOW_TO_FAILOVER$B$HF1;~$K$O;XDj$G$-$^$;$s!#(B

$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

ssl

true$B$J$i$P(Bpgpool-II$B$H%U%m%s%H%(%s%I!"(Bpgpool-II$B$H%P%C%/%(%s%I$N4V$N(BSSL$B@\B3$,2DG=$K$J$j$^$9!#(B $B$J$*!"(Bpgpool-II$B$H%U%m%s%H%(%s%I$N@\B3$K(BSSL$B$,MxMQ$G$-$k$?$a$K$O!"(Bssl_key$B$H(Bssl_cert$B$,@_Dj$5$l$F$J$1$l$P$J$j$^$;$s!#(B

$B%G%U%)%k%H$G$O(BSSL$B%5%]!<%H$O%*%U$K$J$C$F$$$^$9!#(BSSL$B%5%]!<%H$rM-8z$K$9$k$?$a$K$O!"(Bconfigure$B;~$K(BOpenSSL$B%5%]!<%H$rM-8z$K$9$kI,MW$,$"$j$^$9!#>\:Y$O(B$B%$%s%9%H!<%k(B$B$N9`L\$r$4Mw2<$5$$!#(B

ssl$B$rM-8z$K@_Dj$7$?$i!"(Bpgpool$B$N:F5/F0$r$7$F$/$@$5$$!#(B

ssl_key

$B%U%m%s%H%(%s%I$H$N@\B3$K;HMQ$9$k%W%i%$%Y!<%H%-!<%U%!%$%k$N%U%k%Q%9$r;XDj$7$^$9!#(B

ssl_key$B$N%G%U%)%k%HCM$O$"$j$^$;$s!#(B ssl_key$B$N@_Dj$,$J$$>l9g$O!"%U%m%s%H%(%s%I$H$N@\B3$G(BSSL$B$,;HMQ$5$l$J$/$J$j$^$9!#(B

ssl_cert

$B%U%m%s%H%(%s%I$H$N@\B3$K;HMQ$9$k8x3+(Bx509$B>ZL@=q$N%U%k%Q%9$r;XDj$7$^$9!#(B

ssl_cert$B$N%G%U%)%k%HCM$O$"$j$^$;$s!#(B ssl_cert$B$N@_Dj$,$J$$>l9g$O!"%U%m%s%H%(%s%I$H$N@\B3$G(BSSL$B$,;HMQ$5$l$J$/$J$j$^$9!#(B

debug_level

$B%G%P%C%0%a%C%;!<%8$N>\:Y%l%Y%k!#(B0$B$G%G%P%C%0%a%C%;!<%8$N=PNO$J$7!#(B 1$B0J>e$G%G%P%C%0%a%C%;!<%8$r=PNO$7$^$9!#(B $B?t;z$,Bg$-$1$l$P$h$j>\:Y$J%a%C%;!<%8$,=PNO$5$l$k$h$&$K$J$j$^$9(B(3.0$B$G$O:#$N$H$3$m%a%C%;!<%8$N>\:YEY$OJQ$j$^$;$s(B)$B!#(B $B%G%U%)%k%HCM$O(B0$B$G$9!#(B

relcache_expire

$B%j%l!<%7%g%s%-%c%C%7%e$Nl9g$,$"$j!"%j%l!<%7%g%s%-%c%C%7%e$NFbMF$H0lCW$7$J$/$J$k62$l$,$"$j$^$9!#(B relcache_expire$B$K$h$j!"$=$N4m81@-$r%3%s%H%m!<%k$G$-$k$h$&$K$J$j$^$9!#(B

SSL$B>ZL@=q$N@8@.(B

$B>ZL@=q$N07$$$K$D$$$F$O$3$N%^%K%e%"%k$NHO0O30$G$9!#(B PostgreSQL$B%I%-%e%a%s%H(BSSL$B$K$h$k0BA4$J(BTCP/IP$B@\B3(B$B$N>O$K<+J,$GG'>Z$9$k>ZL@=q$r:n@.$9$k%3%^%s%I$NNc$,$"$j$^$9!#(B

raw$B%b!<%I$K$*$1$k%U%'%$%k%*!<%PF0:n$K$D$$$F(B

raw$B%b!<%I$K$*$$$F!"(B2$BBf0J>e$N(BPostgreSQL$B%5!<%P$r;XDj$9$k$H!"%U%'%$%k%*!<%P(B $B$,2DG=$G$9!#%U%'%$%k%*!<%P$G$O!"@5>o;~$K$O(Bbackend_hostname0$B$G;XDj$7$?(B PostgreSQL$B$N$_$r;HMQ$7!"$[$+$N%5!<%P$K$O%"%/%;%9$7$^$;$s!#(B backend_hostname0$B$N%5!<%P$,%@%&%s$9$k$H!"

$B%3%M%/%7%g%s%W!<%k%b!<%I(B

raw$B%b!<%I$K2C$(!"%3%M%/%7%g%s%W!<%j%s%0$,MxMQ$G$-$k$h$&$K$J$j$^$9!#(B $B%3%M%/%7%g%s%W!<%k%b!<%I$rM-8z$K$9$k$K$O!"(B connection_cache $B$r(Bon$B$K$7$^$9!#(B $B0J2<$N@_Dj9`L\$,%3%M%/%7%g%s%W!<%k$NF0:n$K1F6A$rM?$($^$9!#(B

max_pool

pgpool-II$B$N3F%5!<%P%W%m%;%9$,%-!<%W$9$k(BPostgreSQL$B$X$N:GBg%3%M%/%7%g%s(B $B?t$G$9!#(Bpgpool-II$B$O!"%f!<%6L>!"%G!<%?%Y!<%9$,F1$8$J$i$P%3%M%/%7%g%s$r(B $B:FMxMQ$7$^$9$,!"$=$&$G$J$1$l$P?7$?$K(BPostgreSQL$B$X$N%3%M%/%7%g%s$r3N(B $BN)$7$h$&$H$7$^$9!#$7$?$,$C$F!"$3$3$G$OA[Dj$5$l$k(B[$B%f!<%6L>(B:$B%G!<%?%Y!<(B $B%9L>(B]$B$N%Z%"$Nl9g$O0lHV8E$$%3%M%/%7%g%s$r@ZCG$7!"(B $B$=$N%9%m%C%H$,:FMxMQ$5$l$^$9!#(B max_pool$B$N%G%U%)%k%HCM$O(B4$B$G$9!#(B $B$J$*!"(Bpgpool-II$BA4BN$H$7$F$O!"(Bnum_init_children*max_pool $BJ,$@$1(B PostgreSQL$B$X$N%3%M%/%7%g%s$,D%$i$l$kE@$KCm0U$7$F$/$@$5$$!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

connection_life_time

$B%3%M%/%7%g%s%W!<%kCf$N%3%M%/%7%g%s$NM-8z4|4V$rICC10L$G;XDj$7$^$9!#(B0 $B$r;XDj$9$k$HM-8z4|4V$OL58B$K$J$j$^$9!#(Bconnection_life_time$B$N%G%U%)(B $B%k%HCM$O(B0$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

reset_query_list

$B%;%C%7%g%s$,=*N;$9$k$H$-$K%3%M%/%7%g%s$r=i4|2=$9$k$?$a$N(BSQL$B%3%^%s%I(B $B$r!V(B;$B!W$G6h@Z$C$FNs5s$7$^$9!#%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9$,!"(B $BG$0U$N(BSQL$BJ8$rDI2C$7$F$b9=$$$^$;$s!#(B

   reset_query_list = 'ABORT; DISCARD ALL'

PostgreSQL$B$N%P!<%8%g%s$K$h$C$F;HMQ$G$-$k(BSQL$B%3%^%s%I$,0c$$$^$9!#(B $B3F%P!<%8%g%s$4$H$N$*4+$a@_Dj$O0J2<$G$9(B($B$?$@$7!"(B"ABORT"$B$OI,$:%3%^%s%I$K4^$a$F$/$@$5$$(B)$B!#(B

PostgreSQL$B%P!<%8%g%s(Breset_query_list$B$N?d>)@_DjCM(B
7.1$B0JA0(BABORT
7.2$B$+$i(B8.2ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT
8.3$B0J9_(BABORT; DISCARD ALL

  • $B!V(BABORT$B!W$O!"(BPostgreSQL 7.4$B0J>e$G$O%H%i%s%6%/%7%g%s%V%m%C%/$NCf$K$$(B $B$J$$>l9g$K$OH/9T$5$l$^$;$s!#(B

$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

$B%3%M%/%7%g%s%W!<%k%b!<%I$K$*$1$k%U%'%$%k%*!<%PF0:n$K$D$$$F(B

raw$B%b!<%I$HF1MM$NF0:n$r$7$^$9!#(B

$B%l%W%j%1!<%7%g%s%b!<%I(B

$B%l%W%j%1!<%7%g%s$rM-8z$K$9$k%b!<%I$G$9(B($B@_Dj%U%!%$%k$N?w7A$O(Bpgpool.conf-replication)$B!#(B raw$B%b!<%I!"%3%M%/%7%g%s%W!<%k%b!<%I$K2C$(!"0J2<$r@_Dj$7$^$9!#(B

replication_mode

$B%l%W%j%1!<%7%g%s%b!<%I$GF0:n$5$;$k>l9g$O(Btrue$B$r;XDj$7$F$/$@$5$$!#%G(B $B%U%)%k%HCM$O(Bfalse$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

load_balance_mode

true$B$r;XDj$9$k$H%l%W%j%1!<%7%g%s%b!<%I$^$?$O%^%9%?!<%9%l!<%V%b!<%I$N:]$K!"(BSELECT$BJ8$r%m!<%I%P%i%s%9$7$F8!:w@-G=$r8~>e$5$;$k$3$H$,$G$-$^$9!#%G%U%)%k%HCM$O(Bfalse$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

replication_stop_on_mismatch

$B3F(BDB$B%N!<%I$+$iAw$i$l$F$/$k%Q%1%C%H$Nl9g$K!"(BDB$B%N!<%I$r@Z$jJ|$7$F=LB`1?E>$KF~$j$^$9!#(B $BNI$/$"$k%1!<%9$H$7$F$O!"(Breplicate_select$B$,;XDj$5$l$F$$$F(BSELECT$B$,3F(BDB$B%N!<%I$G$N(BDB$B%N!<%I$G$O<:GT$7$?>l9g$,0lNc$G$9(B)$B!#(B $B$?$@$7!"(Bpgpool$B$O%Q%1%C%H$NCf?H$^$G$O%A%'%C%/$7$F$$$J$$$N$G!"(BSELECT$B7k2L$N%G!<%?FbMF$,0[$J$C$F$$$F$b!"=LB`$O5/$-$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B $B=LB`BP>]$N(BDB$B%N!<%I$O!VB??t7h!W$G>/?tGI$K$J$C$?$b$N$,BP>]$K$J$j$^$9!#(B $B$b$7B??t7h$GF1I<$K$J$C$?>l9g$O!"%^%9%?(BDB$B%N!<%I(B(DB$B%N!<%IHV9f$,$b$C$H$b$o$+$$$b$N(B)$B$r4^$`%0%k!<%W$,M%@h$5$l!"$=$l0J30$N%0%k!<%W$K=jB0$9$k(BDB$B%N!<%I$,@Z$jJ|$7$NBP>]$K$J$j$^$9!#(B $B$3$N%*%W%7%g%s$,(Bfalse$B$N>l9g$O!"3:Ev$N%;%C%7%g%s$r6/@)E*$K=*N;$9$k$@$1$KN1$a$^$9!#(B $B%G%U%)%k%HCM$O(Bfalse$B$G$9!#(B

failover_if_affected_tuples_mismatch

$B3F(BDB$B%N!<%I$Gl9g$K!"(BDB$B%N!<%I$r@Z$jJ|$7$F=LB`1?E>$KF~$j$^$9!#(B $B=LB`BP>]$N(BDB$B%N!<%I$O!VB??t7h!W$G>/?tGI$K$J$C$?$b$N$,BP>]$K$J$j$^$9!#(B $B$b$7B??t7h$GF1I<$K$J$C$?>l9g$O!"%^%9%?(BDB$B%N!<%I(B(DB$B%N!<%IHV9f$,$b$C$H$b$o$+$$$b$N(B)$B$r4^$`%0%k!<%W$,M%@h$5$l!"$=$l0J30$N%0%k!<%W$K=jB0$9$k(BDB$B%N!<%I$,@Z$jJ|$7$NBP>]$K$J$j$^$9!#(B $B$3$N%*%W%7%g%s$,(Bfalse$B$N>l9g$O!"3:Ev$N%;%C%7%g%s$r6/@)E*$K=*N;$9$k$@$1$KN1$a$^$9!#(B $B%G%U%)%k%HCM$O(Bfalse$B$G$9!#(B

white_function_list

$B%G!<%?%Y!<%9$KBP$7$F(B$B99?7$r9T$J$o$J$$4X?tL>(B$B$r%3%s%^6h@Z$j$G;XDj$7$^$9!#(B $B$3$N%j%9%H$K4^$^$l$J$$4X?t8F$S=P$7$r4^$`(BSELECT$B$O!"Ii2YJ,;6$NBP>]$H$O$J$i$:!"%l%W%j%1!<%7%g%s%b!<%I$K$*$$$F$O$9$Y$F$N(BDB$B%N!<%I$G

$B4X?tL>$K$O@55,I=8=$r;H$&$3$H$,$G$-$^$9!#(B $B$?$H$($P!"FI$_=P$7$N$_$N4X?t$,(B"get_"$B$"$k$$$O(B"select_"$B$G;O$^$k$J$i$P!"0J2<$N$h$&$J;XDj$,2DG=$G$9!#(B

white_function_list = 'get_.*,select_.*'
black_function_list

$B%G!<%?%Y!<%9$KBP$7$F(B$B99?7$r9T$J$&4X?tL>(B$B$r%3%s%^6h@Z$j$G;XDj$7$^$9!#(B $B$3$N%j%9%H$K4^$^$l$k4X?t8F$S=P$7$r4^$`(BSELECT$B$O!"Ii2YJ,;6$NBP>]$H$O$J$i$:!"%l%W%j%1!<%7%g%s%b!<%I$K$*$$$F$O$9$Y$F$N(BDB$B%N!<%I$G]$H$J$j$^$9!#(B

$B4X?tL>$K$O@55,I=8=$r;H$&$3$H$,$G$-$^$9!#(B $B$?$H$($P!"FI$_=P$7$N$_$N4X?t$,(B"set_"$B!"(B"update_"$B!"(B"delete_"$B$"$k$$$O(B"insert_"$B$G;O$^$k$J$i$P!"0J2<$N$h$&$J;XDj$,2DG=$G$9!#(B

black_function_list = 'nextval,setval,set_.*,update_.*,delete_.*,insert_.*'

white_function_list$B$H(Bblack_function_list$B$NN>J}$r6u0J30$K$9$k$3$H$O$G$-$^$;$s!#(B $B$I$A$i$+0lJ}$N$_$K4X?tL>$r;XDj$7$^$9!#(B

pgpool-II 3.0$B$h$jA0$N%P!<%8%g%s$G$O!"8GDj$G(Bnextval$B$H(Bsetval$B$,=q$-9~$_$r9T$J$&4X?t$H$7$FG'<1$5$l$F$$$^$7$?!#(B $B$=$l$HF1$8F0:n$r9T$J$o$;$k$K$O!"0J2<$N$h$&$K(Bwhite_function_list$B$H(Bblack_function_list$B$r;XDj$7$^$9!#(B

white_function_list = ''
black_function_list = 'nextval,setval,lastval,currval'

$B>e$NNc$G$O!"(Bnextval$B$H(Bsetval$B$K2C$(!"(Blastval$B$H(Bcurrval$B$,DI2C$5$l$F$$$k$3$H$KCm0U$7$F$/$@$5$$!#(B lastval$B$H(Bcurrval$B$O=q$-9~$_$r9T$&4X?t$G$O$"$j$^$;$s$,!"$3$l$i$N4X?t$,Ii2YJ,;6$5$l$k$3$H$K$h$C$F!"%(%i!<$,H/@8$9$k$N$rL$A3$KKI$0$3$H$,$G$-$^$9!#(B black_function_list$B$K4^$^$l$k4X?t$OIi2YJ,;6$5$l$J$$$+$i$G$9!#(B

replicate_select

true $B$r@_Dj$9$k$H!"%l%W%j%1!<%7%g%s%b!<%I$G$O(B SELECT $BJ8$r%l%W%j%1!<%7%g%s$7$^$9!#$3$l$O(B pgpool-II 1.0 $B$^$G$N5sF0$HF1$8$K$J$j$^$9!#(Bfalse $B$r@_Dj$9$k$H(B SELECT $BJ8$r%^%9%?$N$_$KAw?.$7$^$9!#%G%U%)%k%HCM$O(B false $B$G$9!#(B

replicate_select$B!"(Bload_balance_mode$B!"(BSELECT$BLd9g$o$;$,L@<(E*$J%H%i%s%6%/%7%g%s%V%m%C%/$NFbB&$K$"$k$+$I$&$+$I$&$+$G!"%l%W%j%1!<%7%g%s%b!<%I$NF0:n$,JQ2=$7$^$9!#>\:Y$rI=$K<($7$^$9!#(B

SELECT$B$,L@<(E*$J%H%i%s%6%/%7%g%s%V%m%C%/$NFbB&$K$"$k(B Y Y Y N N N Y N
replicate_select$B$,(Btrue Y Y N N Y Y N N
load_balance_mode$B$,(Btrue Y N N N Y N Y Y
$B7k2L(B(R:$B%l%W%j%1!<%7%g%s(B, M: $B%^%9%?$N$_$KAw?.(B, L: $B%m!<%I%P%i%s%9$5$l$k(B) R R M M R R M L

insert_lock

SERIAL$B7?$r;H$C$F$$$k%F!<%V%k$r%l%W%j%1!<%7%g%s$9$k$H!"(BSERIAL$B7?$NNs(B $B$NCM$,(BDB$B%N!<%I$N4V$G0lCW$7$J$/$J$k$3$H$,$"$j$^$9!#$3$NLdBj$O!"(B $B3:Ev%F!<%V%k$rL@<(E*$K%m%C%/$9$k$3$H$G2sHr$G$-$^$9(B($B$b$A$m$s%H%i%s%6(B $B%/%7%g%s$NJBNs@7$K$J$j$^$9$,(B)$B!#$7$+$7!"$=$N$?$a$K$O!"(B

   INSERT INTO ...

$B$r(B

   BEGIN;
   LOCK TABLE ...
   INSERT INTO ...
   COMMIT;

$B$K=q$-49$($J$1$l$P$J$j$^$;$s!#(Binsert_lock$B$r(Btrue$B$K$9$k$H<+F0E*$K%H%i(B $B%s%6%/%7%g%s$N3+;O!"%F!<%V%k%m%C%/!"%H%i%s%6%/%7%g%s$N=*N;$r9T$C$F(B $B$/$l$k$N$G!"$3$&$7$?J$/$3$H$,$G$-$^$9!J$9$G$K%H%i%s%6%/%7%g(B $B%s$,3+;O$5$l$F$$$k>l9g$O(BLOCK TABLE...$B$@$1$,

pgpool-II 2.2$B0J9_$O!"%F!<%V%k$,(BSERIAL$BNs$r;}$D$+$I$&$+<+F0H=JL$9$k$?$a!"(BSERIAL$BNs$,$J$1$l$P7h$7$F%F!<%V%k$r%m%C%/$7$^$;$s!#(B

pgpool-II 3.0.4$B$^$G$N(B3.0$B%7%j!<%:$O!"BP1~$9$k%7!<%1%s%9%F!<%V%k$KBP$7$F9T%m%C%/$r$+$1$k$3$H$GGSB>@)8f$r9T$J$$$^$9!#$=$l0JA0$N%P!<%8%g%s$HHf$Y$k$H!"(BVACUUM(autovacuum$B$r4^$`(B)$B$H$N%m%C%/6%9g$,$J$/$J$k%a%j%C%H$,$"$j$^$9!#$7$+$7!"$3$l$OB>$NLdBj$r0z$-5/$3$7$^$9!#%H%i%s%6%/%7%g%s<~2s$,5/$-$?8e!"%7!<%1%s%9%F!<%V%k$KBP$9$k9T%m%C%/$O(BPostgreSQL$B$NFbIt%(%i!<(B($B>\:Y$K$O!"%H%i%s%6%/%7%g%s>uBV$rJ];}$9$k(Bpg_clog$B$X$N%"%/%;%9%(%i!<(B)$B$r5/$3$7$^$9!#$3$l$rKI$0$?$a!"(BPostgreSQL$B$N%3%"3+H/

pgpool-II 3.0.5$B0J9_$G$O!"?7$7$$(BPostgreSQL$B$,%7!<%1%s%9%F!<%V%k$KBP$9$k%m%C%/$r5v2D$7$J$/$J$C$?$?$a!"(Bpgpool_catalog.insert_lock$B%F!<%V%k$KBP$7$F9T%m%C%/$r$+$1$k$3$H$GGSB>@)8f$r9T$J$$$^$9!#$7$?$,$C$F!"(Bpgpool-II$B7PM3$G%"%/%;%9$9$k$9$Y$F$N%G!<%?%Y!<%9$K(Binsert_lock$B%F!<%V%k$r$"$i$+$8$a:n@.$7$F$*$/I,MW$,$"$j$^$9!#>\:Y$O(Binsert_lock$B%F!<%V%k$N:n@.(B$B$N9`L\$r$4Mw$/$@$5$$!#$b$7!"(Binsert_lock$B%F!<%V%k$,B8:_$7$J$$>l9g$O!"A^F~BP>]$N%F!<%V%k$KBP$7$F%m%C%/$r9T$$$^$9!#$3$l$O!"(Bpgpool-II 2.2$B$H(B2.3$B%7%j!<%:$N(Binsert_lock$B$HF1$8F0:n$G$9!#$^$?!"2a5n$N%P!<%8%g%s$H8_49@-$N$"$k(Binsert_lock$B$r;HMQ$7$?$$>l9g$O!"(Bconfigure$B%9%/%j%W%H$G@_Dj$G$-$^$9!#>\:Y$O(Bconfigure$B$N$B$N9`L\$r$4Mw2<$5$$!#(B

$B$J$*!"$"$^$jI,MW$J$$$+$bCN$l$^$;$s$,!"%3%a%s%H$rMxMQ$7$F!"$3$N5sF0$r(B $B:Y$+$/@)8f$9$k$3$H$b$G$-$^$9!#(B

  1. insert_lock$B$r(Btrue$B$K$7$F!"(BINSERT$BJ8$N@hF,$K(B/*NO INSERT LOCK*/$B%3%a%s%H$rDI2C$9$k!#(B $B$3$N%3%a%s%H$,$"$k$H!"%F!<%V%k%m%C%/$O9T$o$l$^$;$s(B(pgpool-II 3.0$B0J9_$G$bF1MM(B)$B!#(B
  2. insert_lock$B$r(Bfalse$B$K$7$F!"(BINSERT$BJ8$N@hF,$K(B/*INSERT LOCK*/$B%3%a%s%H$rDI2C$9$k!#(B $B$3$N%3%a%s%H$,$"$k$H!"$3$N(BINSERT$BJ8$KBP$7$F$N$_%F!<%V%k%m%C%/$,9T$o$l$^$9(B(pgpool-II 3.0$B0J9_$G$bF1MM(B)$B!#(B

insert_lock$B$N%G%U%)%k%HCM$O(Btrue$B$G$9!#(B $B$J$*!"(Binsert_lock$B$rM-8z$K$7$F(Bregression test$B$r/$/$H$b(B PostgreSQL 8.0$B$G$O(Btransactions, privileges, rules, alter_table$B$,(B fail$B$7$^$9!#(Brule$B$G$O!"(Bview$B$KBP$7$F(BLOCK$B$r$7$h$&$H$7$F$7$^$&$3$H!"(B $B$[$+$N$b$N$O(B

   ! ERROR:  current transaction is aborted, commands ignored until end of transaction block

$B$H$$$&$h$&$J%a%C%;!<%8$,=P$F$7$^$&$?$a$G$9!#$?$H$($P!"(Btransactions $B$G$O!"B8:_$7$J$$%F!<%V%k$KBP$7$F(BINSERT$B$r9T$&%F%9%H$,4^$^$l$F$*$j!"(B pgpool$B$,:G=i$KB8:_$7$J$$%F!<%V%k$KBP$7$F(BLOCK$B$r9T$&7k2L!"%(%i!<$K$J$C(B $B$F%H%i%s%6%/%7%g%s$,%"%\!<%H>uBV$K$J$j!"B3$/(BINSERT$B$G>e5-%(%i!<$,=P(B $B$F$7$^$$$^$9!#(B

$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

recovery_user

$B%*%s%i%$%s%j%+%P%j$r9T$&$?$a$N(B PostgreSQL $B%f!<%6L>$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

recovery_password

$B%*%s%i%$%s%j%+%P%j$r9T$&$?$a$N(B PostgreSQL $B%f!<%6%Q%9%o!<%I$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

recovery_1st_stage_command

$B%*%s%i%$%s%j%+%P%jCf$K5/F0$9$k%3%^%s%IL>$r;XDj$7$^$9!#(B $B$3$N%9%/%j%W%H$O(BPostgreSQL$B$N%^%9%?%5!<%P(B($B%W%i%$%^%j%5!<%P(B)$B$,5/F0$7$^$9!#(B $B%3%^%s%I%U%!%$%k$O%;%-%e%j%F%#>e$N4QE@$+$i%G!<%?%Y!<%9%/%i%9%?0J2<$K$"$k%3%^%s%I$d%9%/%j%W%H$N$_$r8F$S=P$7$^$9!#(B $BNc$($P!"(Brecovery_1st_stage_command = 'sync-command' $B$H@_Dj$7$F$"$k>l(B $B9g!"(B$PGDATA/sync-command $B$r5/F0$7$h$&$H$7$^$9!#(B

recovery_1st_stage_command $B$O

  1. $B%^%9%?(B($B%W%i%$%^%j(B)$B%G!<%?%Y!<%9%/%i%9%?$X$N%Q%9(B
  2. $B%j%+%P%jBP>]$N(BPostgreSQL$B$N%[%9%HL>(B
  3. $B%j%+%P%jBP>]$N%G!<%?%Y!<%9%/%i%9%?$X$N%Q%9(B

recovery_1st_stage_command $B$r$B@)8B$7$^$;$s(B$B!#;2>H$d99?7$r9T$&$3$H$,$G$-$^$9!#(B

$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

recovery_2nd_stage_command

2 $B2sL\$N%*%s%i%$%s%j%+%P%jCf$K5/F0$9$k%3%^%s%IL>$r;XDj$7$^$9!#(B $B$3$N%9%/%j%W%H$O(BPostgreSQL$B$N%^%9%?%5!<%P(B($B%W%i%$%^%j%5!<%P(B)$B$,5/F0$7$^$9!#(B $B%3%^%s%I%U%!%$%k$O%;%-%e%j%F%#>e$N4QE@$+$i%G!<%?%Y!<%9%/%i%9%?0J2<$K$"$k%3%^%s%I$d%9%/%j%W%H$N$_$r8F$S=P$7$^$9!#(B $BNc$($P!"(Brecovery_2nd_stage_command = 'sync-command' $B$H@_Dj$7$F$"$k>l(B $B9g!"(B$PGDATA/sync-command $B$r5/F0$7$h$&$H$7$^$9!#(B

recovery_2nd_stage_command $B$O

  1. $B%^%9%?(B($B%W%i%$%^%j(B)$B%G!<%?%Y!<%9%/%i%9%?$X$N%Q%9(B
  2. $B%j%+%P%jBP>]$N(BPostgreSQL$B$N%[%9%HL>(B
  3. $B%j%+%P%jBP>]$N%G!<%?%Y!<%9%/%i%9%?$X$N%Q%9(B

recovery_2nd_stage_command $B$rH!"99?7=hM}$r0l@Z(B$B$B!#$^$?!"%P%C%A(B $B=hM}$J$I$K$h$C$F@\B3$7$F$$$k%/%i%$%"%s%H$,D9;~4VB8:_$7$F$$$k>l9g$K$O(B $B%3%^%s%I$r5/F0$7$^$;$s!#?7$?$J@\B3$r@)8B$7!"8=:_$N@\B3?t$,(B 0 $B$K$J$C$?;~E@(B $B$G%3%^%s%I$r5/F0$7$^$9!#(B

$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

recovery_timeout

pgpool$B$O!"%*%s%i%$%s%j%+%P%j$N:]$K$9$Y$F$N%/%i%$%"%s%H$,@\B3$r=*N;$9$k$^$GBT$A$^$9!#(B recovery_timeout$B$G$=$N:GBgBT$A;~4V$r;XDj$7$^$9!#C10L$OIC$G$9!#(B $BBT$A;~4V$,(Brecovery_timeout$B$r1[$($k$H!"%*%s%i%$%s%j%+%P%j$OCf;_$5$l!"DL>o$N>uBV$KLa$j$^$9!#(B

$B%"%$%I%k>uBV$N%/%i%$%"%s%H$,<+J,$+$i@ZCG$9$k$N$rBT$A$?$/$J$$>l9g$O!"(Bclient_idle_limit_in_recovery$B$rMxMQ$9$k$3$H$b$G$-$^$9!#(B

recovery_timeout$B$O!"$3$NB>!"%*%s%i%$%s%j%+%P%j$N:G8e$K%j%+%P%jBP>]$N(BDB$B%N!<%I$G(Bpostmaster$B$r5/F0$9$k:]$NBT$A;~4V$K$bMxMQ$5$l$^$9!#(B

recovery_timeout$B$N%G%U%)%k%HCM$O(B90$BIC$G$9!#(B recovery_timeout$B$r(B0$B$H$7$F$b%?%$%`%"%&%H$,L58z$K$J$k$o$1$G$O$J$/!"C1$KB(:B$K%?%$%`%"%&%H$9$k$@$1$G$9$N$GCm0U$7$F$/$@$5$$!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

client_idle_limit_in_recovery

client_idle_limit$B$H;w$F$$$^$9$,!"$3$N%Q%i%a!<%?$O%j%+%P%j$N%;%+%s%I%9(B $B%F!<%8$G$N$_8zNO$,$"$j$^$9!#A02s%/%i%$%"%s%H$+$iMh$?%/%(%j$+$i!"(B client_idle_limit_in_recovery $BIC1[$($F$bl9g$O!"%/(B $B%i%$%"%s%H$X$N@\B3$r6/@)E*$K@ZCG$7!"(B $B%j%+%P%j$N%;%+%s%I%9%F!<%8$N?J9T$,K832$5$l$k$N$rKI$.$^$9!#(B -1$B$r;XDj$9$k$H!"D>$A$K%/%i%$%"%s%H$X$N@\B3$r@ZCG$7$F%;%+%s%I%9%F!<%8$KF~$j$^$9!#(B $B%G%U%)%k%HCM$O(B 0($BL58z(B)$B$G$9!#(B

$B%/%i%$%"%s%H$,K;$7$/!"%"%$%I%k>uBV$K$J$i$J$$>l9g$O(Bclient_idle_limit_in_recovery$B$r@_Dj$7$F$b%;%+%s%I%9%F!<%8$K0\9T$G$-$^$;$s!#(B $B$3$N>l9g!"(Bclient_idle_limit_in_recovery$B$K(B-1$B$r@_Dj$9$k$H!"%/%i%$%"%s%H$,%S%8!<$G$"$C$F$b$?$@$A$K%/%i%$%"%s%H$X$N@\B3$r@ZCG$7!"%;%+%s%I%9%F!<%8$K0\9T$9$k$3$H$,$G$-$^$9!#(B

$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B

lobj_lock_table

$B%i!<%8%*%V%8%'%/%H$N%l%W%j%1!<%7%g%s$r9T$$$?$$$H$-$K%m%C%/4IM}$K;H$&$?$a$N%F!<%V%kL>$r;XDj$7$^$9!#(B $B$3$N%F!<%V%k$,;XDj$5$l$F$$$F!"%i!<%8%*%V%8%'%/%H$N:n@.MW5a$,%/%i%$%"%s%H$+$iAw?.$5$l!"(B $B$+$D$=$NMW5a$NCf$K%i!<%8%*%V%8%'%/%H$N(BID$B$NL@<(E*$J;XDj$,4^$^$l$F$$$J$$>l9g(B($B$D$^$j!"(Blo_creat$B$G%i!<%8%*%V%8%'%/%H$r:n@.$9$k>l9g(B)$B!"(B pgpool-II$B$O!"GSB>@)8f$N$?$a$K$3$N%F!<%V%k$r%m%C%/$7$?8e!"(B $B%i!<%8%*%V%8%'%/%H$r3JG<$9$k%7%9%F%`%+%?%m%0(Bpg_largeobject$B$N%i!<%8%*%V%8%'%/%H$K3JG<$5$l$F$$$k(BID$B$N:GBgCM$rZ$5$l$^$9!#(B

$B$3$N$h$&$J=hM}$NBP>]$H$J$k%i!<%8%*%V%8%'%/%H$NA`:n$O!"(BPostgreSQL$B$N(BC$B8@8lMQ$N(BAPI(libpq)$B$G8@$&$H!"(Blo_creat()$B$G$9!#(B 2010$BG/(B2$B7n;~E@$N2f!9$ND4::$G$O!"0J2<$N8@8l$N%i!<%8%*%V%8%'%/%H:n@.(BAPI$B$O!"$9$Y$F(Blo_creat()$B$r8F$S=P$9$+!"(B $B$^$?$O(Blo_creat()$B$HF1$8DL?.%W%m%H%3%k$r;H$C$F$$$k$N$G!"(Bpgpool-II$B$N>e5-$NA`:n$NBP>]$K$J$j!"%i!<%8%*%V%8%'%/%H$N%l%W%j%1!<%7%g%s$,0BA4$K9T$o$l$k$h$&$K$J$j$^$9!#(B

  • Java(JDBC$B%I%i%$%P(B)
  • PHP(pg_lo_create$B4X?t!"$^$?$O(BPDO$B$J$I$N3:Ev(BAPI)
  • psql$B$+$i(B\lo_import$B$r8F$S=P$9>l9g(B

$B>e5-0J30$G$"$C$F$b!"%i!<%8%*%V%8%'%/%H$N:n@.(BAPI$B$G%i!<%8%*%V%8%'%/%H$N(BID$B$r0z?t$H$7$FEO$9$h$&$K$J$C$F$$$J$$$b$N$O4V0c$$$J$/(Blo_creat()$B$r;H$C$F$*$j!"(Bpgpool-II$B$N>e5-$NA`:n$NBP>]$K$J$k$H9M$($FNI$$$G$7$g$&!#(B

pgpool-II$B$N>e5-=hM}$NBP>]$H$J$i$J$$$h$&$J%i!<%8%*%V%8%'%/%H$N:n@.=hM}$O0J2<$N$b$N$G$9!#(B

  • libpq$B$N(Blo_create()$B$r;HMQ$7$F$$$k(B
  • C$B8@8l0J30$N(BAPI$B$G!"(Blo_create()$B$r;HMQ$7$F$$$k$b$N(B
  • $B%P%C%/%(%s%I4X?t$N(Blo_import$B$r(BSELECT$B$G8F$S=P$9>l9g(B
  • $B%P%C%/%(%s%I4X?t$N(Blo_creat$B$r(BSELECT$B$G8F$S=P$9>l9g(B

lobj_lock_table$B$G;XDj$9$k%F!<%V%k$O$I$N$h$&$JDj5A$N$b$N$G$b9=$$$^$;$s$,!"(B $B$"$i$+$8$a:n@.:Q$G$+$D$9$Y$F$N%f!<%6$,=q$-9~$_2DG=$G$J$1$l$P$J$j$^$;$s!#(B $B$=$N$h$&$J%F!<%V%k$r:n$kNc$r<($7$^$9!#(B

CREATE TABLE public.my_lock_table ();
GRANT ALL ON public.my_lock_table TO PUBLIC;

$B$3$NA`:n$O(Bpgpool-II$B7PM3$G@\B3$9$k$9$Y$F$N%G!<%?%Y!<%9$KBP$7$F!"$"$i$+$8$aJ$1$^$9!#(B

lobj_lock_table$B$K;XDj$9$k%F!<%V%kL>$,6uJ8;z$N>l9g$O!"%i!<%8%*%V%8%'%/%H$K4X$9$k>e5-$N=hM}$O9T$$$^$;$s(B ($B$7$?$,$C$F!"%i!<%8%*%V%8%'%/%H$N%l%W%j%1!<%7%g%s$OJ]>Z$5$l$^$;$s(B)$B!#(B lobj_lock_table$B$N%G%U%)%k%HCM$O6uJ8;z$G$9!#(B

$B%m!<%I%P%i%s%9$N>r7o$K$D$$$F(B

load_balance_mode = true $B$r@_Dj$7$?>l9g!"0J2<$N>r7o$N$9$Y$F$rK~$?$7$?;~$K(BSELECT$B$J$I$NLd$$9g$o$;$,%m!<%I%P%i%s%9$5$l$^$9!#(B

  • PostgreSQL$B$N%P!<%8%g%s$,(B7.4$B0J9_$G$"$k(B
  • $BLd$$9g$o$;$,L@<(E*$J%H%i%s%/%6%7%g%s%V%m%C%/$NFbB&$K$J$$(B($B$D$^$j!"(BBEGIN$B$rH/9T$7$F$$$J$$(B)
  • SELECT$BJ8(B(WITH$BIU$b4^$`!#(Bblack_list$B$^$?$O(Bwhite_list$B$G;XDj$5$l$?=q$-9~$_$r4^$`(BSELECT$B$r=|$/(B)$B$^$?$O(BCOPY TO STDOUT, EXPLAIN, EXPLAIN ANALYZE SELECT... $B$N$$$:$l$+$G$"$k(B
  • SELECT INTO $BJ8$G$O$J$$(B
  • SELECT FOR UPDATE/SELECT FOR SHARE$BJ8$G$O$J$$(B
  • $B%/%(%jJ8;zNs$,(B SELECT$B$^$?$O(BWITH $B$G;O$^$k(B(ignore_leading_white_space = true$B$N>l9g$O6uGr$OL5;k$7$^$9(B)

(replicate_select$B$N9`L\(B$B$b;29M$K$7$F$/$@$5$$(B) $B$^$?!"(B$B>\:Y$JH=Dj>r7o$r%U%m!<%A%c!<%H$K$7$?$b$N(B$B$b$4Mw2<$5$$!#(B $B$J$*!"(B

  /*REPLICATION*/ SELECT ...

$B$H$9$k$3$H$K$h$C$F!"K\MhIi2YJ,;6$5$l$?$j!"%^%9%?$N$_$KAw?.$5$l$k$Y$-Ld9g$o$;$,$9$Y$F$N%P%C%/%(%s%I$KAw?.$5$l$k!J%l%W%j%1!<%7%g%s$5$l$k!K$h$&$K$J$j$^$9!#I{:nMQ$,$"$k4X?t$r4^$`Ld9g$o$;$KBP$7$F$O$3$N%F%/%K%C%/$,MxMQ$G$-$^$9!#(B

$BCm0U(B: JDBC $B%I%i%$%P$J$I$N$h$&$K!"%I%i%$%PFb$G(B autocommit $B$NM-8z!&L58z$N%*%W%7%g%s$,$"$k>l9g!"(B autocommit $B$rL58z$K$9$k$H!"%I%i%$%P$,FbIt$G(B BEGIN $B%3%^%s%I$re!"@5$7$/%m!<%I%P%i%s%9$5$l$J$$2DG=@-$,$"$j$^$9!#(B $B%/%(%j$r%m!<%I%P%i%s%9$5$;$?$$>l9g$O(B autocommit $B$rM-8z$K$7$F$/$@$5$$!#(B $B$?$H$($P(BJDBC$B$G$"$l$P(B setAutoCommit(true) $B$r

$B%l%W%j%1!<%7%g%s%b!<%I$K$*$1$k=LB`1?E>$K$D$$$F(B

PostgreSQL$B%5!<%P$N$&$A!"(B1$BBf$,%@%&%s$9$k$H!"$=$N%5!<%P$r@Z$jN%$7$F=LB`1?(B $BE>$KF~$j$^$9!#(B1$BBf$G$b%5!<%P$,@8$-;D$C$F$$$l$P!"%7%9%F%`$H$7$F$N1?MQ$r7Q(B $BB3$G$-$^$9!#(B

$B%l%W%j%1!<%7%g%s%b!<%I8GM-$N%(%i!<$K$D$$$F(B

$B%l%W%j%1!<%7%g%s%b!<%I$K$*$$$F!"(Bpgpool$B$O%l%W%j%1!<%7%g%s;~$K(B INSERT$B!"(BUPDATE$B!"(BDELETE $B$N99?77o?t$,$9$Y$F$N%N!<%I$,F1$8$G$J$$>l9g!"(Bfailover_if_affected_tuples_mismatch $B$,(B false$B$J$i$P!"(B $B0U?^E*$K9=J8%(%i!<$r5/$9(BSQL$B$rAw?.$9$k$3$H$K$h$C$F!"%H%i%s%6%/%7%g%s$r%"%\!<%H$5$;$^$9!#(B true$B$J$i$P!"%U%'%$%k%*!<%P$,5/$-$^$9!#$=$N:]!"0J2<$N$h$&$J%(%i!<%a%C%;!<%8$,I=<($5$l$^$9!#(B

   =# UPDATE t SET a = a + 1;
   ERROR: pgpool detected difference of the number of update tuples Possible last query was: "update t1 set i = 1;"
   HINT: check data consistency between master and other db node
$B%m%0$K$O99$K0J2<$N$h$&$K!"99?79T?t$,5-O?$5$l$^$9(B($B$3$N>l9g$O(BDB$B%N!<%I(B0$B$,(B0$B9T!"(BDB$B%N!<%I(B1$B$,(B1$B9T(B)$B!#(B
2010-07-22 13:23:25 LOG:   pid 5490: SimpleForwardToFrontend: Number of affected tuples are: 0 1
2010-07-22 13:23:25 LOG:   pid 5490: ReadyForQuery: Degenerate backends: 1
2010-07-22 13:23:25 LOG:   pid 5490: ReadyForQuery: Number of affected tuples are: 0 1

$B%^%9%?!<%9%l!<%V%b!<%I(B

master/slave$B%b!<%I$O!"(BSlony-I$B$d(BStreaming Replication$B$N$h$&$J!"(Bmaster/slave$B<0$N%l%W%j%1!<%7%g%s%=%U%H$K%l%W%j%1!<%7%g%s$r$^$+$;$k%b!<%I$G$9!#(B $B$3$N%b!<%I$G;H$&$?$a$K$O!"%l%W%j%1!<%7%g%s%b!<%I$HF1$8$h$&$K!"(BDB$B%N!<%I$N%[%9%H>pJs(B(backend_hostname, backend_port, backend_weight, backend_flag $B$=$l$K%*%s%i%$%s%j%+%P%j$,I,MW$J$i$P(Bbackend_data_directory)$B$r%;%C%H$7!"(Bmaster_slave_mode$B$H(Bload_balance_mode$B$r(Btrue$B$K$7$^$9!#(B pgpool-II$B$O!"%l%W%j%1!<%7%g%s$5$l$kI,MW$N$"$kLd$$9g$o$;$O%^%9%?!<$KAw$j!"$=$NB>$NLd$$9g$o$;$r2DG=$J$i$PIi2YJ,;6$7$^$9!#Ld$$9g$o$;$K$h$C$F%^%9%?!<(BDB$B$@$1$KLd$$9g$o$;$,Aw$i$l$k>l9g$H!"(BDB$B%N!<%I$N4V$G%m!<%I%P%i%s%9$5$l$FLd$$9g$o$;$,Aw$i$l$k>l9g$,$"$j$^$9!#(B

$B%^%9%?%9%l!<%V%b!<%I$G$O!"0l;~%F!<%V%k$N:n@.!"99?7!"8!:w$O%^%9%?%N!<%I$G$N$_

$B%^%9%?!<%9%l!<%V%b!<%I$G$O!"(Bpgpool.conf$B$N(Breplication_mode$B$r(Bfalse$B$K!"(Bmaster_slave_mode $B$r(Btrue$B$K$7$^$9(B($BF1;~$K(Btrue$B$K$O$G$-$^$;$s(B)$B!#(B $B$^$?!"(B'master_slave_sub_mode'$B$r;XDj$7$^$9!#$3$l$O!"(B'slony'($B%G%U%)%k%H(B)$B$+!"(B'stream'$B$G$9!#(B 'slony'$B$O(BSlony-I$B$rMxMQ$9$k;~$K;XDj$7$^$9!#(B 'stream'$B$O!"(BPostgreSQL$BAH$_9~$_$N(BStreaming Replication$B$rMxMQ$9$k$H$-$K;XDj$7$^$9!#(B Slony-I$B$r;H$&>l9g$N@_Dj%U%!%$%k$N?w7A$O(Bpgpool.conf.sample-master-slave$B$G$9!#(B Streaming Replication$B$r;H$&>l9g$N?w7A$O(Bpgpool.conf.sample-stream$B$G$9!#(B

$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

$B%^%9%?!<%9%l!<%V%b!<%I$G$b!"(BDB$B=q$-9~$_$r9T$J$&4X?t$N8F$S=P$7$r4^$`(BSELECT$B$rIi2YJ,;6$NBP>]$+$i30$9;XDj$r(Bwhite_function_list$B$H(Bblack_function_list$B$G9T$J$&$3$H$,$G$-$^$9!#(B $B>\:Y$O(Bwhite_function_list$B$N9`$r$4Mw2<$5$$!#(B

Streaming Replication$B$X$NBP1~(B

$BA0=R$N$h$&$K!"%^%9%?%9%l!<%V%b!<%I$G!"(B'master_slave_sub mode'$B$K(B'stream'$B$r;XDj$9$k$H!"(BPostgreSQL 9.0$B$+$iMxMQ2DG=$K$J$C$?(BStreaming Replication$B$KBP1~$7$^$9(B (pgpool-II$B$G$O!":#$N$H$3$m!"(BStreaming Replication$B$H(BHot Standby$B$rJ;MQ$9$k$3$H$rA0Ds$K$7$F$$$^$9(B)$B!#(B $B$3$N%b!<%I$G$O!"0J2<$N@_Dj9`L\$bMxMQ$G$-$^$9!#(B

  • delay_threshold

    $B%9%?%s%P%$%5!<%P$X$N%l%W%j%1!<%7%g%s$NCY1d5vMFEY$r%P%$%HC10L$G;XDj$7$^$9!#(B pgpool-II$B$O!"%9%?%s%P%$%5!<%P$NCY1d$,$3$NCM$rD6$($?>l9g$K$O!"(B $BIi2YJ,;6$,M-8z$G$"$C$F$b$=$N(BDB$B%N!<%I$K(BSELECT$B$rAw?.$;$:!"%W%i%$%^%j%5!<%P$KAw$k$h$&$K$7$^$9!#(B delay_threshold$B$,(B0$B$N>l9g$O!"CY1d$N%A%'%C%/$r9T$J$$$^$;$s!#(B $B$^$?!"(Bdelay_threshold$B$,;XDj$5$l$F$$$F$b!"(Bsr_check_period$B$,L58z(B(=0)$B$J$i$P!"$d$O$j$3$N5!G=$OF/$-$^$;$s!#(B $B%G%U%)%k%HCM$O(B0$B$G$9!#(B $B$3$N%Q%i%a!<%?$O@_Dj%U%!%$%k$N:FFI9~$K$h$C$FJQ99$G$-$^$9!#(B

  • sr_check_period

    $B%9%H%j!<%_%s%0%l%W%j%1!<%7%g%s$NCY1d%A%'%C%/$N4V3V$rICC10L$G;XDj$7$^$9!#(B $B%G%U%)%k%HCM$O(B0$B$G!"$3$l$O%A%'%C%/$r9T$o$J$$$3$H$r0UL#$7$^$9!#(B $B$3$N%Q%i%a!<%?$O@_Dj%U%!%$%k$N:FFI9~$K$h$C$FJQ99$G$-$^$9!#(B

  • sr_check_user

    $B%9%H%j!<%_%s%0%l%W%j%1!<%7%g%s$NCY1d%A%'%C%/$r9T$&%f!<%6L>$r;XDj$7$^$9!#(B $B$3$N%f!<%6$O!"$9$Y$F$N%P%C%/%(%s%I$KB8:_$7$J$1$l$P$J$j$^$;$s!#(B $B$5$b$J$1$l$P%(%i!<$K$J$j$^$9!#(B sr_check_user$B$H(Bsr_check_password$B$O!"(Bsr_check_period$B$,(B0$B$G$"$C$F$b(B $B;XDj$,I,MW$G$9!#(Bpgpool-II$B$O!"$I$N%5!<%P$,(Bprimary$B%5!<%P$G$"$k$N$+$rD4$Y$k$?$a$K!"(B PostgreSQL$B%P%C%/%(%s%I$K4X?t8F$S=P$7$N%j%/%(%9%H$rAw$j$^$9!#$=$N%;%C%7%g%s$G(B sr_check_user$B$H(Bsr_check_password$B$,;H$o$l$k$+$i$G$9!#(B $B$3$N%Q%i%a!<%?$O@_Dj%U%!%$%k$N:FFI9~$K$h$C$FJQ99$G$-$^$9!#(B

  • sr_check_password

    $B%9%H%j!<%_%s%0%l%W%j%1!<%7%g%s$NCY1d%A%'%C%/$r9T$&%f!<%6$KBP$9$k%Q%9%o!<%I$r$r;XDj$7$^$9!#(B $B%Q%9%o!<%I$,I,MW$J$1$l$P6uJ8;z(B('')$B$r;XDj$7$^$9!#(B $B$3$N%Q%i%a!<%?$O@_Dj%U%!%$%k$N:FFI9~$K$h$C$FJQ99$G$-$^$9!#(B

  • log_standby_delay

    $B%l%W%j%1!<%7%g%s$NCY1d>u67$r%m%0$9$k>r7o$r;XDj$7$^$9!#(B 'none'$B$r;XDj$9$k$H!"%m%0$r=PNO$7$^$;$s!#(B 'always'$B$J$i%X%k%9%A%'%C%/$r

    $B$J$*!"%l%W%j%1!<%7%g%s$NCY1d>u67$O(B show pool_status $B%3%^%s%I$G$b3NG'$G$-$^$9!#(B $B9`L\L>$O(B"standby_delay#"$B$G$9(B(#$B$O(BDB$B%N!<%I(BID$B$G$9(B)$B!#(B

Streaming Replication$B$G$N%U%'%$%k%*!<%P(B

Streaming replication$B$rMxMQ$7$?%^%9%?%9%l!<%V%b!<%I$G$O!"(BPrimary$B$d(BStandby$B%N!<%I$,Dd;_$7$?>l9g$K!"%l%W%j%1!<%7%g%s%b!<%I$HF1$8$h$&$K<+F0%U%'%$%k%*!<%P$r9T$J$o$;$k$3$H$,$G$-$^$9!#(B $BFC$K2?$b@_Dj$7$J$/$F$b!"Dd;_$7$?%N!<%I$r<+F0E*$K@Z$jJ|$9$3$H$,$G$-$^$9$,!"(BStreaming replication$B$G$O!"(B $B!V%H%j%,%U%!%$%k!W$r:n@.$9$k$3$H$K$h$j!"(BStandby$B%N!<%I$r!"%j%+%P%j%b!<%I$+$i99?7Ld$$9g$o$;$ro$N(BPostgreSQL$B$NF0:n%b!<%I$K<+F0JQ99$9$k$3$H$,$G$-$^$9!#(B $B$3$l$rMxMQ$7$F!"%U%'%$%k%*!<%P%3%^%s%I$rJ;MQ$7$F!"(BPrimary$B%N!<%I$,%@%&%s$7$?$H$-$K!"(BStandby$B%N!<%I$,<+F0E*$K$H$C$FBe$k$h$&$J@_Dj$r9T$J$&$3$H$,$G$-$^$9!#(B

$BCm0U(B: $BJ#?t$N(BStandby$B%N!<%I$rMxMQ$7$F$$$k>l9g!"$3$N@_Dj$r9T$J$&$H$-$O!"(Bdelay_threshold$B$r@_Dj$7$F!"B>$N(BStandby$B$K?6$jJ,$1$i$l$?(BSELECT$B$,8E$$%G!<%?$r

$B%U%'%$%k%*!<%P$N@_Dj

  1. $B%U%'%$%k%*!<%PMQ$N%9%/%j%W%H$rE,Ev$J>l=j(B($B$3$3$G$O(B/usr/local/pgsql/bin)$B$KG[CV$7$F!" $ cd /usr/loca/pgsql/bin $ cat failover_stream.sh #! /bin/sh # Failover command for streming replication. # This script assumes that DB node 0 is primary, and 1 is standby. # # If standby goes down, does nothing. If primary goes down, create a # trigger file so that standby take over primary node. # # Arguments: $1: failed node id. $2: new master hostname. $3: path to # trigger file. failed_node=$1 new_master=$2 trigger_file=$3 # Do nothing if standby goes down. if [ $failed_node = 1 ]; then exit 0; fi # Create trigger file. /usr/bin/ssh -T $new_master /bin/touch $trigger_file exit 0; chmod 755 failover_stream.sh
  2. pgpool.conf$B$N!"(Bfailover_commmand$B$r@_Dj$7$^$9!#(B
    failover_command = '/usr/local/src/pgsql/9.0-beta/bin/failover_stream.sh %d %H /tmp/trigger_file0'
    
  3. standby$B%N!<%I$N(Brecovery.conf$B$r@_Dj$7$^$9!#(B recovery.conf$B$N%5%s%W%k(B$B$O(B PostgreSQL$B$N%$%s%9%H!<%k%G%#%l%/%H%j2<$N(B"share/recovery.conf.sample"$B$K$"$j$^$9!#(B $B$3$l$r(Bstanndby$B%N!<%I$N%G!<%?%Y!<%9%/%i%9%?2<$K(B"recovery.conf"$B$H$7$F%3%T!<$7$F$*$-$^$9!#(B $B$=$7$F!"0J2<$N9`L\$r@_Dj$7$^$9!#(B
    standby_mode = 'on'
    primary_conninfo = 'host=primary_host$B$N%[%9%HL>(B user=postgres'
    trigger_file = '/tmp/trigger_file0'
    
  4. primary$B%N!<%I$N(Bpostgresql.conf$B$r@_Dj$7$^$9!#(B $B0J2<$ONc$G$9$N$G!"I,$: wal_level = hot_standby max_wal_senders = 1
  5. primary$B%N!<%I$N(Bpg_hba.conf$B$r@_Dj$7$^$9!#(B $B0J2<$ONc$G$9$N$G!"I,$: host replication postgres 192.168.0.10/32 trust

primary$B$H(Bstandby$B$N(BPostgreSQL$B$r5/F0$9$l$P!"(BStreaming replication$B$,3+;O$5$l$^$9!#(B $B$=$7$F!"(Bprimary$B%N!<%I$,%@%&%s$7$?$H$-$K!"<+F0E*$K(Bstandby$B%N!<%I$,DL>o$N(BPostgreSQL$B$H$7$FN)$A>e$,$j!"99?7Ld$$9g$o$;$r

Streaming Replication$B$G$N%/%(%j?6$jJ,$1(B

Streaming replication$B$H(BHot Standby$B$rMxMQ$7$F$$$k4D6-$G$O!"(Bprimary$B%N!<%I$KAw$C$F$h$$Ld$$9g$o$;!"(Bstandby$B$KAw$C$F$b$h$$Ld$$9g$o$;!"N>J}$KAw$i$J$1$l$P$J$i$J$$Ld$$9g$o$;$r87L)$K4IM}$9$kI,MW$,$"$j$^$9!#(B pgpool-II$B$N(BStreaming Replication$B%b!<%I$O!"$3$&$7$??6$jJ,$1$r<+F0E*$K9T$J$$$^$9!#(B $B$3$3$G$O!"$=$N%m%8%C%/$K$D$$$F@bL@$7$^$9!#(B

$B$^$:!"Ld$$9g$o$;$N

  • Primary$B%N!<%I$K$7$+Aw$i$l$J$$Ld$$9g$o$;(B
    • INSERT, UPDATE, DELETE, COPY FROM, TRUNCATE, CREATE, DROP, ALTER, COMMENT
    • SELECT ... FOR SHARE | UPDATE
    • $B%H%i%s%6%/%7%g%s$NJ,N%%l%Y%k$,%7%j%"%i%$%6%V%k$N>l9g$N(BSELECT
    • ROW EXCLUSIVE MODE$B$h$j$b6/$$(BLOCK
    • $B%H%i%s%6%/%7%g%s%3%^%s%I$N0lIt(B
      • BEGIN READ WRITE, START TRANSACTION READ WRITE
      • SET TRANSACTION READ WRITE, SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE
      • SET transaction_read_only = off
    • $BFsAj%3%_%C%H4XO"$N%3%^%s%I!#(BPREPARE TRANSACTION, COMMIT PREPARED, ROLLBACK PREPARED
    • LISTEN, UNLISTEN, NOTIFY
    • VACUUM
    • $B%7!<%1%s%94XO"$N4X?t(B(nextval$B$d(Bsetval$B$J$I(B)$B$N8F$S=P$7!#(B
    • $B%i!<%8%*%V%8%'%/%H$N@8@.(B
  • Primary/Standby$B$I$A$i$K$bAw$k$3$H$N$G$-$kLd$$9g$o$;!#(B $BIi2YJ,;6@_Dj$,M-8z$J$i$P!"(Bstandby$B%N!<%I$K$bAw?.$5$l$^$9!#(B $B$?$@$7!"%l%W%j%1!<%7%g%s$NCY1d>e8B(B(delay_threshold)$B$,@_Dj$5$l$F$$$F!"(B $B%l%W%j%1!<%7%g%s$NCY1d$,(Bdelay_threshold$B$r>e2s$C$F$$$k>l9g$OLd$$9g$o$;$O(BPrimary$B$KAw$i$l$^$9!#(B
    • $B>e5-0J30$N(BSELECT
    • COPY TO
    • DECLARE, FETCH, CLOSE
    • SHOW
  • Primary/Standby$B$I$A$i$K$bAw$i$l$kLd$$9g$o$;(B
    • SET
    • DISCARD
    • DEALLOCATE ALL

$BL@<(E*$J%H%i%s%6%/%7%g%s$G$O!"0J2<$N$h$&$K$J$j$^$9!#(B

  • BEGIN$B$J$I$N%H%i%s%6%/%7%g%s3+;O%3%^%s%I$O!"(BPrimary$B%5!<%P$KAw$i$l$^$9!#(B
  • $BB3$/(BSELECT$B$J$I!"(BPrimary/Standby$B$I$A$i$K$bAw$k$3$H$N$G$-$kLd$$9g$o$;$O!"(BPrimary$B$N%H%i%s%6%/%7%g%sFb$G$=$N$^$^

    INSERT$B$J$I!"(BStandby$B$KAw$k$3$H$N$G$-$J$$Ld$$9g$o$;$,8=$o$l$?>l9g$O!"(BPrimary$B%5!<%P$G$A$K;2>H$G$-$k$h$&$K$9$k$?$a$G$9!#(B $B$3$N>uBV$O!"%H%i%s%6%/%7%g%s$,JD$8$k$+!"%"%\!<%H$9$k$^$GB3$-$^$9!#(B

$BLd$$9g$o$;$,!"3HD%Ld$$9g$o$;%b!<%I$Gl9g$O!"Ld$$9g$o$;$N(Bparse$BCJ3,$G!"Ld$$9g$o$;$,Ii2YJ,;62DG=$+$I$&$+$GAw?.@h$,7h$^$j$^$9!#$=$N:]$NH=CG%k!<%k$O!"DL>o$N(BSQL$B$HF1$8$G$9!#(B $B$?$H$($PLd$$9g$o$;$,(BINSERT$B$J$i$P!"(BPrimary$B%5!<%P$G

[$BCm(B: SELECT$B$,Ii2YJ,;6$5$l$F(B Standby $B%N!<%I$G(B parse$B$,l9g$O!"$=$N(BSELECT$B$O(BPrimary$B%N!<%I$G

$B:G8e$K!"(Bpgpool-II$B$N%Q!<%5$,9=J8%(%i!<$HH=CG$7$?Ld$$9g$o$;$O(BPrimary$B%N!<%I$@$1$KAw$i$l$^$9!#(B

Streaming Replication$B$G$N%*%s%i%$%s%j%+%P%j(B

Streaming replication$B$rMxMQ$7$?%^%9%?%9%l!<%V%b!<%I$G$O!"%l%W%j%1!<%7%g%s%b!<%I$HF1$8$h$&$K%*%s%i%$%s%j%+%P%j$,MxMQ$G$-$^$9!#(B primary$B%5!<%P$r%^%9%?$H$7!"(Bstandby$B%5!<%P$r%j%+%P%j$7$^$9!#(B primary$B%5!<%P$,F0:n$7$F$$$k$N$,$3$NJ}K!$NA0Ds>r7o$G$9$N$G!"(B primary$B%5!<%P$,Dd;_$7$F$$$k>uBV$G$O%*%s%i%$%s%j%+%P%j$O$G$-$^$;$s!#(B primary$B%5!<%,Dd;_$7$F$$$k>uBV$+$i$NI|5l$O!"$9$Y$F$N(BDB$B%N!<%I$H(Bpgpool-II$B$rDd;_$5$;$F

  1. $B%j%+%P%j=hM}$ro!"(Bpostgres$B%f!<%6$H$J$j$^$9!#(B
    recovery_user = 'postgres'
    
  2. recovery_password $B$r@_Dj$7$^$9!#$3$l$O!"(Brecovery_user $B$,(BDB$B$K%m%0%$%s$9$k$H$-$K;H$&%Q%9%o!<%I$G$9!#(B
    recovery_password = 't-ishii'
    
  3. recovery_1st_stage_command $B$r@_Dj$7$^$9!#(B $B$3$3$G;XDj$9$k%U%!%$%k$O!"(Bprimary$B%5!<%P$+$i%Y!<%9%P%C%/%"%C%W$r\:Y$O!"(Brecovery_1st_stage_command$B$N@_Dj9`L\$r$4Mw$/$@$5$$!#(B $B$3$N%9%/%j%W%H%U%!%$%k$O!"(Bprimary$B$N%G!<%?%Y!<%9%/%i%9%?2<$KG[CV$7!"$l0lBf9=@.$N>l9g$N%9%/%j%W%H(B(basebackup.sh)$B$r<($7$^$9!#(B $B$3$N%9%/%j%W%H$G$O!"(Brecovery_user $B$,%Q%9%o!<%I$J$7$G%j%+%P%jBP>]$N(Bstandby$B%N!<%I$K%m%0%$%s$G$-$k$3$H$rA0Ds$K$7$F$$$k$N$G!"$"$i$+$8$a(Bssh$B$N@_Dj$r9T$J$C$F$*$/I,MW$,$"$j$^$9!#(B
    recovery_1st_stage_command = 'basebackup.sh'
    
  4. recovery_2nd_stage_command $B$O!"6u$N$^$^$G9=$$$^$;$s!#(B
    recovery_2nd_stage_command = ''
    
  5. $B%*%s%i%$%s%j%+%P%j$r
    # cd pgpool-II-x.x.x/sql/pgpool-recovery
    # make
    # make install
    # psql -f pgpool-recovery.sql template1
    
  6. $B%*%s%i%$%s%j%+%P%j$,=*N;$7$?$"$H!"(Bpgpool-II$B$O!"Dd;_$7$F$$$?(BDB$B%N!<%I$N(BPostgreSQL$B$r5/F0$7$^$9!#(B $B$=$N$?$a$N%9%/%j%W%H$r!"3F(BDB$B%N!<%I$N(BDB$B%/%i%9%?$K%$%s%9%H!<%k$7$^$9!#(B $B%9%/%j%W%H$N%5%s%W%k(B$B$,%=!<%9%3!<%I$N(B"sample"$B%G%#%l%/%H%j$K4^$^$l$F$$$k$N$G!"$=$l$rMxMQ$7$F$/$@$5$$!#(B $B$3$N%5%s%W%k$NCf$G$O!"(BPostgreSQL$B$N5/F0$r(Bpg_ctl$B%3%^%s%I$G9T$C$F$*$j!"(Bpg_ctl$B%3%^%s%I$X$N%Q%9$,5-=R$5$l$F$$$^$9!#(B $B%G%U%)%k%H$G$O(B/usr/local/pgsql/bin/pg_ctl$B$H$J$C$F$$$k$N$G!"$*;H$$$N4D6-$K9g$o$;$F=$@5$7$F$/$@$5$$!#(B $B$J$*!"$3$N%9%/%j%W%H$O(Bssh$B$r;HMQ$7$^$9$N$G!">/$/$H$b!"(Bprimary$B$N(BDB$B%N!<%I$+$i!"(Bstandby$B$N(BDB$B%N!<%I$KBP$7$F!"(Brecovery_user$B$G%Q%9%o!<%I$J$7$G(Bssh$B$,MxMQ$G$-$k$3$H$,I,MW$G$9!#(B $BI,MW$J$i$P$"$i$+$8$a@_Dj$7$F$*$$$F$/$@$5$$!#(B

$B0J>e$G%*%s%i%$%s%j%+%P%j$N@_Dj$,=*N;$7$^$7$?!#(B standby$B%N!<%I$rDd;_$7$?>uBV$G!"(Bpcp_recovery_node$B$rMxMQ$9$k$+!"(BpgpoolAdmin$B$N!V%j%+%P%j!W%\%?%s$G%*%s%i%$%s%j%+%P%j$,=PMh$k$h$&$K$J$C$?$O$:$G$9!#(B $B$&$^$/$$$+$J$$>l9g$O!"(Bpgpool-II$B$N%m%0!"(Bprimary$B%5!<%P!"(Bstandby$B%5!<%P$N%m%0$r3NG'$7$F$/$@$5$$!#(B

$B;29M$^$G$K!"%9%H%j!<%_%s%0%l%W%j%1!<%7%g%s$G$N%*%s%i%$%s%j%+%P%j$NFbIt=hM}$NN.$l$r@bL@$7$^$9!#(B

  1. pgpool-II$B$O!"(Bprimary$B%5!<%P$K%f!<%6(B: recovery_user, $B%Q%9%o!<%I(B: recovery_password $B$G(Btemplate1$B%G!<%?%Y!<%9$K@\B3$7$^$9(B
  2. primary$B%5!<%P$G!"(Bpgpool_recovery$B4X?t$rpgpool_recovery$B4X?t$O!"(Brecovery_1st_stage_command $B$G;XDj$5$l$?%9%/%j%W%H$rprimary$B%5!<%P$G!"(Bpgpool_remote_start$B4X?t$rA0$N%9%/%j%W%H$r5/F0$7!"$3$3$+$i(Bssh$B7PM3$G%j%+%P%jBP>]$N(Bstandby$B%5!<%P$N(BPostgreSQL$B$r(Bpg_ctl$B%3%^%s%I$r;H$C$F5/F0$7$^$9!#(B $B5/F0$O%P%C%/%0%i%&%s%I$G9T$o$l!"5/F0$G$-$?$+$I$&$+$Opgpool-II$B$+$i!"(Bstandby$B%5!<%P$N(BPostgreSQL$B$N(Bpostgres$B%G!<%?%Y!<%9(B(postgres$B%G!<%?%Y!<%9$,$J$$>l9g$O(Btemplate1$B%G!<%?%Y!<%9(B)$B$K!"%f!<%6(B: recovery_user, $B%Q%9%o!<%I(B: recovery_password $B$G(Btemplate1$B%G!<%?%Y!<%9$K@\B3$r;n$_$^$9!#(B $B%j%H%i%$$O!"(Brecovery_timeout$BIC4V9T$o$l$^$9!#(B PostgreSQL$B$N5/F0$K@.8y$7$?$i!"failback_command$B$,6u$G$J$$>l9g$O!"(Bpgpool-II$B$N?F%W%m%;%9$O;XDj$5$l$?%9%/%j%W%H$r5/F0$7$^$9!#(B
  3. failback_command$B$,=*N;$7$?$i!"(Bpgpool-II$B$N;R%W%m%;%9$r$9$Y$F:F5/F0$7$^$9!#(B

$B%Q%i%l%k%b!<%I(B

$B%Q%i%l%k%/%(%j5!G=$,MxMQ$G$-$k%b!<%I$G$9!#%F!<%V%k$rJ,3d$5$;!"3F%N!<%I$K%G!<%?(B $B$r;}$?$;$k$3$H$,$G$-$^$9!#$^$?%l%W%j%1!<%7%g%s$dIi2YJ,;65!G=$bF1;~$K;H$&$3$H$,(B $B$G$-$^$9!#(B $B%Q%i%l%k%b!<%I$G$O!"(Bpgpool.conf$B$N(Breplication_mode$B$^$?$O(Bloadbalance_mode$B$K(Btrue $B$r@_Dj$7!"(Bmaster_slave $B$r(Bfalse$B$K$7!"(Bparallel_mode $B$r(Btrue$B$K$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

$B%7%9%F%`(BDB$B$N@_Dj(B

$B%Q%i%l%k%b!<%I$rMxMQ$9$k$?$a$K$O!"%7%9%F%`(BDB$B$r@_Dj$9$kI,MW$,$"$j$^$9!#(B $B%7%9%F%`(BDB$B$O%G!<%?$r3F(BPostgreSQL$B%5!<%P$GJ,3d$9$k$?$a$N%k!<%k$r(B PostgreSQL$B$N%F!<%V%k$N7A$GJ];}$7$^$9!#%7%9%F%`(BDB$B$O(Bpgpool$B$,F0:n$9$k%[%9%H(B $B$HF1$8%[%9%H$KCV$/I,MW$O$"$j$^$;$s!#%7%9%F%`(BDB$B$N@_Dj$O(Bpgpool.conf$B$G9T$$(B $B$^$9!#(B

system_db_hostname

$B%7%9%F%`(BDB$B$,F0$$$F$$$k%[%9%HL>$G$9!#6uJ8;z$r;XDj$9$k$H!"(BUNIX$B%I%a%$%s%=%1%C(B $B%H$G@\B3$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

system_db_port

$B%7%9%F%`(BDB$B$N%]!<%HHV9f$G$9!#$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

system_dbname

$B%7%9%F%`(BDB$B$O@lMQ$N%G!<%?%Y!<%9$K@_CV$7$^$9!#$=$N%G!<%?%Y!<%9L>$r;XDj$7$^$9!#(B $B$3$N%G!<%?%Y!<%9$O$"$i$+$8$aB8:_$7$J$1$l$P$J$j$^$;$s!#$3$3$G$O!"(B "pgpool"$B$H$$$&%G!<%?%Y!<%9L>$K$9$k$b$N$H$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

system_db_schema

$B%7%9%F%`(BDB$B$O@lMQ$N%9%-!<%^$K@_CV$7$^$9!#$=$N%9%-!<%^L>$r;XDj$7$^$9!#(B $B$3$N%9%-!<%^$O$"$i$+$8$aB8:_$7$J$1$l$P$J$j$^$;$s!#$3$3$G$O!"(B "pgpool_catalog"$B$H$$$&%9%-!<%^$K$9$k$b$N$H$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

system_db_user

$B%7%9%F%`(BDB$B$K@\B3$9$k$H$-$N%f!<%6L>$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

system_db_password

$B%7%9%F%`(BDB$B$K@\B3$9$k$H$-$N%Q%9%o!<%I$G$9!#%Q%9%o!<%I$r@_Dj$7$F$$$J$$>l9g(B $B$O6uJ8;z$K$7$F$*$-$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B

$B%7%9%F%`(BDB$B$N=i4|@_Dj(B

$B%7%9%F%`(BDB$B$K%9%-!<%^$H%F!<%V%k$r:n@.$7$^$9!#=i4|@_DjMQ$N%9%/%j%W%H$,(B $prefix/share/system_db.sql$B$K$"$k$N$G$=$l$rMxMQ$7$^$9!#$?$@$7!"$3$N%9%/(B $B%j%W%H$G$O%9%-!<%^L>$,(B"pgpool_catalog"$B$H$J$C$F$$$k$N$G!"0c$&%9%-!<%^$r;H(B $B$&>l9g$OE,Ev$K=q$-49$($F$/$@$5$$!#$^$?!"%G!<%?%Y!<%9L>$H$7$F(B"pgpool"$B0J30(B $B$r;H$&>l9g$O0J2<$rE,Ev$KFI$_BX$($F$/$@$5$$!#(B

psql -f $prefix/share/system_db.sql pgpool

dblink$B$N%$%s%9%H!<%k(B

$B%Q%i%l%k%b!<%I$G$O(Bdblink$B$r;H$$$^$9!#(Bdblink$B$O(BPostgreSQL$B%=!<%9%U%!%$%k(B ($POSTGRES_SRC)

$(POSTGRES_SRC)/contrib/dblink

$B$K$"$j$^$9!#(B$POSTGRES_SRC/contrib/dblink/README.dblink$B$r;29M$K%7%9%F%`(B DB$B$K(Bdblink$B$r%$%s%9%H!<%k$7$F$/$@$5$$!#(B $B$^$?!"(Bpgpool$B%G!<%?%Y!<%9$K4X?t$NEPO?$,I,MW$G$9!#(B

psql pgpool < $POSTGRES_SRC/contrib/dblink/dblink.sql

$B%3%M%/%7%g%s?t$N@_Dj(B

$B%Q%i%l%k%b!<%I$G$O!"%/%(%j$K$h$j%7%9%F%`(BDB$B$+$i(Bdblink$B7PM3$G(Bpgpool$B$K@\B3(B $B$9$k$N$G!"A[Dj$5$l$kF1;~@\B3?t0J>e$N%3%M%/%7%g%s$,I,MW$K$J$k>l9g$,$"$j(B $B$^$9!#$=$N$?$a!"(Bpgpool.conf$B$N(Bnum_init_children$B$K$OF1;~@\B3?t$h$j==J,Bg(B $B$-$$CM$r@_Dj$7$F2<$5$$!#(B

$BL\0B$H$7$F0J2<$N<0$G(Bnum_init_children$B$r@_Dj$7$F$/$@$5$$!#(B

num_init_children = $BA[Dj$5$l$kF1;~@\B3?t(B * ( 1 + $B%/%(%j$NCf$G;H$o$l$F$$$k%F!<%V%k$N:GBg?t(B)

$B%G!<%?J,3d%k!<%k$NEPO?(B

$B%G!<%?J,3d$r9T$&%F!<%V%k$KBP$7$F$O!"%F!<%V%k>pJs$r$"$i$+$8$a(B pgpool_catalog.dist_def $B$H$$$&%F!<%V%k$KEPO?$7$F$*$-$^$9!#(B

CREATE TABLE pgpool_catalog.dist_def(
	dbname TEXT,	-- DB$BL>(B
	schema_name TEXT,	--schema$BL>(B
	table_name TEXT,	-- $B%F!<%V%kL>(B
	col_name TEXT NOT NULL CHECK (col_name = ANY (col_list)),	-- $BJ,;6%-!(B
	col_list TEXT[] NOT NULL,	-- table$B$NB0@-L>(B
	type_list TEXT[] NOT NULL,	-- $BB0@-$N%?%$%WL>(B
	dist_def_func TEXT NOT NULL,	-- $BJ,;6@h$N(BDB$B%N!<%I$r7hDj$9$k4X?tL>(B
	PRIMARY KEY (dbname,schema_name,table_name)
);

$B%l%W%j%1!<%7%g%s%F!<%V%k$N%k!<%kEPO?(B

$B0l$D$N(BSQL$BJ8$K(BJOIN$BEy$G%G!<%?J,3d%k!<%k$KEPO?$7$?%F!<%V%k$H6&$K(B $B%l%W%j%1!<%7%g%s$r9T$&%F!<%V%k$r;XDj$9$k>l9g$K$O!"%l%W%j%1!<%7%g%s(B $B$r9T$&%F!<%V%k$N>pJs$r$"$i$+$8$a!"(Bpgpool_catalog.replicate_def $B$H$$$&%F!<%V%k$KEPO?$7$F$*$-$^$9!#(B

CREATE TABLE pgpool_catalog.replicate_def(
	dbname TEXT,	-- DB$BL>(B
	schema_name TEXT,	--schema$BL>(B
	table_name TEXT,	-- $B%F!<%V%kL>(B
	col_list TEXT[] NOT NULL,	-- table$B$NB0@-L>(B
	type_list TEXT[] NOT NULL,	-- $BB0@-$N%?%$%WL>(B
	PRIMARY KEY (dbname,schema_name,table_name)
);

pgbench$B$N%F!<%V%k$rJ,3d$9$k%k!<%k$NNc$r<($7$^$9!#(B

$B$3$NNc$G$O!"(Baccounts$B%F!<%V%k$KBP$7$F$OJ,3d$r9T$$!"(Bbranches$B%F!<%V%k(B $B$H(Btellers$B%F!<%V%k$KBP$7$F$O%l%W%j%1!<%7%g%s$r9T$&$3$H$K$7$^$9!#(B $B$^$?!"(Baccounts$B%F!<%V%k$H(Bbanches$B%F!<%V%k$O(Bbid$B$G7k9g$5$l$k$3$H$rA[Dj$7(B branches$B%F!<%V%k$O%l%W%j%1!<%7%g%s%F!<%V%k$N%k!<%kEPO?$r9T$$$^$9!#(B $B$b$7!"(Baccounts$B%F!<%V%k!"(Bbranches$B%F!<%V%k$H(Btellers$B%F!<%V%k$N#3$D$N(B $B%F!<%V%k$N7k9g$,9T$o$l$k>l9g$K$O!"$"$i$+$8$a(Btellers$B%F!<%V%k$KBP$7$F$b(B $B%l%W%j%1!<%7%g%s%F!<%V%k$N%k!<%kEPO?$r9T$&I,MW$,$"$j$^$9!#!!(B

INSERT INTO pgpool_catalog.dist_def VALUES (
	'pgpool',
	'public',
	'accounts',
	'aid',
	ARRAY['aid','bid','abalance','filler'],
	ARRAY['integer','integer','integer','character(84)'],
	'pgpool_catalog.dist_def_accounts'
);

INSERT INTO pgpool_catalog.replicate_def VALUES (
	'pgpool',
	'public',
	'branches',
	ARRAY['bid','bbalance','filler'],
	ARRAY['integer','integer','character(84)']
);

$B$3$3$G!"(Bpgpool_catalog.dist_def_accounts$B$O!"0z?t$H$7$FJ,3d%-!<$NCM$r

CREATE OR REPLACE FUNCTION pgpool_catalog.dist_def_accounts (val ANYELEMENT) RETURNS INTEGER AS '
  SELECT CASE WHEN $1 >= 1 and $1 <= 30000 THEN 0
	      WHEN $1 > 30000 and $1 <= 60000 THEN 1
	      ELSE 2
  END' LANGUAGE SQL;

$B%/%i%$%"%s%HG'>Z(B(HBA)$B$N$?$a$N(B pool_hba.conf $B@_DjJ}K!(B

PostgreSQL$B$N(Bpg_hba.conf$B$HF1$8$h$&$K(Bpgpool$B$G$b(Bpool_hba.conf$B%U%!%$(B $B%k$r;H$C$?%/%i%$%"%s%HG'>Z$,%5%]!<%H$5$l$F$$$^$9!#(B

pgpool$B$r%$%s%9%H!<%k$9$k$H%G%U%)%k%H%$%s%9%H!<%k@h$N@_Dj%U%!%$%k%G%#(B $B%l%/%H%j(B"/usr/local/etc"$B$K(Bpool_hba.conf.sample$B$,0l=o$K%$%s%9%H!<%k(B $B$5$l$^$9!#$3$N(Bpool_hba.conf.sample$B%U%!%$%k$r(Bpool_hba.conf$B$H$7$F%3%T!<(B $B$7!"I,MW$G$"$l$PJT=8$7$F$/$@$5$$!#%G%U%)%k%H$G$O(Bpool_hba$B$K$h$kG'>Z$OM-(B $B8z$K$J$C$F$$$^$9!#(B

pool_hba.conf$B$N%U%)!<%^%C%H$O(Bpg_hba.conf$B$N$b$N$H$[$H$s$IF1$8$G$9!#(B

     local      DATABASE  USER  METHOD  [OPTION]
     host       DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTION]

$B3F%U%#!<%k%I$G@_Dj$G$-$kCM$N>\:Y$O(B"pool_hba.conf.sample"$B$r;2>H$7$F(B $B$/$@$5$$!#(B

$B0J2<$O(Bpool_hba$B$N@)8B;v9`$G$9!#(B

  • "hostssl"$B@\B3%?%$%W$O%5%]!<%H$5$l$^$;$s(B
  • pool_hba.conf$B$K(B"hostssl"$B$O;XDj$9$k$3$H$O$G$-$^$;$s$,!"(Bpgpool-II$B$O(B2.3$B0J9_$G(BSSL$B$r%5%]!<%H$7$F$$$^$9!#(B $B>\:Y$O(BSSL$B$r;2>H$7$F$/$@$5$$!#(B

  • DATABASE$B%U%#!<%k%ICM$H$7$F(B"samegroup"$B$O%5%]!<%H$5$l$^$;$s(B
  • pgpool$B$O%P%C%/%(%s%I%5!<%P$K$"$k%f!<%6>pJs$r;vA0$KCN$k;v$,$G$-$J(B $B$$$?$a!"%G!<%?%Y!<%9L>$O(Bpool_hba.conf$B$K$"$kCM$N$_$HHf3S$5$l$^$9!#(B $B$J$N$G%0%k!<%W$K4X$9$kG'>Z$O(Bpool_hba$B$G9T$&$3$H$,$G$-$^$;$s!#(B

  • USER$B%U%#!<%k%ICM$H$7$F(B"+"$B$r;H$C$?%0%k!<%W;XDj$O%5%]!<%H$5$l$^$;$s(B
  • $B>e5-$N(B"samegroup"$B$HF1$8M}M3$G!"%f!<%6L>$O(Bpool_hba.conf$B$K$"$kCM$N(B $B$_$HHf3S$5$l$^$9!#%0%k!<%W$K4X$9$kG'>Z$O(Bpool_hba$B$G9T$&$3$H$O$G$-(B $B$^$;$s!#(B

  • IPv6$B%"%I%l%9(B/$B%^%9%/I=5-K!$O%5%]!<%H$5$l$^$;$s(B
  • $B8=:_(Bpgpool$B$O(BIPv6$B$r%5%]!<%H$7$F$$$^$;$s!#(B

  • "trust", "reject", "pam", "md5"$B0J30$N%a%=%C%I$O%5%]!<%H$5$l$^$;$s(B
  • $B$3$l$b>e5-$N(B"samegroup"$B$HF1$8M}M3$K$h$k$b$N$G$9!#(Bpgpool$B$O%P%C%/%((B $B%s%I$N%f!<%6(B/$B%Q%9%o!<%I>pJs$r;}$C$F$$$J$$$N$G!"%P%C%/%(%s%I$KJ]B8(B $B$5$l$F$$$k%Q%9%o!<%I$r;H$C$?G'>Z$r9T$&$3$H$,$G$-$^$;$s!#(B

    md5$B$K4X$7$F$O!"(Bpool_passwd$B$H$$$&%Q%9%o!<%I%U%!%$%k$rJ;MQ$9$k$3$H$K$h$C$FMxMQ$G$-$^$9!#(B $B>\:Y$O(B$BG'>Z!&%"%/%;%9@)8fJ}<0(B$B$r;2>H$7$F$/$@$5$$!#(B

$B$3$3$G@bL@$5$l$?5!G=!"@)8B$O%/%i%$%"%s%H$H(Bpgpool$B4V$G9T$o$l$k%/%i%$(B $B%"%s%HG'>Z$K$D$$$F$@$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#%/%i%$%s%"%s%H$O(B pgpool$B$N%/%i%$%"%s%HG'>Z$K@.8y$7$?$H$7$F$b!"(BPostgreSQL$B$K$h$k%/%i%$(B $B%"%s%HG'>Z$K@.8y$7$J$$$H@\B3>uBV$H$J$j$^$;$s!#(Bpool_hba$B$K$H$C$F$O%/(B $B%i%$%"%s%H$K;XDj$5$l$?%f!<%6L>$d%G!<%?%Y!<%9L>(B ($BNc(B. psql -U testuser testdb)$B$,e$KB8:_$9$k$+$I$&(B $B$+$OLdBj$G$O$"$j$^$;$s!#$=$l$,(Bpool_hba.conf$B$NCM$H%^%C%A$9$k$+$I$&$+(B $B$G%A%'%C%/$,9T$o$l$^$9!#(B

pgpool$B$,2TF/$9$k%[%9%H>e$N%f!<%6>pJs$r;H$C$?(BPAM$BG'>Z$rMxMQ$9$k$3$H$,(B $B$G$-$^$9!#(Bpgpool$B$r(BPAM$B%5%]!<%HIU$-$G%S%k%I$9$k$K$O(Bconfigure$B%*%W%7%g(B $B%s$K(B"--with-pam"$B$r;XDj$7$F$/$@$5$$!#(B

     ./configure --with-pam

$BZ$rM-8z$K$9$k$K$O!"(Bpool_hba.conf$B$G(B"pam"$B%a%=%C%I$r@_Dj$9(B $B$k$N$K2C$(!"(Bpgpool$B$N%5!<%S%9@_Dj%U%!%$%k$r%7%9%F%`$N(BPAM$B@_Dj%G%#%l%/%H(B $B%j!JDL>o$O(B /etc/pam.d $B$K:n@.$9$kI,MW$,$"$j$^$9!#%5!<%S%9@_Dj%U%!%$(B $B%k$NNc$O%$%s%9%H!<%k%G%#%l%/%H%j$N(B"share/pgpool.pam"$B$r;29M$K$7$F$/(B $B$@$5$$!#(B

$B%/%(%j%-%c%C%7%e$N@_DjJ}K!(B

pgpool-II$B$G$O!"$9$Y$F$N%b!<%I$G%/%(%j%-%c%C%7%e$rMxMQ$9$k$3$H$,$G$-$^$9!#(B $B%/%(%j%-%c%C%7%e$O!"(BSELECT$B$N7k2L$r:FMxMQ$9$k$3$H$K$h$j!"@-G=$r8~>e$5$;$^$9!#(B $BMxMQ$9$k>l9g$K$O!"(Bpgpool.conf$B$N@_Dj$r0J2<$N$h$&$K@_Dj$7$^$9!#(B

enable_query_cache = true

$B$^$?!"%7%9%F%`(BDB$B$K0J2<$N%F!<%V%k$r:n@.$7$F$/$@$5$$!#(B

CREATE TABLE pgpool_catalog.query_cache (
  hash TEXT,
  query TEXT,
  value bytea,
  dbname TEXT,
  create_time TIMESTAMP WITH TIME ZONE,
  PRIMARY KEY(hash, dbname)
);

$B$?$@$7!"$3$NNc$G$O%9%-!<%^L>$,(B"pgpool_catalog"$B$H$J$C$F$$$k$N$G!"0c$&%9%-!<%^$r;H$&>l9g$OE,Ev$K=q$-49$($F$/$@$5$$!#(B

$BCm0U(B: $B8=:_$N%/%(%j%-%c%C%7%e$Ne$K:n@.$5$l$^$9!#(B $B$=$N$?$a!"e5-%F!<%V%k$+$i:o=|$9$k$+!"(B-c $B%*%W%7%g%s(B($B%/%(%j%-%c%C%7%e$N%/%j%"(B)$B$rDI2C$7$F(Bpgpool-II$B$r:F5/F0$9$kI,MW$,$"$j$^$9!#(B

pgpool-II$B$N5/F0$HDd;_(B

$B0J>e$G@_Dj$,=*$o$C$?$N$G!"3F(BDB$B%N!<%I$r5/F0$7!"I,MW$J$i$P%7%9%F%`(BDB$B$b5/F0(B $B$7$F$+$i(Bpgpool-II$B$r5/F0$7$^$9!#(B

pgpool [-c][-f config_file][-a hba_file][-F pcp_config_file][-n][-D][-d]

-c$B%/%(%j%-%c%C%7%e$r>C5n$7$^$9(B
-f config_filepgpool-II$B$N@_Dj%U%!%$%k$r;XDj$7$^$9(B
-a hba_fileHBA$BG'>Z@_Dj%U%!%$%k$r;XDj$7$^$9(B
-F pcp_config_filepcp$B$N@_Dj%U%!%$%k$r;XDj$7$^$9(B
-n$B%G!<%b%s%b!<%I$G5/F0$7$^$;$s(B($B@)8fC
-Dpgpool_status$B$r:o=|$7!"0JA0$N>uBV$rI|85$7$^$;$s(B
-d$B%G%P%C%0%b!<%I$G5/F0$7$^$9(B

pgpool-II$B$NDd;_$O8e=R$N(Bpcp$B%3%^%s%I$G$b$G$-$^$9$,!"(Bpgpool-II$B%3%^%s%I$r;H$&$3$H(B $B$b$G$-$^$9!#(B

pgpool [-f config_file][-F pcp_config_file] [-m {s[mart]|f[ast]|i[mmediate]}] stop

-m s[mart]$B@\B3Cf$N%/%i%$%"%s%H$,@\B3$r=*$o$k$N$rBT$C$F$+$iDd;_$7$^$9(B($B%G%U%)%k%H(B)
-m f[ast]$B@\B3Cf$N%/%i%$%"%s%H$,@\B3$r=*$o$k$N$rBT$?$:$KD>$A$KDd;_$7$^$9(B
-m i[mmediate]-m f$B$HF1$8F0:n$G$9(B

pgpool$B$,Dd;_$9$k$H!"(B[logdir]/pgpool_status$B$H$$$&%U%!%$%k$K%P%C%/%(%s%I$N>uBV$r=q$-9~$_$^$9!#(B $BuBV$r$=$3$+$iI|85$7$^$9!#(B $B$3$l$K$h$C$F!"(B

  1. $B%P%C%/%(%s%I$,Dd;_$7$F%U%'%$%k%*!<%P(B
  2. pgpool$B7PM3$G@5>o$J(BDB$B$r99?7(B
  3. pgpool$B$rDd;_(B
  4. $BDd;_$7$F$$$?(BDB$B$r:F5/F0(B
  5. pgpool$B$r:F5/F0(B

$B$H$$$&%7!<%1%s%9$G!"IT@09g$N$"$k(BDB$B$+$i%l%W%j%1!<%7%g%s>uBV$K0\9T$9$k$3$H$rKI$0$3$H$,$G$-$^$9!#(B

$B$b$7$b(BDB$B$N>uBV$KIT@09g$,$J$/$J$C$F$$$k!"$"$k$$$O(Bpgpool.conf$B$r=q$-49$($F@_Dj$rJQ$($F$7$^$C$?!"$H$$$&$H$-$O(Bpgpool_status$B$r:o=|$9$l$P%P%C%/%(%s%I$N>uBV$NI|85$r9T$$$^$;$s!#(B

pgpool-II$B$N@_Dj%U%!%$%k$N:FFI$_9~$_(B

pgpool-II$B$N@_Dj%U%!%$%k$O!"(Bpgpool-II$B$r:F5/F0$9$k$3$H$J$/FI$_D>$9$3$H$,$G$-$^$9!#(B

pgpool [-f config_file][-a hba_file][-F pcp_config_file] reload

-f config_filepgpool-II$B$N@_Dj%U%!%$%k$r;XDj$7$^$9(B
-a hba_fileHBA$BG'>Z@_Dj%U%!%$%k$r;XDj$7$^$9(B
-F pcp_config_filepcp$B$N@_Dj%U%!%$%k$r;XDj$7$^$9(B

$B@_Dj9`L\$K$h$C$F$O!":FFI$_9~$_$r9T$J$C$F$bH?1G$5$l$J$$$b$N$,$"$k$N$G!"$4Cm0U2<$5$$!#(B $B$^$?!"@_Dj$NJQ99$O$9$G$K@\B3Cf$N%;%C%7%g%s$K$OH?1G$5$l$^$;$s!#

SHOW$B%3%^%s%I(B

$B35MW(B

pgpool-II$B$G$O!"(BSHOW$B%3%^%s%I$r;H$C$F>pJs$r;2>H$9$k$3$H$,$G$-$^$9!#(B SHOW$B$O(BSQL$B%3%^%s%I$G$9$,!"(Bpgpool-II$B$O0lIt$N(BSHOW$B%3%^%s%I$rFH<+$K2rpJs$rJV5Q$7$^$9!#(B $B0J2<$N$h$&$J$b$N$,$"$j$^$9!#(B

  • pool_status $B9=@.>pJs(B
  • pool_nodes DB$B%N!<%I>pJs(B
  • pool_processes pgpool-II$B%W%m%;%9$NFbIt>pJs(B
  • pool_pools $B%3%M%/%7%g%s%W!<%k>pJs(B
  • pool_version pgpool-II$B$N%P!<%8%g%s(B

"pool_status" SQL $B$O0JA0$+$i$"$j$^$9$,!"B>$N(BSQL$B$O(Bpgpool-II 3.0$B$+$iDI2C$5$l$^$7$?!#(B

$BCm0U(B: "pool"$B$H$$$&MQ8l$O!"(Bpgpool$B%W%m%;%9$K$h$C$F=jM-$5$l$k(BPostgreSQL$B%;%C%7%g%s$r;X$7$^$9!#(B pgpool$B$K$h$C$F=jM-$5$l$k%;%C%7%g%sA4BN$G$O$"$j$^$;$s!#(B

pool_status

"SHOW pool_status" $B$O@_Dj%Q%i%a!<%?$NL>A0$HCM!"@bL@$rI=<($7$^$9!#=PNO$N0lIt$r<($7$^$9!#(B

benchs2=# show pool_status;
             item              |              value              |                           description                            
-------------------------------+---------------------------------+------------------------------------------------------------------
 listen_addresses              | 127.0.0.1                       | host name(s) or IP address(es) to listen to
 port                          | 9999                            | pgpool accepting port number
 socket_dir                    | /tmp                            | pgpool socket directory
 num_init_children             | 5                               | # of children initially pre-forked
 child_life_time               | 300                             | if idle for this seconds, child exits

pool_nodes

"SHOW pool_nodes"$B$O!"(BDB$B%N!<%I$N%j%9%H$rI=<($7$^$9!#(B $B%[%9%HL>!"%]!<%HHV9f!">uBV!"=E$_(B($B%m!<%I%P%i%s%9%b!<%I$G1?MQ$7$F$$$k$H$-$K$N$_0UL#$,$"$j$^$9(B)$B$,I=<($5$l$^$9!#(B $B>uBV(B(status)$B$N0UL#$K$D$$$F$O!"(Bpcp_node_info$B%j%U%!%l%s%9(B$B$G@bL@$5$l$F$$$^$9!#(B

benchs2=# show pool_nodes;
  id  |  hostname   | port | status | lb_weight     
------+-------------+------+--------+-----------
   0  | 127.0.0.1   | 5432 | 2      | 0.5
   1  | 192.168.1.7 | 5432 | 3      | 0.5
(2 lignes)

pool_processes

"SHOW pool_processes"$B$O!"@\B3BT$A!"$"$k$$$O@\B3Cf(Bpgpool-II$B$N;R%W%m%;%9$N>uBV$rI=<($7$^$9!#(B

6$B$D$N%+%i%`$,$"$j$^$9!#(B

  • pool_pid $B$O(Bpgpool-II$B%W%m%;%9$N%W%m%;%9(BID$B$G$9!#(B
  • start_time$B$O$3$N%W%m%;%9$,5/F0$5$l$?;~9o$G$9(B(1970$BG/(B1$B7n(B1$BF|$+$i$N7P2aIC$GI=<($5$l$^$9(B)$B!#(B
  • database$B$O$3$N%W%m%;%9$,@\B3$7$F$$$k%G!<%?%Y!<%9L>$G$9!#(B
  • username$B$O$3$N%W%m%;%9$N@\B3$G;HMQ$7$F$$$k%f!<%6L>$G$9!#(B
  • create_time is$B$O$3$N@\B3$,:n@.$5$l$?;~9o$G$9!#(B
  • pool_counter $B$O$3$N@\B3$,;HMQ$5$l$?2s?t$G$9!#(B

$BJV5Q9T?t$O>o$K(Bnum_init_children$B$K$J$j$^$9!#(B $B$^$?!"%G!<%?%Y!<%9L>$J$I$,I=<($5$l$k$N$O!"$=$N%W%m%;%9$K%U%m%s%H%(%s%I$+$i$N@\B3$,$"$k>l9g$K8B$j$^$9!#(B

benchs2=# show pool_processes;
   pool_pid |     start_time      | database | username  |     create_time     | pool_counter 
----------+---------------------+----------+-----------+---------------------+--------------
 8465     | 2010-08-14 08:35:40 |          |           |                     | 
 8466     | 2010-08-14 08:35:40 | benchs   | guillaume | 2010-08-14 08:35:43 | 1
 8467     | 2010-08-14 08:35:40 |          |           |                     | 
 8468     | 2010-08-14 08:35:40 |          |           |                     | 
 8469     | 2010-08-14 08:35:40 |          |           |                     | 
(5 lines)

pool_pools

"SHOW pool_pools"$B$O!"(Bpgpool-II$B$N%3%M%/%7%g%s%W!<%k$N>uBV$rI=<($7$^$9!#(B

11$B$N%+%i%`$,$"$j$^$9!#(B

  • start_time$B$O$3$N%W%m%;%9$,5/F0$5$l$?;~9o$G$9(B(1970$BG/(B1$B7n(B1$BF|$+$i$N7P2aIC$GI=<($5$l$^$9(B)$B!#(B
  • pool_pid $B$O(Bpgpool-II$B%W%m%;%9$N%W%m%;%9(BID$B$G$9!#(B
  • pool_id $B$O%3%M%/%7%g%s%W!<%k(BID$B$G$9!#(B(0$B$+$i(Bmax_pool-1$B$NCM$G$9(B)
  • backend_id $B$O(BPostgreSQL$B%P%C%/%(%s%I$N<1JL;R$G$9(B(0$B$+$i%P%C%/%(%s%I?t(B-1$B$NCM$G$9(B)
  • database$B$O$3$N%W%m%;%9$,@\B3$7$F$$$k%G!<%?%Y!<%9L>$G$9!#(B
  • username$B$O$3$N%W%m%;%9$N@\B3$G;HMQ$7$F$$$k%f!<%6L>$G$9!#(B
  • create_time is$B$O$3$N@\B3$,:n@.$5$l$?;~9o$G$9!#(B
  • majorversion $B$H(B minorversion $B$O$3$N@\B3$G;HMQ$5$l$F$$$k%W%m%H%3%k%P!<%8%g%sHV9f$G$9!#(B
  • pool_counter $B$O$3$N@\B3$,;HMQ$5$l$?2s?t$G$9!#(B
  • pool_backendpid $B$O(B PostgreSQL $B$N%P%C%/%(%s%I%W%m%;%9$N%W%m%;%9(BID$B$G$9!#(B
  • pool_connected $B$O??56CM$G!"(B0$B$J$i%U%m%s%H%(%s%I$+$i$N@\B3L5$7!"(B1$B$J$i@\B3$"$j$rI=$7$^$9!#(B

$BJV5Q9T?t$O>o$K(Bnum_init_children*max_pool$B$K$J$j$^$9!#(B

benchs2=# show pool_pools;
  pool_pid |     start_time      | pool_id | backend_id | database | username  |     create_time     | majorversion | minorversion | pool_counter | pool_backendpid | pool_connected 
----------+---------------------+---------+------------+----------+-----------+---------------------+--------------+--------------+--------------+-----------------+----------------
 8465     | 2010-08-14 08:35:40 | 0       | 0          |          |           |                     |              |              |              |                 | 
 8465     | 2010-08-14 08:35:40 | 1       | 0          |          |           |                     |              |              |              |                 | 
 8465     | 2010-08-14 08:35:40 | 2       | 0          |          |           |                     |              |              |              |                 | 
 8465     | 2010-08-14 08:35:40 | 3       | 0          |          |           |                     |              |              |              |                 | 
 8466     | 2010-08-14 08:35:40 | 0       | 0          | benchs   | guillaume | 2010-08-14 08:35:43 | 3            | 0            | 1            | 8473            | 1
 8466     | 2010-08-14 08:35:40 | 1       | 0          |          |           |                     |              |              |              |                 | 
 8466     | 2010-08-14 08:35:40 | 2       | 0          |          |           |                     |              |              |              |                 | 
 8466     | 2010-08-14 08:35:40 | 3       | 0          |          |           |                     |              |              |              |                 | 
 8467     | 2010-08-14 08:35:40 | 0       | 0          |          |           |                     |              |              |              |                 | 
 8467     | 2010-08-14 08:35:40 | 1       | 0          |          |           |                     |              |              |              |                 | 
 8467     | 2010-08-14 08:35:40 | 2       | 0          |          |           |                     |              |              |              |                 | 
 8467     | 2010-08-14 08:35:40 | 3       | 0          |          |           |                     |              |              |              |                 | 
 8468     | 2010-08-14 08:35:40 | 0       | 0          |          |           |                     |              |              |              |                 | 
 8468     | 2010-08-14 08:35:40 | 1       | 0          |          |           |                     |              |              |              |                 | 
 8468     | 2010-08-14 08:35:40 | 2       | 0          |          |           |                     |              |              |              |                 | 
 8468     | 2010-08-14 08:35:40 | 3       | 0          |          |           |                     |              |              |              |                 | 
 8469     | 2010-08-14 08:35:40 | 0       | 0          |          |           |                     |              |              |              |                 | 
 8469     | 2010-08-14 08:35:40 | 1       | 0          |          |           |                     |              |              |              |                 | 
 8469     | 2010-08-14 08:35:40 | 2       | 0          |          |           |                     |              |              |              |                 | 
 8469     | 2010-08-14 08:35:40 | 3       | 0          |          |           |                     |              |              |              |                 | 
(20 lines)

pool_version

"SHOW pool_version" $B$O(Bpgpool-II$B$N%P!<%8%g%s>pJs$rI=<($7$^$9!#(B $BNc$r<($7$^$9!#(B

benchs2=# show pool_version;
      pool_version      
------------------------
 3.0-dev (umiyameboshi)
(1 line)

$B%*%s%i%$%s%j%+%P%j(B

$B%*%s%i%$%s%j%+%P%j35MW(B

$B$3$N>O$G$O!"%l%W%j%1!<%7%g%s%b!<%I$GMxMQ$9$k>l9g$N%*%s%i%$%s%j%+%P%j5!G=(B $B$K$D$$$F@bL@$7$^$9!#(B $B%^%9%?!?%9%l!<%V%b!<%I(B(Streaming Replication)$B$G$N%*%s%i%$%s%j%+%P%j$NMx(B $BMQJ}K!$K$D$$$F$O!"(BStreaming Replication$B$X$NBP1~(B $B$r$4Mw2<$5$$!#(B $B%l%W%j%1!<%7%g%s%b!<%I$G(B pgpool $B$,F0:n$7$F$$$k>l9g!"%@%&%s$7$?%N!<(B $B%I$N%G!<%?$r:FF14|$5$;$?>e$G!"%N!<%I$rI|5"$5$;$k$3$H$,$G$-$^$9!#$3(B $B$N5!G=$r!V%*%s%i%$%s%j%+%P%j!W$H8F$S$^$9!#(B

$B%*%s%i%$%s%j%+%P%j$rl9g$K(B $B$O(B pgpool.conf $B$N(B backend_hostname$B$J$I$N%Q%i%a!<%?$rDI2C$7$F$*$-!"@_Dj%U%!%$%k(B $B$r:FFI$_9~$_$5$;$k$H!"%N!<%I$,@Z$jN%$5$l$?>uBV$G(B pgpool $B$K%N!<%I>pJs$,EPO?$5$l$^$9!#(B

$B$^$?!"%j%+%P%j$9$k%N!<%I$N(B PostgreSQL $B$,$9$G$KF0:nCf$G$"$l$P!"$"$i(B $B$+$8$a(B PostgreSQL $B$r%7%c%C%H%@%&%s$5$;$F$*$$$F$/$@$5$$!#(B

pgpool $B$G$O%*%s%i%$%s%j%+%P%j$r(B 2 $BCJ3,$KJ,$1$F

  • CHECKPOINT $B $B%U%!!<%9%H%9%F!<%8$N $B@\B3$,$9$Y$F@ZCG$5$l$k$^$GBT5!(B
  • CHECKPOINT $B $B%;%+%s%I%9%F!<%8$N postmaster $B$N5/F0(B(pgpool_remote_start $B$N $B%N!<%I$NI|5"(B

    $B%G!<%?F14|$NBh0lCJ3,$r!V%U%!!<%9%H%9%F!<%8!W$H8F$S$^$9!#%U%!!<%9%H(B $B%9%F!<%8Cf$K(B1 $B2sL\$N%G!<%?F14|$r9T$$$^$9!#%U%!!<%9%H%9%F!<%8Cf$O%G!<(B $B%?$N99?7$d;2>H$rJB9T$7$F9T$&$3$H$,$G$-$^$9!#(B

    $B%U%!!<%9%H%9%F!<%8$G=hM}$9$kFbMF$O%f!<%6$,Dj5A$9$k$3$H$,$G$-$^$9!#(B $B%9%/%j%W%H$G$O(B 3 $B$D$N0z?t$r

  • $B%^%9%?$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B
  • $B%j%+%P%j%N!<%I$N%[%9%HL>(B
  • $B%j%+%P%j%N!<%I$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B

    $Bl9g(B $B$K$O!"$=$N@\B3$r$9$Y$F%V%m%C%/$7$^$9!#(B

    $B%;%+%s%I%9%F!<%8$G=hM}$9$kFbMF$O%f!<%6$,Dj5A$9$k$3$H$,$G$-$^$9!#(B $B%9%/%j%W%H$G$O(B 3 $B$D$N0z?t$r

    1. $B%^%9%?$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B
    2. $B%j%+%P%j%N!<%I$N%[%9%HL>(B
    3. $B%j%+%P%j%N!<%I$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B

    $B$9$Y$F$N@\B3$,=*N;$5$l$k$H!"%U%!!<%9%H%9%F!<%80J9_$K99?7$5$l$?%G!<(B $B%?$rF14|$9$k$?$a$N%;%+%s%I%9%F!<%8$,3+;O$5$l$^$9!#$=$3$G:G=*E*$J%G!<(B $B%?$NF14|$r9T$$$^$9!#$3$N4V$O%/%i%$%"%s%H$+$i$O(B pgpool $B$X$N@\B3$,BT(B $B$?$5$l$k>uBV$K$J$j$^$9!#(B

    $B$J$*!"%*%s%i%$%s%j%+%P%j$N@)8B;v9`$H$7$F!"J#?t$N%[%9%H$K(B pgpool $B$r(B $BG[CV$7$F%l%W%j%1!<%7%g%s$5$;$F$$$k>l9g$K$O!"%*%s%i%$%s%j%+%P%j$O@5(B $B$7$/F0:n$7$^$;$s!#$I$l$+$N(B pgpool $B$K%j%+%P%j%j%/%(%9%H$r=P$7$?;~$K!"(B $BB>$N(B pgpool $B$+$i99?7$,EAHB$9$k$H!"%G!<%?$rF14|$5$;$k$3$H$,$G$-$J$/(B $B$J$j$^$9!#(B

    pgpool $B$N@_Dj(B

    $B%*%s%i%$%s%j%+%P%j$r@_Dj$9$k$?$a$K$O!"(Bpgpool.conf $B$N0J2<$NCM$r@_Dj(B $B$7$F$/$@$5$$!#(B

    • backend_data_directory
    • recovery_user
    • recovery_password
    • recovery_1st_stage_command
    • recovery_2nd_stage_command

    C $B8@8l4X?t$N%$%s%9%H!<%k(B

    $B

      pgpool-II-x.x.x/sql/pgpool-recovery/
    

    $B$K$"$j$^$9!#%G%#%l%/%H%j$r0\F0$7!"(Bmake install $B$7$F$/$@$5$$!#(B

      % cd pgpool-II-x.x.x/sql/pgpool-recovery/
      % make install
    

    C $B8@8l4X?t$N%b%8%e!<%k$r%$%s%9%H!<%k$7$?$i!"B3$$$F(B C $B8@8l4X?t$r8F$S$@(B $B$9$?$a$N(B SQL $B$r%$%s%9%H!<%k$7$^$9!#(B

      % cd pgpool-II-x.x.x/sql/pgpool-recovery/
      % psql -f pgpool-recovery.sql template1
    

    $B%j%+%P%j%9%/%j%W%H$NG[CV(B

    $B%G!<%?$rF14|$5$;$k$?$a$N%9%/%j%W%H$H!"%j%b!<%H$+$i(B postmaster $B$r:F5/F0(B $B$5$;$k$?$a$N%9%/%j%W%H$r3F%N!<%I$N(B $PGDATA $B0J2<$KG[CV$7$^$9!#$"$i$+$8(B $B$a(Bpgpool-II-x.x.x/sample $B0J2<$K%5%s%W%k%9%/%j%W%H$bMQ0U$7$F$"$j$^$9$N(B $B$G;29M$K$7$F$/$@$5$$!#$3$3$G$O%5%s%W%k%9%/%j%W%H$r;H$C$F!"(BPITR $B$K$h$k(B $B%j%+%P%jJ}K!$H!"(Brsync $B$K$h$k%j%+%P%jJ}K!$r@bL@$7$^$9!#(B

    PITR $B$K$h$k%j%+%P%j(B

    $B$3$3$G$O(B PostgreSQL 8.2 $B0J9_$G(B PITR $B5!G=$r;H$C$F%j%+%P%j$r$9$k@_DjNc$r(B $B@bL@$7$^$9!#(BPITR $B$K$h$k%j%+%P%j$r$9$k>l9g$K$O$"$i$+$8$a(B PostgreSQL $B$N(B $B@_Dj$G%m%0$r%"!<%+%$%V$5$;$k$h$&$K$7$F$*$$$F$/$@$5$$!#(B

    $B$^$:%U%!!<%9%H%9%F!<%8$G%Y!<%9%P%C%/%"%C%W$r$r(B copy-base-backup $B$H$7$^$9(B)$B$rMQ0U$7(B $B$^$9!#Nc$($P0J2<$N$h$&$J%9%/%j%W%H$G

      #! /bin/sh
    
      DATA=$1
      RECOVERY_TARGET=$2
      RECOVERY_DATA=$3
    
      psql -c "select pg_start_backup('pgpool-recovery')" postgres
      echo "restore_command = 'scp $HOSTNAME:/data/archive_log/%f %p'" > /data/recovery.conf
      tar -C /data -zcf pgsql.tar.gz pgsql
      psql -c 'select pg_stop_backup()' postgres
      scp pgsql.tar.gz $RECOVERY_TARGET:$RECOVERY_DATA
    

    $B%Y!<%9%P%C%/%"%C%W

    restore_command = 'scp master:/data/archive_log/%f %p'
    

    $B%;%+%s%I%9%F!<%8$G$O:G?7$N>uBV$^$G(B PITR $B$K$h$k%j%+%P%j$ro!"%H%i%s%6%/%7%g%s%m%0$r@Z$jBX$($k$K$O!"(Bpg_switch_xlog $B4X?t$rMxMQ(B $B$7$^$9$,!"$3$N4X?t$O!"%"!<%+%$%V%m%0%U%!%$%k$,@8@.$5$l$kA0$K=*N;$7$F(B $B$7$^$&2DG=@-$,$"$j$^$9!#(B $B$=$3$G!"$h$j0BA4$K%*%s%i%$%s%j%+%P%j$r9T$&$?$a$K(B pgpool_switch_xlog $B4X?t$,MQ0U$5$l$F$$$^$9!#(B pgpool_switch_xlog $B4X?t$N4pK\F0:n$O(B pg_switch_xlog $B4X?t$HF1$8$G$9$,!"(B $B%H%i%s%6%/%7%g%s%m%0$N@Z$jBX$($K$h$k%"!<%+%$%V%m%0%U%!%$%k$N@8@.$r(B $BBT$C$F$+$i=*N;$7$^$9!#(B $B$3$N4X?t$O!"A0=R$N!V(BC$B8@8l4X?t$N%$%s%9%H!<%k!W$r

    #! /bin/sh
    # Online recovery 2nd stage script
    #
    datadir=$1		# master dabatase cluster
    DEST=$2			# hostname of the DB node to be recovered
    DESTDIR=$3		# database cluster of the DB node to be recovered
    port=5432		# PostgreSQL port number
    archdir=/data/archive_log	# archive log directory
    
    # Force to flush current value of sequences to xlog 
    psql -p $port -t -c 'SELECT datname FROM pg_database WHERE NOT datistemplate AND datallowconn' template1|
    while read i
    do
      if [ "$i" != "" ];then
        psql -p $port -c "SELECT setval(oid, nextval(oid)) FROM pg_class WHERE relkind = 'S'" $i
      fi
    done
    
    psql -p $port -c "SELECT pgpool_switch_xlog('$archdir')" template1
    

    $B%9%/%j%W%HCf$N(Bwhile$B%k!<%W$O!"A4%G!<%?%Y!<%9Cf$N%7!<%1%s%9CM$r%H%i%s%6%/%7%g%s%m%0$KEG$-=P$7$^$9!#(B $B$3$l$K$h$C$F!"%7!<%1%s%9$b@5$7$/%j%+%P%j$5$l$k$h$&$K$J$j$^$9!#(B

    $B%9%/%j%W%H$NG[CV$,40N;$7$?$i(B pgpool.conf $B$K@_Dj$7$^$9!#(B

    recovery_1st_stage_command = 'copy-base-backup'
    recovery_2nd_stage_command = 'pgpool_recovery_pitr'
    

    $B$3$l$G(B PITR $B$K$h$k%*%s%i%$%s%j%+%P%j$N=`Hw$,40N;$G$9!#(B

    pgpool_remote_start

    $B%G!<%?:FF14|8e$K(B postmaster $B$r5/F0$5$;$k%9%/%j%W%H$G$9!#(B pgpool $B$+$i$O0J2<$N7A<0$G%9%/%j%W%H$r

      % pgpool_remote_start remote_host remote_datadir
      remote_host:    $B%j%+%P%j%N!<%I$N%[%9%HL>(B
      remote_datadir: $B%j%+%P%j%N!<%I$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B 
    

    $B%5%s%W%k%9%/%j%W%H$G$O(B ssh $B7PM3$G(B postmaster $B$r5/F0$7$F$$$^$9!#$3$A$i(B $B$b$"$i$+$8$a%Q%9%U%l!<%:L5$7$G(B ssh $B7PM3$G%m%0%$%s$G$-$k$h$&$K@_Dj$7$F(B $B$*$/I,MW$,$"$j$^$9!#(B

    PITR $B$K$h$k%j%+%P%j$G$"$l$P!"(Bpgpool_remote_start $BFb$G%Y!<%9%P%C%/%"%C(B $B%W$rE83+$7!"(Brecovery.conf $B$NFbMF$K$7$?$,$C$F%j%+%P%j$7$?8e$K(B postmaster $B$,@\B32DG=>uBV$K$J$j$^$9!#(B

    #! /bin/sh
    DEST=$1
    DESTDIR=$2
    PGCTL=/usr/local/pgsql/bin/pg_ctl
    
    # Expand a base backup
    ssh -T $DEST 'cd /data/; tar zxf pgsql.tar.gz' 2>/dev/null 1>/dev/null < /dev/null
    # Startup PostgreSQL server
    ssh -T $DEST $PGCTL -w -D $DESTDIR start 2>/dev/null 1>/dev/null < /dev/null &
    

    rsync $B$K$h$k%j%+%P%j(B

    7.4 $B0JA0$N>l9g$O(B PITR $B5!G=$,$"$j$^$;$s!#$^$?!"(B8.0 $B$H(B 8.1 $B$N>l9g$O(B $B%H%i%s%6%/%7%g%s%m%0$r6/@)E*$K@Z$jBX$($k4X?t$,MQ0U$5$l$F$$$^$;$s!#(B $B$=$3$G(B PITR $B$r;H$o$:$K(Brsync $B$r;H$C$?%j%+%P%jJ}K!$r@bL@$7$^$9!#(B sample $B%G%#%l%/%H%j$K(B pgpool_recovery $B$H$$$&%U%!%$%k$,$"$j$^$9!#(B $B%^%9%?$+$iI|5"$5$;$k%N!<%I$X$N%G!<%?$NJ*M}%3%T!<$r9T$&%9%/%j%W%H$G$9!#(B pgpool $B$+$i$O0J2<$N7A<0$G%9%/%j%W%H$r

      % pgpool_recovery datadir remote_host remote_datadir
      datadir:        $B%^%9%?$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B
      remote_host:    $B%j%+%P%j%N!<%I$N%[%9%HL>(B
      remote_datadir: $B%j%+%P%j%N!<%I$N%G!<%?%Y!<%9%/%i%9%?%Q%9(B 
    

    $B%5%s%W%k%9%/%j%W%H$G$O(B rsync $B$r;H$C$FJ*M}%3%T!<$r$7$F$$$^$9!#$b$7(B rsync $B$r;H$&>l9g$O!"%Q%9%U%l!<%:L5$7$G(B ssh $B7PM3$G%m%0%$%s$G$-$k$h$&$K(B $B$"$i$+$8$a@_Dj$7$F$*$/I,MW$,$"$j$^$9!#(B

    rsync$B$K4X$9$kCm5-(B:

    • -c (or --checksum) $B%*%W%7%g%s$rIU$1$J$$$H!"%U%!%$%k$,3NAw$5$l$J$$>l9g$,$"$j$^$9!#(B
    • -z (or --compress)$B%*%W%7%g%s$ODcB.$J%M%C%H%o!<%/$G$O8z2L$,$"$j$^$9$,!"(B 100M$B0J>e$N9bB.$J%M%C%H%o!<%/$G$O$+$($C$F(BCPU$BIi2Y$rA}$d$7!"7k2LE*$KCY$/$J$k$3$H$,$"$j$^$9!#(B $B9bB.%M%C%H%o!<%/$G$O!"$3$N%*%W%7%g%s$r;HMQ$7$J$$$3$H$r$*4+$a$7$^$9!#(B
    • rsync $B$N?7$7$$%P!<%8%g%s(B(3.0.5)$B$G$O!"(B50%$B$b@-G=$,NI$/$J$C$?$H$$$&Js9p$,(B pgpool-general$B%a!<%j%s%0%j%9%H$G$"$j$^$7$?!#(B

    pgpool_recovery $B$r;H$&>l9g$O(B pgpool.conf $B$K0J2<$N9T$rDI2C$7$F$/$@$5$$!#(B

    recovery_1st_stage_command = 'pgpool_recovery'
    recovery_2nd_stage_command = 'pgpool_recovery'
    

    $B%j%+%P%j$N

    $B0J>e$G%*%s%i%$%s%j%+%P%j$N=`Hw$,@0$$$^$7$?!#(B $B%*%s%i%$%s%j%+%P%j$r

    $BCm0UE@$H$7$F!"(Bpcp_recovery_node $B$rl9g$O(B pgmgt.conf.php $BFb$N(B _PGPOOL2_PCP_TIMEOUT $B$rBg$-$/$7$F$/$@$5$$!#(B

    $B%*%s%i%$%s%j%+%P%j$rMxMQ$7$?(BPostgreSQL$B$N%^%$%J!<%P!<%8%g%s%"%C%W(B

    $B%l%W%j%1!<%7%g%s%b!<%I$N>l9g(B

    $B%l%W%j%1!<%7%g%s%b!<%I$G(Bpgpool-II$B$,F0:n$7$F$$$k>l9g$O!"%*%s%i%$%s$G3F%N!<%I$N(BPostgreSQL$B$r%P!<%8%g%s%"%C%W$G$-$^$9!#(B $B$?$@$7!"%N!<%I$N@Z$jN%$7;~$HDI2C;~$K!"(Bpgpool-II$B$K@\B3$7$F$$$k$9$Y$F$N%;%C%7%g%s$,@ZCG$5$l$k$N$GCm0U$7$F$/$@$5$$!#(B $B$^$?!"%*%s%i%$%s%j%+%P%j$,MxMQ$G$-$k%P!<%8%g%s%"%C%W$O%^%$%J!<%P!<%8%g%s%"%C%W$N$_$G!"%@%s%W(B/$B%j%9%H%"$,ITMW$J%j%j!<%9$K8B$j$^$9!#(B

    $B$O$8$a$K!">e5-$N!V%*%s%i%$%s%j%+%P%j$N35MW!W$r;29M$K3F%N!<%I$G%*%s%i%$%s%j%+%P%j$,MxMQ$G$-$k$h$&$K=`Hw$7$^$9!#(B

    PostgreSQL$B$N%P!<%8%g%s%"%C%W$O!"%^%9%?0J30$N%N!<%I$+$i9T$$!":G8e$K%^%9%?%N!<%I$r%P!<%8%g%s%"%C%W$7$^$9!#(B $B$=$3$G!"$^$:%P!<%8%g%s%"%C%W$r9T$&%^%9%?0J30$N#1$D$N%N!<%I$N(BPostgreSQL$B$rDd;_$7$^$9!#(B pgpool-II$B$,(BPostgreSQL$B$NDd;_$r8!CN$9$k$H!"0J2<$N$h$&$J%m%0$r=PNO$7$F=LB`1?E>$K0\9T$7$^$9!#(B $B$=$N:]!"(Bpgpool-II$B$K@\B3$7$F$$$k$9$Y$F$N%;%C%7%g%s$O0lC6@ZCG$5$l$^$9!#(B

    2010-07-27 16:32:29 LOG:   pid 10215: set 1 th backend down status
    2010-07-27 16:32:29 LOG:   pid 10215: starting degeneration. shutdown host localhost(5433)
    2010-07-27 16:32:29 LOG:   pid 10215: failover_handler: set new master node: 0
    2010-07-27 16:32:29 LOG:   pid 10215: failover done. shutdown host localhost(5433)
    

    $BDd;_$7$?%N!<%I$N(BPostgreSQL$B$r%P!<%8%g%s%"%C%W$7$^$9!#(B $B%P!<%8%g%s%"%C%W$O!"?7$7$$%P!<%8%g%s$N(BPostgreSQL$B$r8E$$%P!<%8%g%s$N%$%s%9%H!<%k@h$K>e=q$-$7$F$b9=$$$^$;$s$,!"LdBj$,5/$-$?;~$K85$N%P!<%8%g%s$KLa$;$k$h$&$K%$%s%9%H!<%k@h$rJQ$($F$*$/$3$H$r$*4+$a$7$^$9!#(B

    $B?7$7$$%P!<%8%g%s$N(BPostgreSQL$B$r8E$$%P!<%8%g%s$HJL$N>l=j$K%$%s%9%H!<%k$7$?>l9g!"%j%+%P%j%9%/%j%W%H$rJT=8$9$k$3$H$J$/$=$N$^$^;HMQ$9$k$K$O!"%7%s%\%j%C%/%j%s%/$J$I$r;HMQ$7$F%$%s%9%H!<%k@h$N%Q%9$r0JA0$H9g$o$;$kI,MW$,$"$j$^$9!#(B $B>e=q$-%$%s%9%H!<%k$7$?>l9g$O0J2<$N(BC$B8@8l4X?t$r%$%s%9%H!<%k$9$k$^$G$NA`:n$OITMW$G$9!#(B $B$9$0$K%*%s%i%$%s%j%+%P%j$,

    $B8E$$%P!<%8%g%s$N(BPostgreSQL$B$N%$%s%9%H!<%k@h%G%#%l%/%H%jL>$rJQ99$7$^$9!#(B $B0J2<$O!"(BPostgreSQL$B$,(B/usr/local/pgsql$B$K%$%s%9%H!<%k$5$l$F$$$?$H2>Dj$7$?0lNc$G$9!#(B

    $ mv /usr/local/pgsql /usr/local/pgsql-old
    

    $B?7$7$$%P!<%8%g%s$N(BPostgreSQL$B$N%$%s%9%H!<%k@h$K%7%s%\%j%C%/%j%s%/$r:n@.$7$^$9!#(B $B$3$l$K$h$j!":#$^$G$I$*$j$N%Q%9$G?7$7$$%P!<%8%g%s$N(BPostgreSQL$B$,;HMQ$G$-$k$h$&$K$J$j$^$9!#(B $B0J2<$O!"?7$7$$%P!<%8%g%s$N(BPostgreSQL$B$,(B/usr/local/pgsql-new$B$K%$%s%9%H!<%k$5$l$F$$$k$H2>Dj$7$?0lNc$G$9!#(B

    $ ln -s /usr/local/pgsql-new /usr/local/pgsql
    

    $B%G!<%?%Y!<%9%/%i%9%?%G%#%l%/%H%j$,(BPostgreSQL$B$N%$%s%9%H!<%k@h%G%#%l%/%H%j$N2<0L$K$"$k>l9g$O!"F1$8%Q%9$G%G!<%?%Y!<%9%/%i%9%?$K%"%/%;%9$G$-$k$h$&$K%7%s%\%j%C%/%j%s%/$r:n@.$9$k$+%3%T!<$7$^$9!#(B $B0J2<$O!"%7%s%\%j%C%/%j%s%/$r:n@.$9$kNc$G$9!#(B

    $ ln -s /usr/local/pgsql-old/data /usr/local/pgsql/data
    

    $B?7$7$$%P!<%8%g%s$N(BPostgreSQL$B$K!"%*%s%i%$%s%j%+%P%jMQ$N4X?t$r!V(BC$B8@8l4X?t$N%$%s%9%H!<%k!W$r;29M$K%$%s%9%H!<%k$7$^$9!#(B $B%*%s%i%$%s%j%+%P%j$O!"%G!<%?%Y!<%9%/%i%9%?$r%3%T!<$7$^$9$N$G!":G8e$N(Bpsql$B$r;HMQ$7$?4X?t$N:n@.$OITMW$G$9!#(B make install$B$r

    $B:G8e$K%*%s%i%$%s%j%+%P%j$r

    $B0J>e$N

    Streaming Replication$B$rMxMQ$7$F$$$k>l9g(B

    $B%^%9%?!<%9%l!<%V%b!<%I$G(BStreaming Replication$B$rMxMQ$7$F$$$k>l9g$O!"%*%s%i%$%s$G%9%?%s%P%$$N(BPostgreSQL$B$r%^%$%J!<%P!<%8%g%s%"%C%W$G$-$^$9!#(B

    $B%9%?%s%P%$$N(BPostgreSQL$B$r%^%$%J!<%P!<%8%g%s%"%C%W$9$ke5-$N%l%W%j%1!<%7%g%s%b!<%I$N

    $B%W%i%$%^%j$N(BPostgreSQL$B$N%^%$%J!<%P!<%8%g%s%"%C%W$O!"%*%s%i%$%s$G$O$G$-$^$;$s!#(B pgpool-II$B$NDd;_$,I,MW$K$J$j$^$9!#(B $B%W%i%$%^%j$N(BPostgreSQL$B$b%P!<%8%g%s%"%C%W$NJ}K!<+BN$O!"%9%?%s%P%$$HF1MM$G$9!#(B $B%W%i%$%^%j$N(BPostgreSQL$B$N%P!<%8%g%s%"%C%W$O0J2<$N

  • pgpool-II$B$rDd;_(B
  • $B%W%i%$%^%j$N(BPostgreSQL$B$rDd;_(B
  • $B%W%i%$%^%j$N(BPostgreSQL$B$r%P!<%8%g%s%"%C%W(B
  • $B%W%i%$%^%j$N(BPostgreSQL$B$r5/F0(B
  • pgpool-II$B$r5/F0(B

    $B%P%C%/%"%C%W(B

    $B%P%C%/%(%s%I$H%7%9%F%`(BDB$B$N(BPostgreSQL$B$N%P%C%/%"%C%W$O!"C1BN$N(BPostgreSQL$B$HF1MM$K!"J*M}%P%C%/%"%C%W!"O@M}%P%C%/%"%C%W(B(pg_dump, pg_dumpall)$B!"(BPITR$B$,;HMQ$G$-$^$9!#(B $B$?$@$7!"O@M}%P%C%/%"%C%W$H(BPITR$B$NA`:n$O!"(Bpgpool-II$B$r7PM3$;$:$K(BPostgreSQL$B$KBP$7$FD>@\9T$C$F$/$@$5$$!#(B $B$3$l$O!"(Bload_balance_mode$B$d(Breplicate_select$B$J$I$N@_Dj$K$h$k%P%C%/%"%C%W$N<:GT$rHr$1$k$?$a$G$9!#(B

    $B%l%W%j%1!<%7%g%s%b!<%I!"%^%9%?!<%9%l!<%V%b!<%I(B

    $B%l%W%j%1!<%7%g%s%b!<%I$H%^%9%?!<%9%l!<%V%b!<%I$G(Bpgpool-II$B$,F0:n$7$F$$$k>l9g$O!"%/%i%9%?$r9=@.$7$F$$$k$$$:$l$+$N%N!<%I$G%P%C%/%"%C%W$r9T$$$^$9!#(B

    $B%^%9%?!<%9%l!<%V%b!<%I$GHsF14|$N%l%W%j%1!<%7%g%s$r9T$C$F$$$k>l9g$G!"$+$D!":G?7$N%P%C%/%"%C%W$rl9g$O!"%^%9%?%N!<%I$G%P%C%/%"%C%W$7$F$/$@$5$$!#(B

    $B%P%C%/%"%C%W;~$NCm0UE@$H$7$F!"(BPostgreSQL$B$KBP$7$F(Bpg_dump$B%3%^%s%I$J$I$rl9g$b!"%^%9%?$,1F6A$r

    $B%Q%i%l%k%b!<%I(B

    $B%Q%i%l%k%b!<%I$G(Bpgpool-II$B$,F0:n$7$F$$$k>l9g!"%/%i%9%?A4BN$N%G!<%?$,0l4S@-$N$"$k>uBV$G%P%C%/%"%C%W$r

    $BO@M}%P%C%/%"%C%W$rMxMQ$9$k>l9g$O!"%"%W%j%1!<%7%g%s!"$^$?$O(Bpgpool-II$B$rDd;_$7!"$9$Y$F$N%N!<%I$G(Bpg_dump, pg_dumpall$B%3%^%s%I$r

    PITR$B$rMxMQ$9$k>l9g$O!"$^$:3F%N!<%I$N%7%9%F%`$N;~9o$,$[$\0lCW$7$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B $B$=$7$F!";vA0$K3F%N!<%I$G%"!<%+%$%V%m%0$N@_Dj$r9T$$!"%Y!<%9%P%C%/%"%C%W$ruBV$rJ]$C$?4|4V$,$G$-$^$9!#(B $B%Y!<%9%P%C%/%"%C%W$H%"!<%+%$%V%m%0$r;HMQ$7$F3F%N!<%I$r%j%9%H%"$9$k>l9g$O!"0l;~Dd;_4|4V$N??$sCf$"$?$j$N;~9o$r(Brecovery.conf$B$N(Brecovery_target_time$B$K;XDj$7$?$&$($G!"%j%+%P%j$r9T$C$F$/$@$5$$!#(B

    $B%7%9%F%`(BDB$B$N%P%C%/%"%C%W(B

    $B%Q%i%l%k%/%(%j%b!<%I!"$^$?$O%/%(%j%-%c%C%7%e$r;HMQ$7$F$$$k>l9g$O!"%7%9%F%`(BDB$B$b%P%C%/%"%C%W$9$kI,MW$,$"$j$^$9!#(B pgpool.conf$B$N(Bsystem_db_dbname$B$K@_Dj$7$?%G!<%?%Y!<%9$r%P%C%/%"%C%W$7$F$/$@$5$$!#(B

    pgpool-II$B$NG[CV$K$D$$$F(B

    pgpool-II$B$O!"FHN)$7$?%5!<%P$KG[CV$9$k$3$H$b$G$-$^$9$7!"%"%W%j%1!<%7%g%s%5!<%P$HF15o$5$;$k$3$H$b$G$-$^$9$7!"$=$NB>$NG[CV$b9M$($i$l$^$9!#(B $B$3$3$G$O$=$l$>$l$NG[CVJ}K!$r>R2p$7!"$=$l$>$l$NFCD'!"%a%j%C%H!"%G%a%j%C%H$r8!F$$7$^$9!#(B

      $B@lMQ$N%5!<%P$KG[CV(B

      pgpool-II$B$rJ*M}E*$KFHN)$7$?@lMQ$N%5!<%P$KG[CV$9$kJ}K!$G$9!#(B $BJ,$+$j$d$9$$J}K!$G$9$7!"B>$N%5!<%P%=%U%H%&%'%"$N1F6A$r7W$KA}$d$9I,MW$,$"$k$N$,7gE@$G$9!#(B $B$^$?!"$=$N%5!<%P$,C10l>c32E@$K$J$j$^$9(B(pgpool-II$B$,C10l>c32E@$K$J$k$3$H$r2sHr$9$k$K$O!"8e=R$N(Bpgpool-HA$B$rJ;MQ$7$^$9(B)$B!#(B

      Web$B%5!<%P$d%"%W%j%1!<%7%g%s%5!<%P$HF15o(B

      Apache$B!"(BJBoss$B!"(BTomcat$B$J$I$N(BWeb$B%5!<%P$d%"%W%j%1!<%7%g%s%5!<%P$,2TF/$7$F$$$k%5!<%P$K(Bpgpool-II$B$rF15o$5$;$kJ}K!$G$9!#(B $B$3$NJ}K!$G$O!"(BWeb$B%5!<%P$d%"%W%j%1!<%7%g%s%5!<%P$H(Bpgpool-II$B$NDL?.$,%m!<%+%k%^%7%sFb$K$J$k$N$G!"%=%1%C%HDL?.$,%^%7%s4V$GDL?.$9$k$h$j$b9bB.$K$J$k%a%j%C%H$,$"$j$^$9!#(B $B$^$?!"J#?t$N(BWeb$B%5!<%P!?%"%W%j%1!<%7%g%s%5!<%P$,$"$l$P!"<+A3$HC10l>c32E@$r2sHr$G$-$k$h$&$K$J$j$^$9!#(B ($B$3$N>l9g!"J#?t$N(Bpgpool-II$B$N@_Dj$OF1$8$K$7$F$/$@$5$$(B)$B!#(B $B$J$*!"J#?t$N(Bpgpool-II$B$,F0:n$7$F$$$k%1!<%9$G$O0J2<$NE@$KCm0U$7$F$/$@$5$$!#(B

      • pgpool-II$B$H(BDB$B%5!<%P$N4V$N%M%C%H%o!<%/$,IT0BDj$@$H!"(Bpgpool-II$B$+$i8+$F(BDB$B%N!<%I(B#1$B$,%@%&%s!"B>$N(Bpgpool-II$B$+$i8+$F@5>o!"$H$$$&$h$&$J>uBV$K$J$C$F$7$^$&$3$H$,$"$j$^$9!#(B $B%M%C%H%o!<%/$rFs=E2=$9$k$J$I$7$F!"%M%C%H%o!<%/>c32$,5/$-$J$$$h$&$K$7$F$/$@$5$$!#(B
      • $B%l%W%j%1!<%7%g%s%b!<%I$G!"%*%s%i%$%s%j%+%P%j$N(Bpgpool-II$B$rMn$7$F$/$@$5$$!#(B $B$5$b$J$$$H!"%j%+%P%j8e$N7k2L$K@09g@-$,$J$/$J$k2DG=@-$,$"$j$^$9!#(B $B%^%9%?!

        DB$B%5!<%P$HF15o(B

        PostgreSQL$B$N2TF/$7$F$$$k(BDB$B%5%P$HF15o$5$;$kJ}K!$G$9!#(B $B$3$NJ}K!$G$O!"(Bpgpool-II$B$,C10l>c32E@$K$J$k$3$H$,$J$/!"M>7W$J%5!<%P$rDI2C$9$kI,MW$b$J$$E@$,M%$l$F$$$^$9$,!"%"%W%j%1!<%7%g%s$,$I$N(BDB$B%5!<%P$K@\B3$9$k$N$+$r<+$iH=CG$9$kI,MW$,$"$k$N$,7gE@$G$9!#(B $B$3$NLdBj$r2r7h$9$k$K$O!"(Bpgpool-HA$B$HAH$_9g$o$;$F2>A[(BIP$B$rMxMQ$7$^$9!#(B

      pgpool-HA$B$K$D$$$F(B

      pgpool-HA$B$O!"(Bheartbeat$B$J$I$rMxMQ$7$F(Bpgpool-II$B$rFs=E2=$7!"(Bpgpool-II$B<+BN$N2DMQ@-$r>e$2$k%=%U%H%&%'%"$G$9!#(B pgpool-II$B$HF1MM!"(Bpgpool$B%W%m%8%'%/%H$N%5%V%W%m%8%'%/%H$G$"$j!"(Bpgpool$B$N3+H/%5%$%H$G(BOSS$B$H$7$F8x3+$5$l$F$$$^$9!#(B

      $B%H%i%V%k%7%e!<%F%#%s%0(B

      $B$3$N>O$G$O!"(Bpgpool-II$B$r1?MQCf$KD>LL$7$d$9$$>c32$H!"$=$NBP:vJ}K!$r%1!<%9JL$K@bL@$7$^$9!#(B

        health check failed

        $B%X%k%9%A%'%C%/$G(Bpgpool-II$B$,(BDB$B%N!<%I$N>c32$r8!=P$7$^$7$?!#(B

        2010-07-23 16:42:57 ERROR: pid 20031: health check failed. 1 th host foo at port 5432 is down
        2010-07-23 16:42:57 LOG:   pid 20031: set 1 th backend down status
        2010-07-23 16:42:57 LOG:   pid 20031: starting degeneration. shutdown host foot(5432)
        2010-07-23 16:42:58 LOG:   pid 20031: failover_handler: set new master node: 0
        2010-07-23 16:42:58 LOG:   pid 20031: failover done. shutdown host foo(5432)
        

        $B$3$N%m%0$O!"(BDB$B%N!<%I(B1($B%[%9%HL>(B foo)$B$,%@%&%s$7$F@Z$jN%$5$l!"?7$7$/(BDB$B%N!<%I(B0$B$,%^%9%?$H$7$F07$o$l=P$7$?$3$H$r<($7$F$$$^$9!#(B DB$B%N!<%I(B1$B$r%A%'%C%/$7!"0[>o860x$rfailed to read kind from frontend

        2010-07-26 18:43:24 LOG:   pid 24161: ProcessFrontendResponse: failed to read kind from frontend. frontend abnormally exited
        

        pgpool-II$B$+$i8+$F%/%i%$%"%s%H$,FMA3%;%C%7%g%s$r@ZCG$7$?:]$K$3$N$h$&$J%m%0$,;D$j$^$9!#(B $B860x$H$7$F$O!"%"%W%j%1!<%7%g%s$N%P%0!"%"%W%j%1!<%7%g%s$,6/@)=*N;$5$l$?!"$d%M%C%H%o!<%/$N0l;~E*$J>c32$,9M$($i$l$^$9!#(B $B$3$N%m%0$,=P$F$b!"(BDB$B$,2u$l$k$H$+0l4S@-$,$J$/$J$k$h$&$JLdBj$O5/$-$^$;$s$,!"(B $B7QB3$7$F$3$N%m%0$,=PNO$5$l$k$h$&$G$"$l$P!"%"%W%j%1!<%7%g%s$d%M%C%H%o!<%/$N>c32$rD4::$9$k$3$H$r$*$9$9$a$7$^$9!#(B

        kind mismatch$B%(%i!<(B

        $B%l%W%j%1!<%7%g%s%b!<%I$G1?MQ$7$F$$$k>l9g$K=P$k$3$H$,$"$k%(%i!<$G$9!#(B

        2010-07-22 14:18:32 ERROR: pid 9966: kind mismatch among backends. Possible last query was: "FETCH ALL FROM c;" kind details are: 0[T] 1[E: cursor "c" does not exist]
        

        pgpool-II$B$O!"(BSQL$B%3%^%s%I$r3F(BDB$B%N!<%I$KAw?.$7$?$i!"3F(BDB$B%N!<%I$+$iF1$8%l%9%]%s%9$,JV$C$F$/$k$3$H$r4|BT$7$^$9!#(B $B$3$N%(%i!<$O!"0[$J$k%l%9%]%s%9$,JV$C$F$-$?$3$H$r<($7$^$9!#(B Possible last query was:$B$N$"$H$K!"$3$N%(%i!<$rJV$9860x$H$J$C$?Ld$$9g$o$;$N(BSQL$BJ8$,I=<($5$l$^$9!#(B $B$=$N$"$H$G!"3F(BDB$B%N!<%I$+$i$N%l%9%]%s%9$Nl9g$O!"(BPostgreSQL$B$N%(%i!<%a%C%;!<%8$,I=<($5$l$^$9!#(B $B$3$3$G$O!"(B"0[T]"$B$K$h$j!"(B0$BHVL\$N(BDB$B%N!<%I$,(B"T"($B9T>pJs$N3+;O(B)$B$H$$$&1~Ez$rJV$7$?$3$H!"0lJ}(B"1[E"$B$G!"(BDB$B%N!<%I(B1$B$,%(%i!<$rJV$7$?$H$3$H!"$=$N%(%i!<%a%C%;!<%8$O!V(Bcursor "c" does not exist$B!W$G$"$C$?$3$H$,$o$+$j$^$9!#(B

        $BCm0U(B: $B$3$N%(%i!<$O!"%^%9%?!<%9%l!<%V%b!<%I$G$b=P$k$3$H$,$"$j$^$9!#(B $B$?$H$($P!"(BSET$B%3%^%s%I$O!"3F%;%C%7%g%s$N>uBV$rF1$8$K$9$k$?$a$K!"4pK\E*$K$9$Y$F$N(BDB$B%N!<%I$KAw?.$5$l$k$+$i$G$9!#(B

        $B%G!<%?%Y!<%9$rD4$Y$F860x$rFCDj$7!"$b$7(BDB$B$NF14|$,Jx$l$F$$$k$h$&$G$"$l$P!"%*%s%i%$%s%j%+%P%j$r;H$C$F@5$7$$%G!<%?$HF14|$5$;$F$/$@$5$$!#(B

        pgpool detected difference of the number of inserted, updated or deleted tuples

        $B%l%W%j%1!<%7%g%s%b!<%I$K$*$$$F!"(Bpgpool-II$B$,!"(BDB$B%N!<%I4V$G(BINSERT/UPDATE/DELETE$B$,JV$97k2L9T$N0c$$$r8!=P$7$^$7$?!#(B

        2010-07-22 11:49:28 ERROR: pid 30710: pgpool detected difference of the number of inserted, updated or deleted tuples. Possible last query was: "update t1 set i = 1;"
        2010-07-22 11:49:28 LOG:   pid 30710: ReadyForQuery: Degenerate backends: 1
        2010-07-22 11:49:28 LOG:   pid 30710: ReadyForQuery: Affected tuples are: 0 1
        

        $B$3$NNc$G$O!"(Bupdate t1 set i = 1$B$K$h$C$F99?7$5$l$?9T?t$,!"(BDB$B%N!<%I$G0[$J$C$F$$$^$9!#(B $B$^$?!"

        $B@5$7$/$J$$%G!<%?$r;}$C$F$$$k$H;W$o$l$k(BDB$B%N!<%I$rDd;_$7!"%*%s%i%$%s%j%+%P%j$r;H$C$F@5$7$$%G!<%?$HF14|$5$;$F$/$@$5$$!#(B

      $B@)8B;v9`(B

      PostgreSQL$B$N5!G=(B

      • pg_terminate_backend()$B$G%P%C%/%(%s%I$r=*N;$5$;$k$H%U%'%$%k%*!<%P$7$F$7$^$$$^$9!#(B $B$3$l$O!"(BPostgreSQL$B$,(Bpostmaster$B$r%7%c%C%H%@%&%s$7$?$H$-$HF1$8%a%C%;!<%8$r(Bpgpool$B$KAw$k$?$a$G$9!#(B $B:#$N$H$3$mBP1~J}K!$O$J$$$N$G!"$3$N4X?t$r;H$o$J$$$h$&$K$7$F$/$@$5$$!#(B

      $BG'>Z!&%"%/%;%9@)8fJ}<0(B

      • $B%l%W%j%1!<%7%g%s%b!<%I$^$?%^%9%?(B/$B%9%l!<%V%b!<%I;~$K$O(Btrust, reject, clear text password, pam, $BG'>ZJ}<0$@$1$,MxMQ$G$-$^$9!#(B crypt$BG'>Z$OMxMQ$G$-$^$;$s!#(B md5$BG'>Z$K4X$7$F$O!"(BPostgreSQL$B$K3:Ev%f!<%6$r(Bmd5$BG'>ZIU$G(BPostgreSQL$B$KEPO?$7!"Z%U%!%$%k$r:n@.$9$k$3$H$K$h$jMxMQ$G$-$k$h$&$K$J$j$^$9!#(B
        1. DB$B%f!<%6$N%"%+%&%s%H$G%m%0%$%s$7!"(B"pg_md5 --md5auth $B%Q%9%o!<%I(B" $B$^$?$O(B "pg_md5 --md5auth --username=$B%f!<%6L>(B $B%Q%9%o!<%I(B" $B$rmd5$B$K$h$j0E9f2=$5$l$?%f!<%6L>$H%Q%9%o!<%I$,(Bpool_passwd$B$KEPO?$5$l$^$9!#(B pool_passwd$B$,$^$@B8:_$7$J$1$l$P!"(Bpgpool.conf$B$HF1$8%G%#%l%/%H%jFb$K:n@.$5$l$^$9!#(B
        2. pool_passwd$B$N%U%)!<%^%C%H$O!"(B"$B%f!<%6L>(B:$B%Q%9%o!<%I(B"$B$H$J$C$F$$$^$9!#(B
        3. pool_hba.conf$B$K(Bmd5$BG'>Z$N%(%s%H%j$r:n@.$7$^$9!#(B pool_hba.conf$B$K$D$$$F$O!"(B$B%/%i%$%"%s%HG'>Z(B(HBA)$B$N$?$a$N(Bpool_hba.conf$B@_DjJ}K!(B $B$r;2>H$7$F$/$@$5$$!#(B
        4. $BCm0U;v9`(B: pool_passwd$B$KEPO?$9$k%Q%9%o!<%I$O!"(BPostgreSQL$B$KEPO?$7$?%Q%9%o!<%I$H40A4$KF1$8$G$J$1$l$P$J$j$^$;$s!#(B
      • $B$=$l0J30$N%b!<%I$G$O!"(Btrust, reject, clear text password, pam, crypt, md5$BG'>ZJ}<0$@$1$,MxMQ$G$-$^$9!#(B

      $B0l;~%F!<%V%k$N07$$(B

      $B@)8BBP>](B:$B%^%9%?!<%9%l!<%V%b!<%I(B

      $B0l;~%F!<%V%k$N:n@.!"99?7$O>o$K%^%9%?(B(primary)$B$G9T$J$o$l$^$9!#(B $B0l;~%F!<%V%k$N8!:w$b!"(Bpgpool-II 3.0$B0J9_$G$O!"%^%9%?$G9T$J$o$l$k$N$G!"0l;~%F!<%V%k$r;H$C$F$$$k$+$I$&$+$r0U<1$9$kI,MW$O$"$j$^$;$s!#(B $B$?$@$7!"J8;zNs$H$7$F0l;~%F!<%V%kL>$r(BSELECT$B$NCf$G;H$C$F$$$k>l9g$O0l;~%F!<%V%k$+$I$&$+$N3NG'$N$7$h$&$,$J$$$N$G!"Ii2YJ,;6$5$l$F$7$^$$!"$=$N0l;~%F!<%V%k$,8+$D$+$i$J$$$+!"$b$7$/$OF1$8L>A0$NJL$N%F!<%V%k$r8!:w$7$F$7$^$&$3$H$K$J$j$^$9!#(B $B$=$N$h$&$JLd$$9g$o$;$OHr$1$k$+!"(B/*NO LOADB ALNCE*/$B$N%3%a%s%H$rA^F~$7$F$/$@$5$$!#(B

      SELECT 't1'::regclass::oid;
      

      $B$A$J$_$K!"(Bpsql$B$N(B\d$B%3%^%s%I$N$h$&$K!"%7%9%F%`%+%?%m%0$rLd$$9g$o$;$kCf$GJ8;zNs$H$7$F$N%F!<%V%kL>$r;H$C$F$$$k>l9g$O!"(Bpgpool-II 3.0$B0J9_$G$O%^%9%?$G8!:w$,9T$J$o$l$k$N$G!"LdBj$K$J$j$^$;$s!#(B $B$J$<$J$i!"%7%9%F%`%+%?%m%0$X$N8!:w$O>o$K%^%9%?$G9T$J$o$l$k$+$i$G$9!#(B

      $B%l%W%j%1!<%7%g%s%b!<%I$GCm0U$,I,MW$J4X?t$J$I(B

      pgpool-II$B$G$OF1$8Ld$$9g$o$;$rAw$C$F$b0[$J$k7k(B $B2L$rJV$9$h$&$J%G!<%?!"$?$H$($PMp?t$d%H%i%s%6%/%7%g%s(BID$B!"(BOID$B$N$h$&$J$b$N$K4X$7$F$O%l%W%j%1!<%7%g(B $B%s$O$7$^$9$,!"(B2$BBf$N%[%9%H$G$^$C$?$/F1$8CM$,%3%T!<$5$l$kJ]>Z$O$"$j$^$;$s!#(B

      $B%7%j%"%k7?$K4X$7$F$O!"(Binsert_lock$B$rM-8z$K$7$F$*$1$P%F!<%V%k%m%C%/$rMxMQ$7$FF14|$,l9g$O<+F0E*$K%l%W%j%1!<%7%g%s$5$l$k$N$GF14|$,

      pgpool-II 2.3$B0J9_$G$O!"%F!<%V%k$N%G%U%)%k%HCM$G$NMxMQ$b4^$a!"(BCURRENT_TIMESTAMP, CURRENT_DATE, now()$B$O!"<+F0E*$K%^%9%?B&$+$i

      • pgpool-II 3.1$B$h$jA0$N%P!<%8%g%s$G$O(BDEFAULT$B$K%?%$%`%9%?%s%W$rJV$9<0$,4^$^$l$F$$$k$+$I$&$+$NH=Dj$O@53N$G$O$"$j$^$;$s!#Nc$($P(B
        CREATE TABLE rel1(
          d1 date DEFAULT CURRENT_DATE + 1
        )
        
        $B$N$h$&$J$b$N$b8=:_$N%?%$%`%9%?%s%W$H$7$F=q$-49$($r9T$$$^$9!#(B pgpool-II 3.1$B0J9_$G$O!"3HD%%W%m%H%3%k$H(BPREPARE$B0J30$N>l9g$K$3$NE@$,2~A1$5$l$F$*$j!">e5-$NNc$K$"$k$h$&$JNc$b@5$7$/=hM}$5$l$^$9(B($B$D$^$j!"%G%U%)%k%HCM$H$7$FL@F|$NF|IU$,%;%C%H$5$l$^$9(B)$B!#(B $B$J$*!"Ns$NDj5A$,!"(B
        foo bigint default (date_part('epoch'::text,('now'::text)::timestamp(3) with time zone) * (1000)::double precision)
        
        $B$N$h$&$K!"%G!<%?7?$,F|IU!";~9o0J30$K$J$C$F$$$k>l9g$O=q$-49$($O9T$J$$$^$;(B $B$s!#(B
      • INSERT ... SELECT$B$G$O!"Ns$N(BDEFAULT$B$KBP$9$k=q$-49$($r9T$$$^$;$s!#Nc$($P!"(B
        CREATE TABLE rel1(
          c1 int,
          c2 timestamp default now()
        )
        
        $B$N;~!"(B
        INSERT INTO rel1(c1) VALUES(1)
        
        $B$O(B
        INSERT INTO rel1(c1, c2) VALUES(1, '2009-01-01 23:59:59.123456+09')
        
        $B$N$h$&$K=q$-49$($i$l$^$9$,(B
        INSERT INTO rel1(c1) SELECT 1
        
        $B$O=q$-49$($i$l$^$;$s!#(B

      PostgreSQL 8.2$B$+$=$l$h$jA0$N(BPostgreSQL$B$r$*;H$$$N>l9g!"(B CREATE TEMP TABLE$B$G:n@.$5$l$?%F!<%V%k$O%U%m%s%H%(%s%I$,%;%C%7%g(B $B%s$r=*N;$7$F$b:o=|$5$l$^$;$s!#$3$l$O!"%3%M%/%7%g%s%W!<%k$N8z(B $B2L$G%P%C%/%(%s%I$+$i8+$k$H%;%C%7%g%s$,7QB3$7$F$$$k$h$&$K8+$((B $B$k$+$i$G$9!#%;%C%7%g%s$N=*N;;~$KL@<(E*$K(BDROP TABLE$B$9$k$+!"%H(B $B%i%s%6%/%7%g%s%V%m%C%/$NCf$G(BCREATE TEMP TABLE ... ON COMMIT DROP$B$r$*;H$$2<$5$$!#(B

      PostgreSQL 8.3$B0J9_$G$O!"(Breset_query_list$B$K(BDISCARD ALL$B$r;XDj$9$l$P<+F0E*$K:o=|$5$l$k$N$GLdBj$"$j$^$;$s!#(B

      $B%/%(%j$K$D$$$F(B

      pgpool-II $B$G$O07$&$3$H$,$G$-$J$$%/%(%j$K$D$$$F@bL@$7$^$9!#(B

      $B%^%k%A%P%$%HJ8;z$K$D$$$F(B

      $B@)8BBP>](B:$BA4%b!<%I(B

      $B8=:_$N

      $B%^%k%A%9%F!<%H%a%s%H(B

      $B@)8BBP>](B:$BA4%b!<%I(B

      $B%^%k%A%9%F!<%H%a%s%H(B(';' $B$G6h@Z$C$FJ#?t$NJ8$r$^$H$a$?(B SQL)$B$r(B pgpool $B$,(B $B@5$7$/=hM}$9$k$3$H$,$G$-$^$;$s!#I,$:J8$rJ,$1$FAw?.$7$F$/$@$5$$!#(B

      $B$J$*!"(Bpsql $B$r;H$C$F(B pgpool $B$K@\B3$7$?>l9g$O!"(Bpsql $BFbIt$G%^%k%A%9%F!<%H(B $B%a%s%H$rJ,2r$7!"(B1 $B$D$:$DAw?.$9$k$N$G!"

      $B3HD%Ld$$9g$o$;%W%m%H%3%k(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      JDBC $B%I%i%$%P$J$I$N$h$&$J3HD%Ld$$9g$o$;%W%m%H%3%k$K$OBP1~$7$F$$$^$;$s!#(B $BI,$:4J0WLd$$9g$o$;%W%m%H%3%k$r;HMQ$7$F$/$@$5$$!#(B

      SELECT

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      postgresql.conf $B$N(B add_missing_from$B@_DjCM$r(B off ($B%G%U%)%k%HCM(B)$B$K@_Dj$7$F$/$@$5$$!#(B add_missing_from $B@_DjCM$,(B on $B$N;~$K;H$($k%/%(%j$O@5$7$/(Bpgpool$B$G=hM}$5$l$J$$2DG=@-(B $B$,$"$j$^$9!#(B

      INSERT

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      $B%G!<%?J,3d$r$7$F$$$k%F!<%V%k$KBP$7$F(BINSERT $B$r9T$&:]$K$O!"J,3d%k!<%k$H$J$kCM$r(B DEFAULT $B$K$O$G$-$^$;$s!#Nc$((B $B$P%F!<%V%k(B t $B$K(B x $B$H$$$&%+%i%`$,$"$j!"(Bx $B$,J,3d%k!<%k$NBP>]%+%i%`$@$C$?(B $B>l9g$K$O!"(B

        INSERT INTO t(x) VALUES (DEFAULT);
      

      $B$O$G$-$^$;$s!#$^$?!"J,3d%k!<%k$H$J$kCM$,4X?t8F$S=P$7$N>l9g$b(B $BBP1~$7$F$$$^$;$s!#(B

        INSERT INTO t(x) VALUES (func());
      

      $BI,$:L@<(E*$KCM$rM?$($kI,MW$,$"$j$^$9!#(B $B$^$?!"(BSELECT INTO $B$d(B INSERT INTO ... SELECT $B$H$$$&7A<0$b%5%]!<%H$7$F$$(B $B$^$;$s!#(B

      UPDATE

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      $BJ,3d%k!<%k$H$J$k%+%i%`$r99?7$9$k$HJ,3d%k!<%k$K=>$C$?%G!<%?$N@09g@-$,Jx(B $B$l$k2DG=@-$,$"$j$^$9!#(Bpgpool-II $B$G$OFC$K%G!<%?$N:FG[CV$H$$$&$3$H$O9T$$(B $B$^$;$s!#(B

      $B$b$7@)Ls0cH?$J$I$K$h$j0lIt$N%N!<%I$G%(%i!<$K$J$C$?>l9g$K%m!<%k%P%C%/$9(B $B$k$3$H$O$G$-$^$;$s!#(B

      WHERE $B6g$K%G!<%?J,3d$r9T$C$?%F!<%V%k$r;2>H$9$k%5%V%/%(%j$d4X?t8F$S=P$7$,$"$k>l9g$K$O@5$7$/F0$+$J$$2DG=@-$,(B $B$"$j$^$9!#(B

      $BNc!'(BUPDATE branches set bid = 100 where bid = (select max(bid) from beances);
      

      SELECT ... FOR UPDATE

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      WHERE $B6g$K%G!<%?J,3d$r9T$C$?%F!<%V%k$r;2>H$9$k%5%V%/%(%j$d4X?t8F$S=P$7$,$"$k>l9g$K$O@5$7$/F0$+$J$$2DG=@-$,(B $B$"$j$^$9!#(B

      $BNc!'(BSELECT * FROM  branches where bid = (select max(bid) from beances) FOR UPDATE;
      

      COPY

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      COPY BINARY $B$K$OBP1~$7$F$$$^$;$s!#$^$?!"%U%!%$%k$+$i$N%3%T!<$K$bBP1~$7(B $B$F$$$^$;$s!#(BCOPY FROM STDIN $B$H(B COPY TO STDOUT $B$N$_BP1~$7$F$$$^$9!#(B

      ALTER/CREATE TABLE $B$K$D$$$F(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      pgpool $B$K>pJs$r99?7$5$;$k$?$a$K$O!"(Bpgpool $B$r:F5/F0$9$kI,MW$,$"$j$^$9!#(B

      $B%H%i%s%6%/%7%g%s(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      $B%H%i%s%6%/%7%g%sCf$KH/9T$5$l$k(B SELECT $B$O(B dblink $B$r7PM3$9$k>l9g$K$OJL%H(B $B%i%s%6%/%7%g%s$K$J$j$^$9!#0J2<$KNc$r<($7$^$9!#(B

        BEGIN;
        INSERT INTO t(a) VALUES (1);
        SELECT * FROM t ORDER BY a; <-- $B>e$N(B INSERT $B$7$?CM$O8+$($J$$(B
        END;
      

      $B$^$?@)Ls0cH?$J$I$K$h$j0lIt$N%N!<%I$G%(%i!<$K$J$C$?>l9g$K%m!<%k%P%C%/$9$k$3$H$O$G$-$^$;$s!#(B

      View/Rule

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      View $B$d(B Rule $B$O3F%N!<%I$KF1$8FbMF$,Dj5A$5$l$^$9!#(B

        CREATE VIEW sample AS SELECT * FROM a, b where a.i = b.i
      

      $B>e5-$N$h$&$J(B $B%F!<%V%k7k9g$r4^$s$@(BVIEW$B$O!"(Ba $B$H(B b $B$OF1$8%N!<%IFb$G$N$_7k9g=hM}$r9T$$!"(B $B3F%N!<%I$+$i$Nl9g$K!"(BVIEW$B$r:n@.$9$k$3$H$O2DG=$G$9!#$3$N>l9g$K$O(BVIEW$B$r(B pgpool_catalog.dist_def$B%F!<%V%k$K(BVIEW$B$rEPO?$7$F$*$-$^$9!#(B $B$^$?!"(Bpgpool_catalog.dist_def$B%F!<%V%k$N(Bcol_name$B$H(Bdist_def_func$B$K$O!"(BVIEW$B$GDj5A$7$?(B $B%+%i%`$H(BVIEW$B$KBP$7$F(BINSERT$B$,H/9T$5$l$?>l9g$K2?=h$N%N!<%I$K%/%(%j$rLd$$9g$o$;$k$N$+$r7hDj(B $B$9$k4X?t$rEPO?$7$F$/$@$5$$!#(B

      $B4X?t(B/$B%H%j%,$K$D$$$F(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      $B4X?t$O3F%N!<%I$KF1$8FbMF$,Dj5A$5$l$^$9!#4X?tFb$G(B JOIN $B$dB>$N%N!<%I$N%G!<(B $B%?A`:n$r9T$&$3$H$O$G$-$^$;$s!#(B

      Natural Join $B$K$D$$$F(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      Natural Join $B$OMxMQ$G$-$^$;$s!#(BON $B7k9g>r7o$^$?$O!"(BUSING($B7k9g%+%i%`(B) $B$rL@<(E*$K(B $B;XDj$9$kI,MW$,$"$j$^$9!#(B

      USING $B6g$K$D$$$F(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      JOIN $B9=J8$NCf$GMxMQ$5$l$k(B USING $B6g$O%/%(%j$N=q$-49$(=hM}$K$h$C$F(B ON $B6g$K(B $BJQ49$5$l$^$9!#$=$N$?$a!"%?!<%2%C%H%j%9%H$K(B "*" $B$rMxMQ$9$kLd$$9g$o$;$r9T$&(B $B>l9g$K$O!"F1$8NsL>$,=PNO$5$l$^$9!#(B

      $B%G%C%I%m%C%/$K$D$$$F(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      $B%N!<%I4V$r$^$?$,$k%G%C%I%m%C%/$r8!=P$9$k$3$H$,$G$-$^$;$s!#(B

      $BNc!'(Baccounts$B%F!<%V%k$O0J2<$N%k!<%k$GJ,3d$5$l$F$$$k!#(B
          aid <= 100000 $B%N!<%I(B 0
          aid >= 100000 $B%N!<%I(B 1
      
        A) BEGIN;
        B) BEGIN;
        A) SELECT * FROM accounts WHERE aid = 100001 FOR UPDATE;
        B) SELECT * FROM accounts WHERE aid = 100000 FOR UPDATE;
        A) SELECT * FROM accounts WHERE aid = 100000 FOR UPDATE;
        B) SELECT * FROM accounts WHERE aid = 100001 FOR UPDATE;
      

      $B$3$N>l9g!"C10l$N%N!<%I$G$O%G%C%I%m%C%/$r8!CN$G$-$J$$$?$a!"(Bpgpool $B$OBT(B $B$?$5$l$?>uBV$K$J$j$^$9!#$3$N8=>]$O(B SELECT FOR UPDATE $B0J30$K$b9T%m%C%/(B $B$r3MF@$9$k%/%(%j$GH/@8$9$k2DG=@-$,$"$j$^$9!#(B

      $B$^$?!"$"$k%N!<%I$G%G%C%I%m%C%/$,H/@8$7$?>l9g$O!"3F%N!<%I$N%H%i%s%6%/%7%g(B $B%s$N>uBV$,0[$J$k>u67$K$J$j$^$9!#$=$N$?$a!"%G%C%I%m%C%/$r8!CN$7$?;~E@$G(B $B0J2<$N%m%0$r=PNO$7$F(B pgpool $B$O3:Ev$N%W%m%;%9$r=*N;$5$;$^$9!#(B

        pool_read_kind: kind does not match between master(84) slot[1] (69)
      

      $B%9%-!<%^$K$D$$$F(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      public $B0J30$N%9%-!<%^$KB0$9$h$&$J%*%V%8%'%/%H$N;2>H$OI,$:(B

        $B%9%-!<%^(B.$B%*%V%8%'%/%H(B
      

      $B$H;XDj$9$k$h$&$K$7$F$/$@$5$$!#(B

        set search_path = xxx
      

      $B$r;XDj$7!"%9%-!<%^L>$r>JN,$9$k$H!"(Bpgpool $B$,$I$NJ,;6%k!<%k$rE,MQ$9$k$+(B $BH=CG$G$-$^$;$s!#(B

      $B%F!<%V%kL>!"%+%i%`L>$K$D$$$F(B

      $B@)8BBP>](B:$B%Q%i%l%k%b!<%I(B

      pool_$B$G;O$^$k%F!<%V%k!"%+%i%`L>$O;H$($^$;$s!#%/%(%j=q$-49$($N:]$KFbIt=hM}$G;HMQ$7$^$9!#(B

      $B%7%9%F%`(B DB

      $BJ,3d%k!<%k(B

      pgpool-II $B$G$OJ,3d%k!<%k$NBP>]$N%+%i%`$O(B 1 $B$D$N$_$H$7$^$9!#(Bx $B$H(B y $B$N(B OR $B>r7o$J$I$H$$$C$?$b$N$K$OBP1~$7$F$$$^$;$s!#(B

      $B%S%k%I$KI,MW$J4D6-(B

      libpq

      pgpool-II $B$G$O(B libpq $B$r%j%s%/$7$^$9!#(Blibpq $B$N%P!<%8%g%s$O(B 2.0 $B$N>l9g!"(B configure $B$K<:GT$7$^$9!#I,$:(B libpq 3.0 $B0J9_(B(PostgreSQL 7.4$B0J9_(B) $B$r%j%s%/$9$k$h(B $B$&$K$7$F$/$@$5$$!#$^$?!"(BSystemDB $B$N%P!<%8%g%s$b(B PostgreSQL 7.4 $B0J9_$,(B $BI,?\$K$J$j$^$9!#(B

      $B%/%(%j%-%c%C%7%e(B

      $B8=:_$N%/%(%j%-%c%C%7%e$N

      $B%j%U%!%l%s%9(B

      PCP$B%3%^%s%I%j%U%!%l%s%9(B

      PCP$B%3%^%s%I0lMw(B

      pgpool-II$B$rA`:n$9$k(BUNIX$B%3%^%s%I$H$7$F!"0J2<$N$b$N$,$"$j$^$9!#(B

         * pcp_node_count	- $B%N!<%I?t$rpJs$rpJs$rpJs$r:3J$5$;$k(B
         * pcp_stop_pgpool	- pgpool-II$B$rDd;_$5$;$k(B
         * pcp_recovery_node  - $B%^%9%?%N!<%I$r;H$C$F%N!<%I$N%G!<%?$r:FF14|!"%N!<%I5/F0$5$;$k(B
      

      $B6&DL0z?t(B

      $BA4$F$N%3%^%s%I$K$O6&DL$9$k0z?t$,$"$j$^$9!#$3$l$O@\B3$9$k(Bpgpool-II$B$N>pJs$dG'>Z(B $B>pJs$J$I$G$9!#(B

         ex)
         $ pcp_node_count [-d] 10 localhost 9898 postgres hogehoge
      
          $BBh0l0z?t(B    - $B%?%$%`%"%&%HCM(B
      		$BIC?t$G%?%$%`%"%&%HCM$r;XDj$7$^$9!#$3$N;~4VFb$K(Bpgpool-II$B$+$i1~(B
      		$BEz$,$J$$>l9g$O%3%M%/%7%g%s$r@ZCG$7$F=*N;$7$^$9!#$J$*!"(B
      		$B$3$N%*%W%7%g%s$O(B 2.1 $B$+$i$OL5;k$9$k$h$&$K$J$C$F$$$^$9!#(B
          $BBhFs0z?t(B	- pgpool-II$B$,2TF0$7$F$$$k%[%9%HL>(B
          $BBh;00z?t(B	- PCP$B%]!<%HHV9f(B
          $BBh;M0z?t(B	- PCP$B%f!<%6L>(B
          $BBh8^0z?t(B	- PCP$B%Q%9%o!<%I(B
      
      	$B%*%W%7%g%s0z?t$H$7$F!"(B-d$B$,$"$j$^$9!#(B-d$B$,;XDj$5$l$k$H%G%P%C%0>pJs$r=PNO$7$^$9!#(B
      

      PCP$B%f!<%6L>$H%Q%9%o!<%I$O(B ./configure $B;~$K(B --prefix $B$G;XDj$7$?(B '$B%$%s%9%H!<%k%G%#%l%/%H%j(B/etc' $B$K$"$k(B pcp.conf $BFb$K5-=R$5$l$F$$$k$b$N$r;XDj(B $B$7$^$9!#(Bpcp.conf $B%U%!%$%k$N>l=j$,%G%U%)%k%H0J30$N>l=j$K$"$k>l9g!"(Bpgpool $B$N(B -F $B%*%W%7%g%s$G$=$N0LCV$r;XDj$9$k$3$H$,$G$-$^$9!#(B $B%Q%9%o!<%I$O%3%^%s%I$KEO$9;~E@$G(Bmd5$B2=$5$l$F$$$kI,MW$O$"$j$^$;$s!#(B

      $B%3%^%s%I72(B

      $BA4$F$N%3%^%s%I$O!"

      pcp_node_count

         $B=q<0!'(B
      	pcp_node_count  _timeout_  _host_  _port_  _userid_  _passwd_
      

      pgpool-II$B$N(B pgpool.conf $B$GDj5A$5$l$?%N!<%I$NAm?t$rI=<($7$^$9!#@Z$jN%$5$l$F$$$k(B $B%N!<%I$N6hJL$O$7$^$;$s!#(B

      pcp_node_info

         $B=q<0!'(B
      	pcp_node_info  _timeout_  _host_  _port_  _userid_  _passwd_  _nodeid_
      

      pgpool-II$B$N(B pgpool.conf $B$GDj5A$5$l$?%N!<%I$N>pJs$rI=<($7$^$9!#=PNO7k2L$O0J2<$N(B $BNc$NDL$j$G$9!#(B

         ex)
         $ pcp_node_info 10 localhost 9898 postgres hogehoge 0
         host1 5432 1 1073741823.500000
      
         $B7k2L$O0J2<$N=g$NDL$j$G$9!#(B
         1. $B%N!<%I$N%[%9%HL>(B
         2. $B%N!<%I$N%]!<%HHV9f(B
         3. $B%9%F!<%?%9(B
         4. $B%m!<%I%P%i%s%9%&%'%$%H(B
      
         $B%9%F!<%?%9$O(B[0..3]$B$^$G$N?t;z$GI=$o$5$l$^$9!#3F?t;z$N0UL#$O!'(B
         0 - $B=i4|2=;~$N$_$KI=$o$l$k!#(BPCP$B%3%^%s%I$GI=<($5$l$k$3$H$O$J$$!#(B
         1 - $B%N!<%I2TF/Cf!#@\B3L5$7(B
         2 - $B%N!<%I2TF/Cf!#@\B3M-$j(B
         3 - $B%N!<%I%@%&%s(B
      

      $B%m!<%I%P%i%s%9%&%'%$%H$O(BNormalize$B$5$l$?%U%)!<%^%C%H$G=PNO$5$l$^$9!#(B

      $BDj5A$5$l$F$$$J$$%N!<%I(BID$B$r;XDj$9$k$H(BBackendError$B$HI=<($5$l!"=*N;%3!<%I(B12$B$G=*(B $BN;$7$^$9!#(B

      pcp_proc_count

         $B=q<0!'(B
      	pcp_proc_count  _timeout_  _host_  _port_  _userid_  _passwd_
      

      pgpool-II$B$N;R%W%m%;%9$N%W%m%;%9(BID$B$r0lMwI=<($7$^$9!#J#?t$"$k>l9g$O6uGrJ8;z$G6h(B $B@Z$i$l$^$9!#(B

      pcp_proc_info

         $B=q<0!'(B
      	pcp_proc_info  _timeout_  _host_  _port_  _userid_  _passwd_  _processid_
      

      pgpool-II$B$N;R%W%m%;%9>pJs$rI=<($7$^$9!#=PNO7k2L$O0J2<$NNc$NDL$j$G$9!#(B

         ex)
         $ pcp_proc_info 10 localhost 9898 postgres hogehoge 3815
         postgres_db postgres 1150769932 1150767351 3 0 1 14067 1
         postgres_db postgres 1150769932 1150767351 3 0 1 14068 1
      
         $B7k2L$O0J2<$N=g$NDL$j$G$9!#(B
         1. $B@\B3$7$F$$$k%G!<%?%Y!<%9L>(B
         2. $B@\B3$7$F$$$k%f!<%6L>(B
         3. $B%W%m%;%9%9%?!<%H;~9o(B
         4. $B%3%M%/%7%g%s:n@.;~9o(B
         5. $B%W%m%H%3%k%a%8%c!<%P!<%8%g%s(B
         6. $B%W%m%H%3%k%^%$%J!<%P!<%8%g%s(B
         7. $B%3%M%/%7%g%s;HMQ2s?t(B
         8. PostgreSQL$B%P%C%/%(%s%I%W%m%;%9(BID
         9. $B%U%m%s%H%(%s%I$+$i@\B3$,$"$k>l9g$O(B1$B!"$=$&$G$J$1$l$P(B0
      
         $B%3%M%/%7%g%s$,%P%C%/%(%s%I$KBP$7$FD%$i$l$F$$$J$$>l9g!"%G!<%?$OI=<($5$l$^$;$s!#(B
         $B%3%M%/%7%g%s>pJs$,J#?t$"$k>l9g!"J#?t9T$K(B1$B9T(B1$B%3%M%/%7%g%s>pJs$GI=<($5$l$^$9!#(B
         $B;~9o$O(BEPOCH$B%?%$%`$+$i$NIC?t$GI=$o$5$l$^$9!#(B
      
         $BDj5A$5$l$F$$$J$$%W%m%;%9(BID$B$r;XDj$9$k$H(BBackendError$B$HI=<($5$l!"=*N;%3!<%I(B12$B$G(B
         $B=*N;$7$^$9!#(B
      

      pcp_systemdb_info

         $B=q<0!'(B
      	pcp_systemdb_info  _timeout_  _host_  _port_  _userid_  _passwd_
      
         pgpool-II$B$N%7%9%F%`(BDB$B>pJs$rI=<($7$^$9!#=PNO7k2L$O0J2<$NDL$j$G$9!#(B
      
         $ pcp_systemdb_info 10 localhost 9898 postgres hogehoge
         localhost 5432 yamaguti '' pgpool_catalog pgpool 3
         yamaguti public accounts aid 4 aid bid abalance filler integer integer integer character(84) dist_def_accounts
         yamaguti public branches bid 3 bid bbalance filler integer integer character(84) dist_def_branches
         yamaguti public tellers bid 4 tid bid tbalance filler integer integer integer character(84) dist_def_tellers
      
         $B$^$:0l9TL\$K%7%9%F%`(BDB$B$N>pJs$,I=<($5$l$^$9!#7k2L$O0J2<$N=g$NDL$j$G$9!#(B
      
         1. $B%[%9%HL>(B
         2. $B%]!<%HHV9f(B
         3. $B%f!<%6L>(B
         4. $B%Q%9%o!<%I!#6u$N>l9g$O(B''$B$GI=<($5$l$^$9!#(B
         5. $B%9%-!<%^L>(B
         6. $B%G!<%?%Y!<%9L>(B
         7. $BJ,;6Dj5A4X?t$N?t(B
      
         $BFs9TL\0J9_$OJ,;6Dj5A$,I=<($5$l$^$9!#J#?t$NDj5A$,$"$k>l9g$O!"0l$D$NDj5A$K$D$-(B
         $B0l9TI=<($5$l$^$9!#7k2L$O0J2<$N=g$NDL$j$G$9!#(B
      
         1. $BJ,;6BP>]$N%G!<%?%Y!<%9L>(B
         2. $BJ,;6BP>]$N%9%-!<%^L>(B
         3. $BJ,;6BP>]$N%F!<%V%kL>(B
         4. $BJ,;6%-!<%+%i%`L>(B
         5. $BJ,;6BP>]%F!<%V%kCf$N%+%i%`?t(B
         6. $B%+%i%`L>%j%9%H(B(5.$B$N%+%i%`?tJ,I=<($5$l$^$9(B)
         7. $B%+%i%`7?%j%9%H(B(5.$B$N%+%i%`?tJ,I=<($5$l$^$9(B)
         8. $BJ,;6Dj5A4X?tL>(B
      
         $B%7%9%F%`(BDB$B$,Dj5A$5$l$F$$$J$$(B(pgpool-II$B%b!<%I$G$J$$!"$+$D%/%(%j%-%c%C%7%e$,%*(B
         $B%U$N(B)$B>l9g$K
      

      pcp_detach_node

         $B=q<0!'(B
      	pcp_detach_node  [-g] _timeout_  _host_  _port_  _userid_  _passwd_  _nodeid_
      
         pgpool-II$B$N%N!<%I$r@Z$jN%$7$^$9!#(B
      -g$B$r;XDj$9$k$H!"$9$Y$F$N%/%i%$%"%s%H$,@\B3$r=*N;$9$k$^$G%N!<%I$rI|5"$7$^$;$s!#(B
      ($B$?$@$7!"(Bclient_idle_limit_in_recovery $B$,(B -1 $B$"$k$$$O!"(Brecovery_timeout $B$,@_Dj$5$l$F$$$k>l9g$r=|$/(B)
      

      pcp_attach_node

         $B=q<0!'(B
      	pcp_attach_node  _timeout_  _host_  _port_  _userid_  _passwd_  _nodeid_
      
         pgpool-II$B$N%N!<%I$rI|5"$5$;$^$9!#(B
      

      pcp_promote_node

         $B=q<0(B:
      	pcp_promote_node  [-g] _timeout_  _host_  _port_  _userid_  _passwd_  _nodeid_
      
         pgpool-II$B$N%N!<%I$r%^%9%?!<$K>:3J$5$;$^$9!#$3$l$O!"%^%9%?!<%9%l!<%V%b!<%I$G%9%H%j!<%_%s%0(B
      $B%l%W%j%1!<%7%g%s9=@.$N>l9g$N$_;HMQ$G$-$^$9!#(B
      -g$B$r;XDj$9$k$H!"$9$Y$F$N%/%i%$%"%s%H$,@\B3$r=*N;$9$k$^$G%N!<%I$r%^%9%?!<$K>:3J$7$^$;$s!#(B
      ($B$?$@$7!"(Bclient_idle_limit_in_recovery $B$,(B -1 $B$"$k$$$O!"(Brecovery_timeout $B$,@_Dj$5$l$F$$$k>l9g$r=|$/(B)
      

      pcp_stop_pgpool

         $B=q<0!'(B
      	pcp_stop_pgpool  _timeout_  _host_  _port_  _userid_  _passwd_  _mode_
      
         pgpool-II$B$r;XDj$5$l$?%b!<%I$G%7%c%C%H%@%&%s$7$^$9!#;XDj$G$-$k%b!<%I$O0J2<$NDL(B
         $B$j$G$9!#(B
      
         s	- smart $B%b!<%I(B
         f	- fast $B%b!<%I(B   
         i	- immediate $B%b!<%I(B
      
         pgpool-II$B$,5/F0$7$F$$$J$$>l9g$O(BConnectionError$B$HI=<($5$l!"=*N;%3!<%I(B8$B$G=*N;$7(B
         $B$^$9!#(B
      
         $B"((B $B8=:_$O(B fast $B%b!<%I$H(B immediate $B%7%c%C%H%@%&%s$N=hM}$K6hJL$O$"$j(B
            $B$^$;$s!#L?Na$rAw$C$?;~E@$G%/%i%$%"%s%H$,$$$k!&$$$J$$$K4X$o$i$:(B
            $B%7%c%C%H%@%&%s=hM}$rB(:B$K9T$$$^$9!#(B
      

      pcp_recovery_node

         $B=q<0!'(B
      	pcp_recovery_node  _timeout_  _host_  _port_  _userid_  _passwd_  _nodeid_
      
         pgpool-II$B$N%N!<%I$r%G!<%?$r:FF14|$5$;$?>e$GI|5"$5$;$^$9!#(B
      

      $B=*N;%9%F!<%?%9(B

      PCP$B%3%^%s%I$O@5>o$K=hM}$r=*N;$7$?>l9g!"%9%F!<%?%9(B'0'$B$G=*N;$7$^$9!#%(%i!<$,5/(B $B$-$?>l9g$O0J2<$N%9%F!<%?%9$K$h$j=*N;$7$^$9!#(B

         UNKNOWNERR	1	$BITL@$J%(%i!<(B
         EOFERR	2	EOF$B%(%i!<(B
         NOMEMERR	3	$B%a%b%jITB-(B
         READERR	4	$B%5!<%P$+$i$N%G!<%?FI$_9~$_%(%i!<(B
         WRITEERR	5	$B%5!<%P$X$N%G!<%?=q$-9~$_%(%i!<(B
         TIMEOUTERR	6	$B%?%$%`%"%&%H(B
         INVALERR	7	PCP$B%3%^%s%I$X$NIT@5$J%*%W%7%g%s(B
         CONNERR	8	$B%5!<%P@\B3%(%i!<(B
         NOCONNERR	9	$B@\B3$,B8:_$7$J$$(B
         SOCKERR	10	$B%=%1%C%H%(%i!<(B
         HOSTERR	11	$B%[%9%HL>2r7h%(%i!<(B
         BACKENDERR	12	$B%5!<%P$G$N(BPCP$B=hM}%(%i!pJs$rl9g$J$I(B
         AUTHERR	13	$BG'>Z%(%i!<(B
      

      $BFbIt>pJs(B

      pgpool-II$B%P!<%8%g%s(B 2.0 $B0J9_$G$O!"(B1.x $B%P!<%8%g%s$HHf$YBgI}$J2~NI$,2C$($i$l$F$$$^$9!#(B 1.x $B%P!<%8%g%s$N>pJs$H$O8_49@-$,$J$$$N$GCm0U$7$F$/$@$5$$!#(B

      $B%Q%i%l%k

      pgpool-II$B$K$O%Q%i%l%k

      $B$3$N%(%s%8%s$O!"%Q%i%l%k%b!<%I$N$H$-$K!"3F%N!<%I$KF1$8%/%(%j$rLd$$9g(B $B$o$;!"%N!<%I$N1~Ez=g$K7k2L$r%U%m%s%H%(%s%I$KAw?.$9$k%(%s%8%s$N$3$H$r(B $B;X$7$^$9!#(B

      $B%/%(%j=q$-49$((B

      $B%Q%i%l%k%b!<%I$G(Bpgpool-II$B$,9T$&%/%(%j=q$-49$($K$D$$$F@bL@$7$^$9!#(B

      $B%Q%i%l%k%b!<%I$G$O!"%/%i%$%"%s%H$,Aw?.$7$?8!:w7O(B(SELECT$B=hM}(B)$B$NLd$$9g$o$;$O!"Bg$-$/J,$1$F0J2<$N(B 2 $B$D$N=hM}$r9T$$$^$9!#(B

      1. $B%/%(%j$N2r@O(B
      2. $B%/%(%j$N=q$-49$((B

      $B$3$l$i#2$D$N=hM}$K$D$$$F=g$K@bL@CW$7$^$9!#(B

      $B%/%(%j$N2r@O(B

      $B$O$8$a$K(B

      $B%/%i%$%"%s%H$,Aw?.$7$?8!:w7O$NLd$$9g$o$;$O!"(BSQL$B%Q!<%5$rDL$7$F$+$i%7%9%F%`(BDB$B$KEPO?$5$l$F$$$k>pJs$r(B $B$b$H$K%/%(%j2r@O$r9T$$$^$9!#%/%(%j$N2r@O$K$O2A$7$F$$$^$9!#(B $B$3$3$GuBV$r(B P $B>uBV!"0l$D$N%N!<%I$G=hM}$9$kI,MW$,$"$k>uBV$r(B L $B>u(B $BBV$H$7$FDj5A$7$^$9!#(B $B$b$&0l$D!"FCJL$J>uBV$H$7$F(B S $B>uBV$,$"$j$^$9!#$3$l$O!"$9$Y$F$N%N!<%I$+$iuBV$N$3$H$r<($7$^$9!#(B $BNc$($P!"%=!<%H=hM}$G$9!#(Bpgpool_catalog.dist_def$B%F!<%V%k$KEPO?$5$l$F$$$k%F!<%V%k$N%G!<%?$KBP$9$k%=!<(B $B%H=hM}$O!"$9$Y$F$N%N!<%I$+$i%G!<%?$r

      $B8!:w7O%/%(%j$O!"0J2<$N=hM}=g$K2r@O$5$l!"uBV$H$J$k$H!"0J9_$N=hM}$OI,$:(B S $B>uBV$H$J$j$^$9!#(B $B$=$7$F:G8e$N(BSELECT$B$N:G=*uBV$K$h$j!"2?=h$N(BDB$B$G=hM}$5$l$k$+$,(B $B7hDj$7$^$9!#(B

      1. UNION$B!"(BEXTRACT$B!"(BINTERCECT$B$,MxMQ$5$l$F$$$k$+$I$&$+(B
      2. FROM $B6g$N TARGETLIST $B$K$h$k WHERE $B6g(B $B$K$k GROUP BY $B6g$K$h$k HAVING $B6g$K$h$k ORDER BY $B6g$K$h$k LIMIT OFFSET $B=R8l$K SELECT$B$N:G=*

        SELECT$B$N:G=*l=j$H$N4X78$O!"0J2<$NDL$j$G$9!#(B

        $B$B=hM}$5$l$k>l=j(B
        L$B$$$:$l$+$N%N!<%I$KLd$$9g$o$;$r9T$&(B
        P$B$9$Y$F$N%N!<%IF1$8Ld$$9g$o$;$r9T$$!"%Q%i%l%k
        S$B%7%9%F%`(BDB$B$G=hM}$r9T$C$?8e$K%/%i%$%"%s%H$KJV5Q(B

        $B$^$?%5%V%/%(%j$KBP$7$F$b>e5-$N%k!<%k$,E,1~$5$l$^$9!#(B $B0J2<$NC1=c$J%/%(%j$G$O!"(Bp1-table$B$,%7%9%F%`(BDB$B$N(Bpgpool_catalog.dist_def$B%F!<%V%k$KEPO?$5$l$F$$$k>l9g!"$D$^$j%G!<%?$NJ,3d$,(B $B9T$o$l$F$$$k>l9g$K$O!"%5%V%/%(%j$N:G=* SELECT * FROM (SELECT * FROM P1-table) as P2-table;

      $B

      FROM $B6g$N

      $B8!:w7O%/%(%j(B(SELECT)$B$O(B FROM $B6g$K$h$j%G!<%?$N=89g$rDj5A$7$^$9!#(BFROM$B6g$+$i9=@.$;$l$k%G!<%?=89g$O(B P $B>uBV(B, L $B>u(B $BBV!"$^$?$O(B S $B>uBV$rl9g$K$O!"C1=c$K%F!<%V%k$Nl9g(B $B$K$O!"7k9gJ}K!$K$h$C$F0J2<$N$h$&$K

      $B7k9gJ}<0(B LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN$B!!!!!!$=$NB>!!!!!!(B
      $B:8!@1&(B P L S P L S P L S P L S
      P S P S S S S S S S S P S
      L S L S P L S S L S P L S
      S S S S S S S S S S S S S

      $B0J2<$NNc$G$O!"(BP1-table$B$,(B P $B>uBV$N%F!<%V%k$G(BL1-table,L2-table$B$,(B L $B>uBV$N%F!<%V%k$@$H$7$^$9!#(B $B$9$k$H>e5-$NI=$K$h$j!"(BP1-table ($B:8(B)$B$H(BL1-table ($B1&(B) $B$,7k9g$7(B P $B>uBV$H$J$j!"$5$i$K(B P $B>uBV$H(B L $B>uBV$N(BL2-table$B$,7k9g$7$F(BFROM$B6g$NuBV$H$J$j$^$9!#(B

      	SELECT * FROM P1-table,L1-table,L2-table;
      

      TARGETLIST $B$H(B WHERE$B6g$N

      $B4pK\E*$J%/%(%j$G$O!"(BFROM $B6g$HF1$85$7$^$9!#(B $B$7$+$7!"(BTARGETLIST $B$H(B WHERE$B6g$Nl9g$KJQ2=$7$^$9!#(B

      1. $B%5%V%/%(%j$,$"$k>l9g(B
      2. FROM$B6g$,(B P $B>uBV$N>l9g!"$+$D!"(BTARGETLIST$B$K=8Ls4X?t!"(BDISTINCT$B$,$"$k>l9g(B
      3. FROM$B6g$GDj5A$7$?%F!<%V%k(B($B%G!<%?=89g(B)$B$KB8:_$7$J$$%+%i%`$,;H$o$l$F$$$k>l9g(B

      $B%5%V%/%(%j$N:G=*uBV!"$^$?$O!"(BS $B>uBV$N>l9g$K$O!"(BTARGETLIST$B!"(BWHERE$B6g$NuBV$H$J$j$^$9!#(B $B2<5-$NNc$G$O!"%5%V%/%(%j$G;H$o$l$F$$$k%F!<%V%k$,!"(BP $B>uBV$N>l9g$K$O!"%5%V%/%(%j$N:G=*uBV$H$J$j$^$9!#$=$N$?$a(B L1-table$B$NuBV$H$J$j(B $B!"$3$N%/%(%j$Nl=j$O%7%9%F%`(BDB$B$H$J$j$^$9!#(B

      	SELECT * FROM L1-table where L1-table.column IN (SELECT * FROM P1-table);
      

      FROM $B6g$,(B P $B>uBV$N>l9g!"$+$D!"(BTARGETLIST$B$K=8Ls4X?t$,$"$k>l9g$O!"%G!<%?$ruBV(B $B$KA+0\$7$^$9!#(B $B$^$?!"FCDj$N>r7o$N2<$G$O!"=8Ls4X?t$K$h$k:GE,2=$,9T$o$l$^$9!#(B

      FROM$B6g$GDj5A$7$?%F!<%V%k!"%5%V%/%(%j$K$OB8:_$7$J$$%+%i%`$,(BWHERE$B6g$K;H$o$l$F$$$k>l9g$,$"$j$^$9!#$3$l$O0J2<$N$h$&$JAj4X%5%V%/%(%jFb$GH/@8$7$^$9!#(B

      	SELECT * FROM L1-table FROM L1-table.col1 IN (SELECT * FROM P1-table WHERE P1-table.col = L1-table.col1);
      

      $B>e5-$N%5%V%/%(%j$K;H$o$l$F$$$k(B L1-table.col1$B$O!"(BL1-table$B$r30It;2>H$7$F$$$^$9!#$3$N>l9g$K%5%V%/%(%j$N(BWHERE$B6g$NuBV$H$J$j$^$9!#(B

      GROUP BY $B6g!"(BHAVING $B6g!"(BORDER BY $B6g!"(BLIMIT OFFSET $B=R8l$N

      WHERE$B6g$NuBV$N>l9g$K!"(BGROUP BY , HAVING $B6g!"(BORDER BY $B6g!"(BLIMIT OFFSET $B=R8l$,$"$k$H(BS$B>uBV$KA+0\$7$^$9!#(B GROUP BY$B6g$,B8:_$7$J$$%/%(%j$O(BWHERE$B6g$N5$7$^$9!#$^$?!"(BHAVING$B6g$,L5$$>l9g$K$O(BGROUP BY $B6g$N5$7$^$9!#(B ORDER BY $B6g!"(BLIMIT OFFSET $B=R8l$bF1MM$G$9!#(B

      UNION$B!"(BEXTRACT$B!"(BINTERSECT$B$,;H$o$l$F$$$k>l9g(B

      UNION$B!"(BEXTRAT$B!"(BINTERSECT$B$,;H$C$F$$$k%/%(%j$O:8B&$N(BSELECT$BJ8$H1&B&$N(BSELECT$BJ8$N:G=*uBV$N;~$K$O!"(BL $B>uBV$H$J$j$^$9!#(B $B$^$?!":8B&$H1&B&$N(BSELECT$BJ8$N:G=*uBV!"$+$D(BUNION ALL$B$N>l9g$K$O(B P $B>uBV$H$J$j$^$9!#(B $B$=$NB>$NAH$_9g$o$;$N>l9g$K$O!"(BS$B>uBV$H$J$j$^$9!#(B

      SELECT$B$N:G=*

      $BuBV$N>l9g$K$O(BL$B>uBV!"$9$Y$F(B P $B>uBV$N>l9g$K$O!"(BP $B>uBV$H$J$j$^$9!#(B $B$=$l0J30$O!"(BS $B>uBV$H$J$j$^$9!#(B L $B>uBV$N>l9g$K$O!"(Bpgpool.conf$B$N(Bloadbalance_mode$B$,(Btrue$B$N>l9g$K$OIi2YJ,;6$5$l!"$=$l0J30$N>l9g$K$O(BMASTER$B$KLd$$9g$o$;$r9T$$$^$9!#$^$?!"(BP $B>uBV$N>l9g$K$O!"%Q%i%l%kuBV$N>l9g$K$O!"

      $B%/%(%j=q$-49$((B

      $B%/%(%j$N2r@O%U%'!<%:$GuBV$N(B P1-table $B$H(B L $B>uBV$N(B L1-table $B$r;H$C$?%/%(%j$G@bL@$7$^$9(B

      	SELECT P1-table.col, L1-table.col FROM P1-table,L1-table where P1-table.col = L1-table.col order by P1-table.col;
      

      $B$3$N%/%(%j$G$O(B ORDER BY $B6g$,$"$k$?$a(B S $B>uBV$H$J$j!"(BFROM$B6g!"(BWHERE$B6g!"(BTARGETLIST$B$O(B P $B>uBV$H$J$j$^$9!#(B $B$3$N$h$&$J%/%(%j$G$O0J2<$N$h$&$K=q$-49$($i$l$^$9!#(B

      	SELECT P1-table.col, L1-table.col FROM
      	$B!!!!!!(Bdblink(select pool_parallel(SELECT P1-table.col, L1-table.col FROM P1-table,L1-table where P1-table.col = L1-table.col)) 
        	order by P1-table.col;
      

      $B$3$3$G(Bdblink$B$O(Bpgpool-II$B$KLd$$9g$o$;$rAw?.$7$^$9!#$^$?!"(Bpool_parallel$B$O0z?t$N%/%(%j$r%Q%i%l%ke5-$O$"$/$^$G%$%a!<%8$G$"$j

      $B>e5-$NNc$N$h$&$K!"(BFROM$B6g!"(BWHERE$B6g!"(BTARGETLIST$B$,$9$Y$F(B P $B>uBV$N>l9g$K$O!"(BFROM$B6g!"(BWHERE$B6g!"(BTARGETLIST$B$r$^$H$a$FJBNs=hM}$r9T$$$^$9!#(B

      $B

      	SELECT L1-table.col FROM L1-table WHERE L1-table.col % 2 = 0 AND L1-table.col IN (SELECT P1-table FROM P1-table) ;
      

      $B$3$NNc$G$O!"(BFROM $B6g$O(B L $B>uBV!"(BTARGETLIST$B$b(B L $B>uBV!"(BWHERE$B6g$O(B P $B>uBV$N%5%V%/%(%j$r;}$C$F$$$k$?$a(B S $B>uBV$H$J$j$^$9!#(B $B$3$l$O0J2<$N$h$&$K=q$-49$($,9T$o$l$^$9!#(B

      	SELECT L1-table.col FROM dblink(SELECT loadbalance(SELECT L1-table.col FROM L1-table WHERE L1-table.col % 2 = 0 AND TRUE))
      		WHERE
      			L1-table.col %2 = 0 AND 
      		  L1-table.col IN 
      		  (
      		  	SELECT P1-Table FROM 
      		  	dblink(select pool_parallel(SELECT P1-table FROM P1-table))
      		  ) ;
      

      $B$3$3$G!"(Bpool_loadbalance$B$O%/%(%j$r$$$:$l$+$N%N!<%I$KAw?.$9$k4X?t$G$9!#(B

      $B=8Ls$K$h$k%/%(%j=q$-49$((B

      $B=87W$r9T$&%/%(%j(B($B=8Ls4X?t!"(BGROUP BY )$B$O3F%N!<%I$K7W;;$5$;!"%7%9%F%`(BDB$B$G(B $B:F=87W$r9T$&$3$H$K$h$j!"%7%9%F%`(BDB$B$NIi2Y$r8:$i$7%Q%U%)!<%^%s%9$b8~>e(B $B$7$^$9!#(B

      $B$^$:!":G=i$K(Bpgpool-II$B$,

      FROM $B6g$,(B P $B>uBV$G(B count(*) $B$r;H$C$?%/%(%j$O!"0J2<$N$h$&$K=q$-49$($,9T$o$l$^$9!#(B

          select count(*) from P1-table;
      
          -> $B%/%(%j=q$-49$((B
      
          SELECT 
              sum(pool_c$1) as count 
          FROM 
              dblink(select pool_parallel('select count(*) from  P1-table'))
      					AS pool_$1g (pool_c$1 bigint); 
      

      $B3F%N!<%I$G(Bcount(*) $B$r7W;;$7$?8e$K!"%7%9%F%`(BDB$B$G=87W(B(sum)$B$r$9$k$3$H$K$h(B $B$j!"L\E*$,C#@.$G$-$^$9!#(B

      $B>e5-$N$h$&$J%/%(%j=q$-49$($,9T$o$l$k>r7o$O0J2<$N>l9g$G$9!#(B

      1. FROM $B6g$,(BP $B>uBV(B
      2. $B%?!<%2%C%H%j%9%H$K=8Ls4X?t(B(count, sum, min, max,avg$B$N$_BP1~(B),GROUP BY$B$K;XDj$7$?%+%i%`$,;H$o$l$F$$$k(B
      3. WHERE $B6g$,(BP $B>uBV(B
      4. HAVING $B6g(B $B$K;H$o$l$F$$$k=8Ls4X?t(B(count, sum, min, max,avg$B$N$_BP1~(B),FROM$B6g$GDj5A$5$l$F$$$k%+%i%`(B,GROUP BY$B$K;XDj$7$?%+%i%`$N$_;H$o$l$F$$$k!#(B
        $BNc(B)
           select P1-table.col,L1-table.col,count(*),avg(P1-table.col) from P1-table,L1-table wehre P1-table.col %2 = 0 group by P1-table.col,L1-table.coli having count(*) < 100
      

      $B%Q%i%l%k%b!<%I$NCm0U;v9`(B

      $B%Q%i%l%k%b!<%I$G$O!"%/%(%j$N2r@O$N:]$K%+%i%`L>$H%?%$%W$,I,MW$K$J$j$^$9!#$=$N$?$a!"%5%V%/%(%j$N(BTARGETLIST$B$K<0!"4X?t$r;H$C$F$$$k>l9g$K$OJLL>$H7?L>$r%-%c%9%H$G$D$1$kI,MW$,$"$j$^$9!#<0!"4X?t$K7?$N%-%c%9%H$,$J$$>l9g$K$O!"(Btext$B7?$H$7$F=hM}$5$l$^$9$N$GCm0U$7$F$/$@$5$$!#(B $B$J$*!"=8Ls4X?t$N>l9g$G$+$D=8Ls$K$h$k%/%(%j=q$-49$($,9T$o$l$k>l9g$K$O!"(Bcount$B$O(Bbigint$B7?!"(Bsum$B$O(Bnumeric$B7?$H$J$j$^$9!#(Bmin,max$B$N>l9g$K$O!"0z?t$,F|IU7?$N>l9g$K$OF|IU7?$H$7$F7W;;$5$l!"$=$l0J30$O(Bnumeric$B$H$7$F7W;;$5$l$^$9!#(Bavg$B$O(Bsum/count$B$H$7$F=hM}$5$l$^$9!#(B

      $B%Q%i%l%k%b!<%I$N%Q%U%)!<%^%s%9$K$D$$$F(B

      SELECT$B$N:G=*

  • $B$B%Q%U%)!<%^%s%9(B
    L$B%Q%i%l%k%/%(%j$rMxMQ$7$J$$$N$G(Bpgpool-II$B$N%*!<%P!<%X%C%I$r=|$-!"C1BN%N!<%I$H$N@-G=Nt2=$O$J$$(B
    P$BJBNs=hM}$r9T$&$N$G9bB.!"FC$K%7!<%1%s%7%c%k%9%-%c%s$N>l9g$K$O8z2L$,$G$k!#$^$?!"%G!<%?$rJ,3d$9$k$3$H$G%F!<%V%k%5%$%:(B(/1$BBf(B)$B$,>.$5$/$J$k$3$H$K$h$j%-%c%C%7%e$K>h$j$d$9$/$J$k(B
    S$B=8Ls$K$h$k%/%(%j=q$-49$($,9T$o$l$k$H9bB.(B

    $B%A%e!<%H%j%"%k(B

    pgpool-II$B$N%A%e!<%H%j%"%k$O(B$B$3$3(B$B$K$"$j$^$9!#@'Hs$4Mw2<$5$$!#(B

    $B%j%j!<%9%N!<%H(B

    3.1.3 (hatsuiboshi) 2012/01/31

    $B35MW(B

    $B$3$N%P!<%8%g%s$O(B3.1.2$B$KBP$9$k%P%0=$@5%j%j!<%9$G$9!#(B

    $B%P%0=$@5(B

    3.1.2 (hatsuiboshi) 2012/01/31

    $B35MW(B

    $B$3$N%P!<%8%g%s$O(B3.1.1$B$KBP$9$k%P%0=$@5%j%j!<%9$G$9!#(B

    $B%P%0=$@5(B

    3.1.1 (hatsuiboshi) 2011/12/06

    $B35MW(B

    $B$3$N%P!<%8%g%s$O(B3.1$B$KBP$9$k%P%0=$@5%j%j!<%9$G$9!#(B

    $B%P%0=$@5(B

    3.1.0 (hatsuiboshi) 2011/09/08

    $B35MW(B

    $B$3$N%P!<%8%g%s$O(B3.1$B7ONs$N:G=i$NHG$G!"(B3.0$B7O$+$i$N!V%a%8%c!<%P!<%8%g%s%"%C%W!W$K$"$?$j$^$9!#(B

    $B8_49@-$N$J$$JQ99(B

    $B?75!G=(B