1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <title>pgpool-II
\e$B%A%e!<%H%j%"%k
\e(B</title>
5 <meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp" />
6 <link href="pgpool.css" rel="stylesheet" type="text/css" />
9 <h1>pgpool-II
\e$B%A%e!<%H%j%"%k
\e(B</h1>
10 <p>pgpool-II
\e$B$N%A%e!<%H%j%"%k$K$h$&$3$=!#
\e(B
11 \e$B$3$3$G$O!"
\e(Bpgpool-II
\e$B$N%$%s%9%H!<%k$+$i4pK\E*$J@_Dj!"%l%W%j%1!<%7%g%s$*$h$S%Q%i%l%k%/%(%j$N<B9T$r9T$&$^$G$N<j=g$K$D$$$F@bL@$7$^$9!#
\e(B
12 \e$B$^$?!"
\e(BPostgreSQL
\e$B$N4pK\E*$JA`:n$K4X$9$k@bL@$O9T$$$^$;$s$N$G!"I,MW$G$"$l$P
\e(B PostgreSQL
\e$B$N%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#
\e(B</p>
14 <dt><em>
\e$BL\<!
\e(B</em></dt>
15 <dt>1. <a href="#start">
\e$B$5$";O$a$^$7$g$&
\e(B</a></dt>
16 <dd>1.1. <a href="#install">pgpool-II
\e$B$N%$%s%9%H!<%k
\e(B</a></dd>
17 <dd>1.2. <a href="#config">
\e$B@_Dj%U%!%$%k$N:n@.
\e(B</a></dd>
18 <dd>1.3. <a href="#pcp-config">PCP
\e$B%3%^%s%I$N@_Dj
\e(B</a></dd>
19 <dd>1.4. <a href="#db-node">
\e$B%G!<%?%Y!<%9%N!<%I$N=`Hw
\e(B</a></dd>
20 <dd>1.5. <a href="#start-shutdown">pgpool-II
\e$B$N5/F0$HDd;_
\e(B</a></dd>
21 <dt>2. <a href="#replication">
\e$B=i$a$F$N%l%W%j%1!<%7%g%s
\e(B</a></dt>
22 <dd>2.1. <a href="#replication-config">
\e$B%l%W%j%1!<%7%g%s$N@_Dj
\e(B</a></dd>
23 <dd>2.2. <a href="#replication-check">
\e$B%l%W%j%1!<%7%g%s$N3NG'
\e(B</a></dd>
24 <dt>3. <a href="#parallel">
\e$B%Q%i%l%k%/%(%j$r;H$C$F$_$h$&
\e(B</a></dt>
25 <dd>3.1. <a href="#parallel-config">
\e$B%Q%i%l%k%/%(%j$N@_Dj
\e(B</a></dd>
26 <dd>3.2. <a href="#system-db">
\e$B%7%9%F%`%G!<%?%Y!<%9$N:n@.
\e(B</a></dd>
27 <dd>3.3. <a href="#dist-def">
\e$BJ,;6%k!<%k$NDj5A
\e(B</a></dd>
28 <dd>3.4. <a href="#replicate-def">
\e$BJ#@=%k!<%k$N3NG'
\e(B</a></dd>
29 <dd>3.5. <a href="#parallel-check">
\e$B%Q%i%l%k%/%(%j$N3NG'
\e(B</a></dd>
31 <h2>1. <a name="start">
\e$B$5$";O$a$^$7$g$&
\e(B</a></h2>
32 <p>
\e$B$3$3$G$O!"%l%W%j%1!<%7%g%s$*$h$S%Q%i%l%k%/%(%j$N<B9T$r9T$&$?$a$N=`Hw$H$7$F!"
\e(Bpgpool-II
\e$B$N%$%s%9%H!<%k$d@_Dj!"%G!<%?%Y!<%9%N!<%I$N=`Hw$K$D$$$F@bL@$7$^$9!#
\e(B</p>
33 <h3>1.1. <a name="install">pgpool-II
\e$B$N%$%s%9%H!<%k
\e(B</a></h3>
34 <p>pgpool-II
\e$B$r%$%s%9%H!<%k$9$k$K$O%=!<%9%3!<%I$rE83+$7$?%G%#%l%/%H%j$G0J2<$N$h$&$K%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
38 <p><code>configure</code>
\e$B%9%/%j%W%H$G$O
\e(B pgpool-II
\e$B$r%$%s%9%H!<%k$9$k4D6-$K9g$o$;$?@_Dj$,9T$o$l$^$9!#
\e(B
39 \e$B$^$?!"
\e(B<code>configure</code>
\e$B%9%/%j%W%H$r<B9T$9$k:]$K%3%^%s%I%i%$%s0z?t$r;XDj$9$k$3$H$K$h$j!"
\e(Bpgpool-II
\e$B$N%$%s%9%H!<%k@h$NJQ99$J$I$r9T$&$3$H$,$G$-$^$9!#
\e(B
40 \e$B%3%^%s%I%i%$%s0z?t$r;XDj$7$J$1$l$P!"
\e(Bpgpool-II
\e$B$O
\e(B <code>/usr/local</code>
\e$B%G%#%l%/%H%j0J2<$K%$%s%9%H!<%k$5$l$^$9!#
\e(B</p>
41 <p><code>make</code>
\e$B%3%^%s%I$r<B9T$9$k$H
\e(B pgpool-II
\e$B$N%=!<%9%3!<%I$,%3%s%Q%$%k$5$l!"
\e(B<code>make install</code>
\e$B%3%^%s%I$G$O<B:]$K%$%s%9%H!<%k$5$l$^$9!#
\e(B
42 \e$B$J$*!"
\e(B<code>make install</code>
\e$B%3%^%s%I$r<B9T$9$k:]$K
\e(B pgpool-II
\e$B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$X$N=q$-9~$_8"8B$,I,MW$G$9!#
\e(B</p>
43 <p>
\e$B$3$3$G$O!"
\e(Bpgpool-II
\e$B$r
\e(B <code>/usr/local</code>
\e$B%G%#%l%/%H%j0J2<$K%$%s%9%H!<%k$7$^$9!#
\e(B</p>
44 <p><em>
\e$BCm0U
\e(B</em>: pgpool-II
\e$B$N%=!<%9%3!<%I$r%3%s%Q%$%k$9$k$K$O
\e(B PostgreSQL 7.4
\e$B0J9_$G<BAu$5$l$?
\e(B libpq
\e$B%i%$%V%i%j
\e(B (3.0
\e$B%W%m%H%3%k
\e(B)
\e$B$,I,MW$G$9!#
\e(B
45 <code>configure</code>
\e$B%9%/%j%W%H$r<B9T$7$?:]$K0J2<$N%(%i!<%a%C%;!<%8$,I=<($5$l$?>l9g!"
\e(Blibpq
\e$B%i%$%V%i%j$,%$%s%9%H!<%k$5$l$F$$$J$$$+!"%$%s%9%H!<%k$5$l$F$$$F$b%W%m%H%3%k$N%P!<%8%g%s$,
\e(B 3.0
\e$B$G$J$$2DG=@-$,$"$j$^$9!#
\e(B</p>
46 <pre>configure: error: libpq is not installed or libpq is old</pre>
47 <p>
\e$B$^$?!"%W%m%H%3%k$N%P!<%8%g%s$,
\e(B 3.0
\e$B$N
\e(B libpq
\e$B%i%$%V%i%j$,%$%s%9%H!<%k$5$l$F$$$k$K$b78$o$i$:!">e5-$N%(%i!<%a%C%;!<%8$,I=<($5$l$k>l9g!"
\e(B<code>configure</code>
\e$B%9%/%j%W%H$r<B9T$7$?:]$K
\e(B libpq
\e$B%i%$%V%i%j$,G'<1$5$l$F$$$J$$2DG=@-$,$"$j$^$9!#
\e(B</p>
48 <p><code>configure</code>
\e$B%9%/%j%W%H$OI8=`$G$O
\e(B <code>/usr/local/pgsql</code>
\e$B%G%#%l%/%H%j0J2<$+$i%X%C%@%U%!%$%k$d
\e(B libpq
\e$B%i%$%V%i%j$r8!:w$7$^$9!#
\e(B
49 PostgreSQL
\e$B$N%$%s%9%H!<%k@h$,
\e(B <code>/usr/local/pgsql</code>
\e$B%G%#%l%/%H%j0J2<$G$J$1$l$P!"
\e(B<code>configure</code>
\e$B%9%/%j%W%H$r<B9T$9$k:]$K%3%^%s%I%i%$%s0z?t$H$7$F
\e(B <code>--with-pgsql</code>
\e$B$d
\e(B <code>--with-pgsql-includedir</code>
\e$B!"
\e(B<code>--with-pgsql-libdir</code>
\e$B%*%W%7%g%s$r;XDj$7$F$/$@$5$$!#
\e(B</p>
50 <h3>1.2. <a name="config">
\e$B@_Dj%U%!%$%k$N:n@.
\e(B</a></h3>
51 <p>pgpool-II
\e$B$K$D$$$F$N@_Dj$O
\e(B <code>pgpool.conf</code>
\e$B%U%!%$%k$K5-=R$7$^$9!#
\e(B
52 <code>pgpool.conf</code>
\e$B%U%!%$%k$N=q<0$O
\e(B 1
\e$B9T$4$H$K%Q%i%a!<%?L>$HCM$r
\e(B =
\e$B$G6h@Z$C$?$b$N$G$9!#
\e(B
53 pgpool-II
\e$B$r%$%s%9%H!<%k$9$k$H%5%s%W%k$H$7$F
\e(B <code>pgpool.conf.sample</code>
\e$B%U%!%$%k$,:n@.$5$l$k$N$G!"$=$l$r
\e(B <code>pgpool.conf</code>
\e$B$H$$$&%U%!%$%kL>$K%3%T!<$7$F$+$iJT=8$9$k$H$$$$$G$7$g$&!#
\e(B</p>
54 <pre>$ cp /usr/local/etc/pgpool.conf.sample /usr/local/etc/pgpool.conf</pre>
55 <p><code>pgpool.conf</code>
\e$B%U%!%$%k$N=i4|@_Dj$G$O!"
\e(Bpgpool-II
\e$B$O
\e(B pgpool-II
\e$B$HF1$8%[%9%H$+$i$N%]!<%HHV9f
\e(B 9999
\e$B$X$N@\B3$r<u$1IU$1$^$9!#
\e(B
56 pgpool-II
\e$B$H0[$J$k%[%9%H$+$i$N@\B3$r<u$1IU$1$k>l9g$O
\e(B <code>listen_addresses</code>
\e$B%Q%i%a!<%?$K
\e(B *
\e$B$r@_Dj$7$^$9!#
\e(B</p>
57 <pre>listen_addresses = 'localhost'
59 <p>
\e$B$3$3$G$O!"
\e(B<code>pgpool.conf</code>
\e$B%U%!%$%k$N=i4|@_Dj$r$=$N$^$^;HMQ$7$^$9!#
\e(B</p>
60 <h3>1.3. <a name="pcp-config">PCP
\e$B%3%^%s%I$N@_Dj
\e(B</a></h3>
61 <p>pgpool-II
\e$B$G$O
\e(B PCP
\e$B%3%^%s%I$H8F$P$l$k%$%s%?%U%'!<%9$rDL$7$F
\e(B pgpool-II
\e$B$NDd;_$d%G!<%?%Y!<%9%N!<%I$K4X$9$k>pJs$NI=<($r9T$$$^$9!#
\e(B
62 PCP
\e$B%3%^%s%I$r;HMQ$9$k$K$O%f!<%6G'>Z$,I,MW$K$J$k$N$G!"%f!<%6L>$H%Q%9%o!<%I$r
\e(B <code>pcp.conf</code>
\e$B%U%!%$%k$K@_Dj$7$^$9!#
\e(B
63 <code>pcp.conf</code>
\e$B%U%!%$%k$N=q<0$O0J2<$N$h$&$K
\e(B 1
\e$B9T$4$H$K%f!<%6L>$H
\e(B MD5
\e$B%O%C%7%e$KJQ49$5$l$?%Q%9%o!<%I$r
\e(B :
\e$B$G6h@Z$C$?$b$N$G$9!#
\e(B</p>
64 <pre>postgres:e8a48653851e28c69d0506508fb27fc5</pre>
65 <p>pgpool-II
\e$B$r%$%s%9%H!<%k$9$k$H%5%s%W%k$H$7$F
\e(B <code>pcp.conf.sample</code>
\e$B%U%!%$%k$,:n@.$5$l$k$N$G!"$=$l$r
\e(B <code>pcp.conf</code>
\e$B$H$$$&%U%!%$%kL>$K%3%T!<$7$F$+$iJT=8$9$k$H$$$$$G$7$g$&!#
\e(B</p>
66 <pre>$ cp /usr/local/etc/pcp.conf.sample /usr/local/etc/pcp.conf</pre>
67 <p>
\e$B$J$*!"%Q%9%o!<%I$r
\e(B MD5
\e$B%O%C%7%e$KJQ49$9$k:]$K$O
\e(B pgpool-II
\e$B$H$H$b$K%$%s%9%H!<%k$5$l$k
\e(B <code>pg_md5</code>
\e$B%3%^%s%I$r;HMQ$7$^$9!#
\e(B
68 <code>pg_md5</code>
\e$B%3%^%s%I$O!"%3%^%s%I%i%$%s0z?t$H$7$F%Q%9%o!<%I$r;XDj$9$k$H!"$=$l$r
\e(B MD5
\e$B%O%C%7%e$KJQ49$7$?$b$N$rI=<($7$^$9!#
\e(B</p>
69 <p>
\e$BNc$($P!"0J2<$N$h$&$K
\e(B <code>pg_md5</code>
\e$B%3%^%s%I$N%3%^%s%I%i%$%s0z?t$H$7$F
\e(B postgres
\e$B$r;XDj$7$F<B9T$9$k$H!"
\e(Bpostgres
\e$B$r
\e(B MD5
\e$B%O%C%7%e$KJQ49$7$?$b$N$,I=<($5$l$^$9!#
\e(B</p>
70 <pre>$ /usr/bin/pg_md5 postgres
71 e8a48653851e28c69d0506508fb27fc5</pre>
72 <p>
\e$B$^$?!"
\e(BPCP
\e$B%3%^%s%I$O%M%C%H%o!<%/$rDL$7$F<B9T$5$l$k$N$G!"
\e(Bpgpool-II
\e$B$,
\e(B PCP
\e$B%3%^%s%I$r<u$1IU$1$k%]!<%HHV9f$r
\e(B <code>pgpool.conf</code>
\e$B%U%!%$%k$N
\e(B <code>pcp_port</code>
\e$B%Q%i%a!<%?$K@_Dj$7$^$9!#
\e(B</p>
73 <p>
\e$B$3$3$G$O!"
\e(B<code>pcp_port</code>
\e$B%Q%i%a!<%?$K:G=i$+$i@_Dj$5$l$F$$$k%]!<%HHV9f
\e(B 9898
\e$B$r$=$N$^$^;HMQ$7$^$9!#
\e(B</p>
74 <pre>pcp_port = 9898</pre>
75 <h3>1.4. <a name="db-node">
\e$B%G!<%?%Y!<%9%N!<%I$N=`Hw
\e(B</a></h3>
76 <p>
\e$B%G!<%?%Y!<%9%N!<%I$H$7$F;HMQ$9$k%G!<%?%Y!<%9%5!<%P$r=`Hw$7$^$9!#
\e(B
77 \e$B%G!<%?%Y!<%9%5!<%P$O!"
\e(Bpgpool-II
\e$B$HF1$8%[%9%H$G5/F0$7$F$b!"0[$J$k%[%9%H$G$"$C$F$b9=$$$^$;$s!#
\e(B
78 \e$B$b$A$m$s!"
\e(Bpgpool-II
\e$B$HF1$8%[%9%H$G5/F0$9$k>l9g$O0[$J$k%]!<%HHV9f$r3d$j9g$F!"0[$J$k%[%9%H$G5/F0$9$k>l9g$O
\e(B pgpool-II
\e$B$,5/F0$9$k%[%9%H$+$i%G!<%?%Y!<%9%5!<%P$K@\B3$G$-$k$h$&$K@_Dj$9$kI,MW$,$"$j$^$9!#
\e(B
79 pgpool-II
\e$B$G$O%G!<%?%Y!<%9%5!<%P$4$H$K%l%W%j%1!<%7%g%s$r9T$&$N$G!"%A%e!<%H%j%"%k$N$?$a$N%G!<%?%Y!<%9%/%i%9%?$r:n@.$7$?$[$&$,$$$$$G$7$g$&!#
\e(B</p>
80 <p>
\e$B$3$3$G$O!"
\e(B3
\e$BBf$N%G!<%?%Y!<%9%5!<%P$r
\e(B pgpool-II
\e$B$HF1$8%[%9%H$N0[$J$k%]!<%HHV9f
\e(B 5432
\e$B!"
\e(B5433
\e$B!"
\e(B5434
\e$B$G5/F0$7$^$9!#
\e(B
81 \e$B%G!<%?%Y!<%9%5!<%P$r%G!<%?%Y!<%9%N!<%I$H$7$F;HMQ$9$k$K$O!"
\e(B<code>pgpool.conf</code>
\e$B%U%!%$%k$K0J2<$N$h$&$K%Q%i%a!<%?$r@_Dj$7$^$9!#
\e(B</p>
82 <pre>backend_hostname0 = 'localhost'
85 backend_hostname1 = 'localhost'
88 backend_hostname2 = 'localhost'
90 backend_weight2 = 1</pre>
91 <p><code>backend_hostname</code>
\e$B!"
\e(B<code>backend_port</code>
\e$B!"
\e(B<code>backend_weight</code>
\e$B%Q%i%a!<%?$K$O!"%G!<%?%Y!<%9%N!<%I$N%[%9%HL>!"%]!<%HHV9f!"Ii2YJ,;6$9$k:]$N=E$_IU$1$r@_Dj$7$^$9!#
\e(B
92 \e$B%Q%i%a!<%?L>$N8e$m$K$O
\e(B 0
\e$B!"
\e(B1
\e$B!"
\e(B2
\e$B!"
\e(B…
\e$B$H$$$&$h$&$KJ#?t$N%G!<%?%Y!<%9%N!<%I$r6hJL$9$k$?$a$N?t;z$r;XDj$7$^$9!#
\e(B
93 <code>backend_weight</code>
\e$B%Q%i%a!<%?$O!"J#?t$N%G!<%?%Y!<%9%N!<%I$KLd$$9g$o$;$rIi2YJ,;6$9$k:]!"$I$N%G!<%?%Y!<%9%N!<%I$K$I$N$/$i$$$N3d9g$GLd$$9g$o$;$r9T$&$+$H$$$&$3$H$r@_Dj$9$k%Q%i%a!<%?$G$9!#
\e(B
94 \e$B$3$3$G$O!"
\e(B3
\e$BBf$N%G!<%?%Y!<%9%N!<%I$N=E$_IU$1$,$9$Y$F
\e(B 1
\e$B$K@_Dj$7$F$"$k$N$G!"Ld$$9g$o$;$O
\e(B 1
\e$BBP
\e(B 1
\e$BBP
\e(B 1
\e$B$N3d$j9g$$$GIi2YJ,;6$5$l$k$3$H$K$J$j$^$9!#
\e(B</p>
95 <h3>1.5. <a name="start-shutdown">pgpool-II
\e$B$N5/F0$HDd;_
\e(B</a></h3>
96 <p>pgpool-II
\e$B$r5/F0$9$k$K$O0J2<$N$h$&$K
\e(B <code>pgpool</code>
\e$B%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
99 \e$B$?$@$7!"$3$N$^$^$G$O
\e(B <code>pgpool</code>
\e$B%W%m%;%9$O@)8fC<Kv$r@Z$jN%
\e(B
100 \e$B$9$?$a!"%m%0$,=PNO$5$l$J$/$J$j$^$9
\e(B(
\e$B%(%i!<$OI8=`%(%i!<$K=PNO$5$l$^$9
\e(B)
\e$B!#
\e(B
101 \e$B@)8fC<Kv$r@Z$jN%$5$J$$$G5/F0$9$k>l9g$O
\e(B <code>-n</code>
\e$B%*%W%7%g%s$r;XDj$7$^$9!#
\e(B
109 \e$B%3%^%s%I$r<B9T$7$?C<Kv$K%m%0%a%C%;!<%8$,I=<($5$l$k$N$G!"0J2<$N$h$&$K%m%0%a%C%;!<%8$r%U%!%$%k$KJ]B8$9$k$h$&$K<B9T$9$k$3$H$r$*4+$a$7$^$9!#
\e(B</p>
110 <pre>$ pgpool -n -d > /var/log/pgpool/pgpool.log 2>&1 &</pre>
111 <p><code>-d</code>
\e$B%*%W%7%g%s$O%G%P%C%0%a%C%;!<%8$N=PNO$rM-8z$K$7$^$9!#
\e(B</p>
113 \e$B>e5-$NNc$O%U%!%$%k$K%j%@%$%l%/%H$5$;$F$$$k$?$a!"%m%0$,DI2C$5$lB3$1$^$9!#
\e(B
114 \e$B%m%0$r%m!<%F!<%H$5$;$?$$>l9g$O!"%m!<%F!<%H5!G=$r;}$C$?%3%^%s%I$K%m%0$r
\e(B
115 \e$BEO$7$F$/$@$5$$!#
\e(B
117 \e$B$?$H$($P!"
\e(BApache2
\e$B$KIUB0$9$k
\e(Brotatelogs
\e$B$r;H$&$N$G$"$l$P!"
\e(B
120 $ pgpool -n 2>&1 | /usr/local/apache2/bin/rotatelogs \
121 -l -f /var/log/pgpool/pgpool.log.%A 86400 &
124 \e$B$H$9$l$PKhF|LkCf$N
\e(B0
\e$B;~$K%m%0$,%m!<%F!<%H$5$l!"
\e(Bpgpool.log.Thursday
\e$B$N$h$&$JL>A0$N%m%0%U%!%$%k$,KhF|:n@.$5$l$^$9!#
\e(B
125 \e$B$?$@$7!"$9$G$KF1$8L>A0$N%U%!%$%k$,$"$k>l9g$K$O%m%0$,$=$N%U%!%$%k$KDI2C$5$l$F$7$^$&$N$G!"
\e(Bcron
\e$B$r;H$C$F8E$$%m%0%U%!%$%k$r>C5n$9$k@_Dj$rJ;$;$F9T$C$F$*$/J}$,NI$$$G$7$g$&!#
\e(B
126 \e$BNc$r<($7$^$9!#
\e(B
128 55 23 * * * /usr/bin/find /var/log/pgpool -type f -mtime +5 -exec /bin/rm -f '{}' \;
132 <em>
\e$BCm0U
\e(B</em>: Linux
\e$B%G%#%9%H%j%S%e!<%7%g%s$K$h$C$F$O!"
\e(Brotatelogs
\e$B$O
\e(B /usr/sbin/rotatelogs2
\e$B$N$h$&$JL>A0$G%$%s%9%H!<%k$5$l$F$$$k$+$bCN$l$^$;$s!#
\e(B
133 -f
\e$B%*%W%7%g%s$O
\e(B rotatelogs
\e$B$,5/F0$5$l$?D>8e$KD>$A$K%m%0%U%!%$%k$r:n$k%*%W%7%g%s$G!"
\e(Bapache2 2.2.9
\e$B0J9_$G$N$_M-8z$G$9!#
\e(B
137 <a href="http://www.cronolog.org/"><code>cronolog</code></a>
\e$B$r;H$&>l9g$G$"$l$P!"0J2<$N$h$&$K%Q%$%W$G%m%0%a%C%;!<%8$rEO$7$F$/$@$5$$!#
\e(B
140 $ pgpool -n 2>&1 | /usr/sbin/cronolog \
141 --hardlink=/var/log/pgpool/pgpool.log \
142 '/var/log/pgpool/%Y-%m-%d-pgpool.log' &
146 <p>pgpool-II
\e$B$rDd;_$9$k$K$O0J2<$N$h$&$K
\e(B <code>pgpool</code>
\e$B%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
147 <pre>$ pgpool stop</pre>
148 <p>pgpool-II
\e$B$rDd;_$9$k:]$K%/%i%$%"%s%H$,@\B3$7$F$$$k>l9g!"$=$N@\B3$,@ZCG$5$l$k$^$GBT$C$F$+$iDd;_$7$^$9!#
\e(B
149 \e$B%/%i%$%"%s%H$N@\B3$,@ZCG$5$l$k$^$GBT$?$:$KDd;_$9$k$K$O0J2<$N$h$&$K
\e(B <code>pgpool</code>
\e$B%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
150 <pre>$ pgpool -m fast stop</pre>
151 <h2>2. <a name="replication">
\e$B=i$a$F$N%l%W%j%1!<%7%g%s
\e(B</a></h2>
152 <p>
\e$B%l%W%j%1!<%7%g%s$G$OJ#?t$N%G!<%?%Y!<%9%N!<%I$KF1$8%G!<%?$rJ#@=$7$F3JG<$7$^$9!#
\e(B</p>
153 <p>
\e$B$3$3$G$O!"!V
\e(B1. <a href="#start">
\e$B$5$";O$a$^$7$g$&
\e(B</a>
\e$B!W$G=`Hw$7$?
\e(B 3
\e$BBf$N%G!<%?%Y!<%9%N!<%I$r;HMQ$7!"
\e(Bpgbench
\e$B$,:n@.$9$k%G!<%?%Y!<%9$N%l%W%j%1!<%7%g%s$r9T$&$^$G$N<j=g$K$D$$$F@bL@$7$^$9!#
\e(B</p>
154 <h3>2.1. <a name="replication-config">
\e$B%l%W%j%1!<%7%g%s$N@_Dj
\e(B</a></h3>
155 <p>
\e$B%G!<%?%Y!<%9%N!<%I$N%l%W%j%1!<%7%g%s$rM-8z$K$9$k$K$O!"
\e(B<code>pgpool.conf</code>
\e$B%U%!%$%k$N
\e(B <code>replication_mode</code>
\e$B%Q%i%a!<%?$r
\e(B true
\e$B$K@_Dj$7$^$9!#
\e(B</p>
156 <pre>replication_mode = true</pre>
157 <p>
\e$B>e5-$N$h$&$K
\e(B <code>replication_mode</code>
\e$B%Q%i%a!<%?$r
\e(B true
\e$B$K@_Dj$9$k$3$H$K$h$j!"
\e(Bpgpool-II
\e$B$X$NLd$$9g$o$;$,$9$Y$F$N%G!<%?%Y!<%9%N!<%I$KBP$7$F<B9T$5$l!"F1$8%G!<%?$,J#@=$5$l$F3JG<$5$l$k$h$&$K$J$j$^$9!#
\e(B
158 <p>
\e$B$5$i$K!"
\e(B<code>load_balance_mode</code>
\e$B%Q%i%a!<%?$r
\e(B true
\e$B$K@_Dj$9$k$3$H$K$h$j!"
\e(Bpgpool-II
\e$B$KBP$9$k
\e(B SELECT
\e$BJ8$rJ#?t$N%G!<%?%Y!<%9%N!<%I$KBP$7$F?6$jJ,$1!"Ii2YJ,;6$r9T$&$3$H$,$G$-$^$9!#
\e(B</p>
159 <pre>load_balance_mode = true</pre>
160 <p>
\e$B$3$3$G$O!"
\e(B<code>replication_mode</code>
\e$B!"
\e(B<code>load_balance_mode</code>
\e$B%Q%i%a!<%?$r
\e(B true
\e$B$K@_Dj$7$^$9!#
\e(B</p>
161 <h3>2.2. <a name="replication-check">
\e$B%l%W%j%1!<%7%g%s$N3NG'
\e(B</a></h3>
162 <p>
\e$B%l%W%j%1!<%7%g%s$N@_Dj$r
\e(B pgpool-II
\e$B$KH?1G$5$;$k$K$O
\e(B pgpool-II
\e$B$r:F5/F0$9$kI,MW$,$"$j$^$9!#
\e(B
163 pgpool-II
\e$B$N:F5/F0$K$D$$$F$O!V
\e(B1.5. <a href="#start-shutdown">pgpool-II
\e$B$N5/F0$HDd;_
\e(B</a>
\e$B!W$r;2>H$7$F$/$@$5$$!#
\e(B</p>
164 <p>
\e$B%l%W%j%1!<%7%g%s$rM-8z$K$7$F
\e(B pgpool-II
\e$B$r5/F0$G$-$?$i!"<B:]$K
\e(B pgbench
\e$B$r;HMQ$7$F%l%W%j%1!<%7%g%s$,9T$o$l$F$$$k$3$H$r3NG'$7$^$7$g$&!#
\e(B</p>
165 <p>
\e$B$^$:!"
\e(Bpgbench
\e$B$,;HMQ$9$k%G!<%?%Y!<%9
\e(B bench_replication
\e$B$r:n@.$7$^$9!#
\e(B
166 <code>createdb</code>
\e$B%3%^%s%I$r
\e(B pgpool-II
\e$B$KBP$7$F<B9T$9$k$H!"$9$Y$F$N%G!<%?%Y!<%9%N!<%I$KBP$7$F%G!<%?%Y!<%9
\e(B bench_replication
\e$B$,:n@.$5$l$^$9!#
\e(B</p>
167 <pre>$ createdb -p 9999 bench_replication</pre>
168 <p>
\e$B$=$7$F!"
\e(B<code>pgbench</code>
\e$B%3%^%s%I$K
\e(B <code>-i</code>
\e$B%*%W%7%g%s$r;XDj$7$F<B9T$9$k$3$H$K$h$j!"%G!<%?%Y!<%9
\e(B bench_replication
\e$B$KBP$7$F
\e(B pgbench
\e$B$G;HMQ$9$k%F!<%V%k$r:n@.$7!"%G!<%?$r=i4|2=$7$^$9!#
\e(B</p>
169 <pre>$ pgbench -i -p 9999 bench_replication</pre>
170 <p><code>pgbench</code>
\e$B%3%^%s%I$K
\e(B <code>-i</code>
\e$B%*%W%7%g%s$r;XDj$7$F<B9T$7$?:]$K:n@.$5$l$k%F!<%V%k$H$=$l$>$l$N%F!<%V%k$N9T?t$O0J2<$N$H$*$j$G$9!#
\e(B
171 \e$B$9$Y$F$N%G!<%?%Y!<%9%N!<%I$N%G!<%?%Y!<%9
\e(B bench_replication
\e$B$K0J2<$N9T?t$N%G!<%?$,3JG<$5$l$F$$$l$P!"@5>o$K%l%W%j%1!<%7%g%s$,9T$o$l$F$$$k$3$H$K$J$j$^$9!#
\e(B</p>
176 <th>
\e$B%F!<%V%kL>
\e(B</th>
177 <th>
\e$B9T?t
\e(B</th>
197 <p>
\e$BNc$($P!"0J2<$N$h$&$K%3%^%s%I$r<B9T$9$k$H!"$9$Y$F$N%G!<%?%Y!<%9%N!<%I
\e(B (
\e$B%]!<%HHV9f
\e(B 5432
\e$B!"
\e(B5433
\e$B!"
\e(B5434)
\e$B$N%G!<%?%Y!<%9
\e(B bench_replication
\e$B$K4^$^$l$k%F!<%V%k
\e(B branches
\e$B!"
\e(Btellers
\e$B!"
\e(Baccounts
\e$B!"
\e(Bhistory
\e$B$N9T?t$,I=<($5$l$^$9!#
\e(B</p>
198 <pre>$ for port in 5432 5433 5434; do
200 > for table_name in branches tellers accounts history; do
201 > echo $table_name
202 > psql -c "SELECT count(*) FROM $table_name" -p $port bench_replication
206 <h2>3. <a name="parallel">
\e$B%Q%i%l%k%/%(%j$r;H$C$F$_$h$&
\e(B</a></h2>
207 <p>
\e$B%Q%i%l%k%/%(%j$G$OJ#?t$N%G!<%?%Y!<%9%N!<%I$K0[$J$kHO0O$N%G!<%?$r3JG<$7$^$9!#$3$l$r%Q!<%F%#%7%g%K%s%0$H8F$S$^$9!#$^$?%Q!<%F%#%7%g%s%K%s%0$H6&$KJ#?t$N%G!<%?%Y!<%9%N!<%I$KF1$8%G!<%?$rJ#@=$9$k$3$H$b$G$-$^$9!#$D$^$j%Q!<%F%#%7%g%K%s%0$7$F$$$k%F!<%V%k$H%l%W%j%1!<%7%g%s$7$F$$$k%F!<%V%k$r6&B8$5$;$k$3$H$,$G$-$^$9!#
\e(B</p>
208 <p>
\e$B%Q%i%l%k%/%(%j$r;HMQ$9$k$K$O%7%9%F%`%G!<%?%Y!<%9$H8F$P$l$kFCJL$J%G!<%?%Y!<%9$,I,MW$G$9!#
\e(B</p>
209 <p>
\e$B%7%9%F%`%G!<%?%Y!<%9$G$O!"$I$N%G!<%?%Y!<%9%N!<%I$KBP$7$F$I$N%G!<%?$r3JG<$9$k$+$H$$$&J,;6%k!<%k$r3JG<$7$F$*$j!"$=$l$K$h$C$F%G!<%?$rJ#?t$N%G!<%?%Y!<%9%N!<%I$KJ,;6$5$;$^$9!#
\e(B
210 \e$B$^$?!"%7%9%F%`%G!<%?%Y!<%9$O!"
\e(Bdblink
\e$B$r;HMQ$9$k$3$H$K$h$C$FJ#?t$N%G!<%?%Y!<%9%N!<%I$KLd$$9g$o$;$r?6$jJ,$1!"$=$l$>$l$N%G!<%?%Y!<%9%N!<%I$G<B9T$5$l$?7k2L$r
\e(B 1
\e$B$D$K$^$H$a$^$9!#
\e(B</p>
211 <p>
\e$B$3$3$G$O!"!V
\e(B1. <a href="#start">
\e$B$5$";O$a$^$7$g$&
\e(B</a>
\e$B!W$G=`Hw$7$?
\e(B 3
\e$BBf$N%G!<%?%Y!<%9%N!<%I$r;HMQ$7!"
\e(Bpgbench
\e$B$,:n@.$9$k%G!<%?%Y!<%9$KBP$7$F%Q%i%l%k%/%(%j$r<B9T$9$k$^$G$N<j=g$K$D$$$F@bL@$7$^$9!#
\e(B</p>
212 <h3>3.1. <a name="parallel-config">
\e$B%Q%i%l%k%/%(%j$N@_Dj
\e(B</a></h3>
213 <p>
\e$B%Q%i%l%k%/%(%j$rM-8z$K$9$k$K$O
\e(B <code>pgpool.conf</code>
\e$B%U%!%$%k$N
\e(B <code>parallel_mode</code>
\e$B%Q%i%a!<%?$r
\e(B true
\e$B$K@_Dj$7$^$9!#
\e(B</p>
214 <pre>parallel_mode = true</pre>
215 <p>
\e$B$?$@$7!">e5-$N$h$&$K
\e(B <code>parallel_mode</code>
\e$B%Q%i%a!<%?$r
\e(B true
\e$B$K@_Dj$7$?$@$1$G$O!"J#?t$N%G!<%?%Y!<%9%N!<%I$KBP$7$F%G!<%?$rJ,;6$G$-$^$;$s!#
\e(B
216 \e$B$5$i$K!"%7%9%F%`%G!<%?%Y!<%9$r:n@.$7!"J,;6%k!<%k$NDj5A$HEPO?$r9T$&I,MW$,$"$j$^$9!#
\e(B</p>
217 <p>
\e$B$^$?!"
\e(Bdblink
\e$B$G$O%7%9%F%`%G!<%?%Y!<%9$+$i
\e(B pgpool-II
\e$B$X$N
\e(B TCP/IP
\e$B@\B3$,9T$o$l$k$?$a!"
\e(B<code>listen_addresses</code>
\e$B%Q%i%a!<%?$rE,@Z$K@_Dj$9$kI,MW$,$"$j$^$9!#
\e(B</p>
218 <pre>listen_addresses = '*'</pre>
219 <p><em>
\e$BCm0U
\e(B</em>:
\e$B%Q%i%l%k%/%(%j$H%l%W%j%1!<%7%g%s$rF1;~$KM-8z$K$9$k$3$H$,$G$-$^$9$,!"%Q!<%F%#%7%g%K%s%0$7$F$$$k%F!<%V%k$KBP$7$F$O!"%l%W%j%1!<%7%g%s$5$l$^$;$s!#
\e(B
220 \e$B$^$?!"%Q%i%l%k%/%(%j$H%l%W%j%1!<%7%g%s$G$O%G!<%?%Y!<%9$K3JG<$5$l$k%G!<%?$N9=@.$,0[$J$k$?$a!"!V
\e(B2. <a href="#replication">
\e$B=i$a$F$N%l%W%j%1!<%7%g%s
\e(B</a>
\e$B!W$G:n@.$7$?%G!<%?%Y!<%9
\e(B bench_replication
\e$B$r$=$N$^$^;HMQ$9$k$3$H$O$G$-$^$;$s!#
\e(B</p>
221 <pre>replication_mode = true
222 load_balance_mode = false</pre>
223 <p>
\e$B$^$?$O!"
\e(B</p>
224 <pre>replication_mode = false
225 load_balance_mode = true</pre>
226 <p>
\e$B$3$3$G$O!"
\e(B<code>parallel_mode</code>
\e$B%Q%i%a!<%?$r
\e(B true
\e$B$K!"
\e(B<code>listen_addresses</code>
\e$B%Q%i%a!<%?$r
\e(B *
\e$B$K!"
\e(B<code>replication_mode</code>
\e$B!"
\e(B<code>load_balance_mode</code>
\e$B%Q%i%a!<%?$r
\e(B false
\e$B$K@_Dj$7$^$9!#
\e(B</p>
227 <h3>3.2. <a name="system-db">
\e$B%7%9%F%`%G!<%?%Y!<%9$N:n@.
\e(B</a></h3>
228 <p>
\e$B%7%9%F%`%G!<%?%Y!<%9$HDL>o$N%G!<%?%Y!<%9$K0c$$$O$"$j$^$;$s!#
\e(B
229 \e$B$?$@$7!"%7%9%F%`%G!<%?%Y!<%9$K$O!"
\e(Bdblink
\e$B$N4X?t$,Dj5A$5$l$F$*$j!"J,;6%k!<%k$r3JG<$9$k%F!<%V%k
\e(B dist_def
\e$B$,Dj5A$5$l$F$$$kI,MW$,$"$j$^$9!#
\e(B
230 \e$B$^$?!"%G!<%?%Y!<%9%N!<%I$N
\e(B 1
\e$BBf$K%7%9%F%`%G!<%?%Y!<%9$r:n@.$9$k$3$H$b$G$-$^$9$7!"
\e(Bpgpool-II
\e$B$r%+%9%1!<%I@\B3$9$k$3$H$GIi2YJ,;6$9$k$3$H$b$G$-$^$9!#
\e(B</p>
231 <p>
\e$B$3$3$G$O!"0J2<$N
\e(B <code>pgpool.conf</code>
\e$B%U%!%$%k$N=i4|@_Dj$K=>$C$F%7%9%F%`%G!<%?%Y!<%9$r:n@.$7$^$9!#
\e(B</p>
232 <pre>system_db_hostname = 'localhost'
233 system_db_port = 5432
234 system_db_dbname = 'pgpool'
235 system_db_schema = 'pgpool_catalog'
236 system_db_user = 'pgpool'
237 system_db_password = ''</pre>
238 <p><code>pgpool.conf</code>
\e$B%U%!%$%k$N=i4|@_Dj$G$O!"%7%9%F%`%G!<%?%Y!<%9$O
\e(B pgpool-II
\e$B$HF1$8%[%9%H$N%]!<%HHV9f
\e(B 5432
\e$B$G5/F0$9$k%G!<%?%Y!<%9%5!<%P!"$D$^$j!"
\e(B1
\e$BBfL\$N%G!<%?%Y!<%9%N!<%I$K:n@.$9$k$3$H$K$J$j$^$9!#
\e(B
239 \e$B$^$?!"%7%9%F%`%G!<%?%Y!<%9$N%G!<%?%Y!<%9L>$O
\e(B pgpool
\e$B$K!"%7%9%F%`%G!<%?%Y!<%9$K@\B3$9$k%f!<%6L>$b
\e(B pgpool
\e$B$K@_Dj$5$l$F$$$k$N$G!"
\e(Bpgpool
\e$B$H$$$&%f!<%6$r:n@.$7$F$+$i%f!<%6
\e(B pgpool
\e$B$r=jM-<T$H$7$F%G!<%?%Y!<%9
\e(B pgpool
\e$B$r:n@.$7$^$9!#
\e(B
241 <pre>$ createuser -p 5432 pgpool
242 $ createdb -p 5432 -O pgpool pgpool</pre>
243 <h4><p>3.2.1. dblink
\e$B$N%$%s%9%H!<%k
\e(B</p></h4>
244 <p>
\e$B%7%9%F%`%G!<%?%Y!<%9$H$7$F%G!<%?%Y!<%9
\e(B pgpool
\e$B$,:n@.$G$-$?$i!"
\e(Bdblink
\e$B$r%$%s%9%H!<%k$7$^$9!#
\e(B
245 dblink
\e$B$O
\e(B PostgreSQL
\e$B$N%=!<%9%3!<%I$N
\e(B <code>contrib</code>
\e$B%G%#%l%/%H%j$K4^$^$l$k%D!<%k$N
\e(B 1
\e$B$D$G$9!#
\e(B</p>
246 <p>dblink
\e$B$r%$%s%9%H!<%k$9$k$K$O
\e(B PostgreSQL
\e$B$N%=!<%9%3!<%I$rE83+$7$?%G%#%l%/%H%j$G0J2<$N$h$&$K%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
247 <pre>$ USE_PGXS=1 make -C contrib/dblink
248 $ USE_PGXS=1 make -C contrib/dblink install</pre>
249 <p>
\e$B%G!<%?%Y!<%9
\e(B pgpool
\e$B$KBP$7$F
\e(B dblink
\e$B$N4X?t$rDj5A$7$^$9!#
\e(B
250 PostgreSQL
\e$B$N%$%s%9%H!<%k@h$,
\e(B <code>/usr/local/pgsql</code>
\e$B%G%#%l%/%H%j0J2<$G$"$l$P!"
\e(B<code>/usr/local/pgsql/share/contrib</code>
\e$B%G%#%l%/%H%j$K
\e(B dblink
\e$B$N4X?t$rDj5A$9$k$?$a$N
\e(B <code>dblink.sql</code>
\e$B%U%!%$%k$,B8:_$7$^$9!#
\e(B
251 \e$B$=$l$r;HMQ$7$F0J2<$N$h$&$K
\e(B <code>psql</code>
\e$B%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
252 <pre>$ psql -f /usr/local/pgsql/share/contrib/dblink.sql -p 5432 pgpool</pre>
253 <h4><p>3.2.2.
\e$B%F!<%V%k
\e(B dist_def
\e$B$NDj5A
\e(B</p></h4>
254 <p>
\e$BJ,;6%k!<%k$r3JG<$9$k%F!<%V%k
\e(B dist_def
\e$B$r%7%9%F%`%G!<%?%Y!<%9
\e(B pgpool
\e$B$KDj5A$7$^$9!#
\e(B
255 pgpool-II
\e$B$r%$%s%9%H!<%k$9$k$H%F!<%V%k
\e(B dist_def
\e$B$r4^$a$F%7%9%F%`%G!<%?%Y!<%9$r:n@.$9$k$?$a$N
\e(B <code>system_db.sql</code>
\e$B%U%!%$%k$,:n@.$5$l$k$N$G!"$=$l$r;HMQ$7$F0J2<$N$h$&$K
\e(B <code>psql</code>
\e$B%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
256 <pre>$ psql -f /usr/local/share/system_db.sql -p 5432 -U pgpool pgpool</pre>
257 <p><code>system_db.sql</code>
\e$B%U%!%$%k$G$O!"%9%-!<%^
\e(B pgpool_catalog
\e$B$K%F!<%V%k
\e(B dist_def
\e$B$J$I$rDj5A$7$F$$$^$9!#
\e(B
258 \e$B=>$C$F!"
\e(B<code>pgpool.conf</code>
\e$B%U%!%$%k$N
\e(B <code>system_db_schema</code>
\e$B%Q%i%a!<%?$G
\e(B pgpool_catalog
\e$B$G$J$$%9%-!<%^L>$r;XDj$7$F$$$k>l9g!"
\e(B<code>system_db.sql</code>
\e$B%U%!%$%k$rJT=8$7$F%9%-!<%^L>$rJQ99$9$kI,MW$,$"$j$^$9!#
\e(B</p>
259 <p>
\e$B%F!<%V%k
\e(B dist_def
\e$B$O0J2<$N$h$&$KDj5A$5$l$F$*$j!"%F!<%V%kL>$rJQ99$9$k$3$H$O$G$-$^$;$s!#
\e(B</p>
260 <pre>CREATE TABLE pgpool_catalog.dist_def (
261 dbname text, --
\e$B%G!<%?%Y!<%9L>
\e(B
262 schema_name text, --
\e$B%9%-!<%^L>
\e(B
263 table_name text, --
\e$B%F!<%V%kL>
\e(B
264 col_name text NOT NULL CHECK (col_name = ANY (col_list)), --
\e$BJ,;6%-!<NsL>
\e(B
265 col_list text[] NOT NULL, --
\e$B%F!<%V%k$NNsL>
\e(B
266 type_list text[] NOT NULL, --
\e$B%F!<%V%k$N%G!<%?7?L>
\e(B
267 dist_def_func text NOT NULL, --
\e$BJ,;6%k!<%k4X?t
\e(B
268 PRIMARY KEY (dbname, schema_name, table_name)
270 <p>
\e$B%F!<%V%k
\e(B dist_def
\e$B$K3JG<$5$l$k%G!<%?$OBg$-$/J,$1$F0J2<$N
\e(B 2
\e$B$D$G$9!#
\e(B</p>
272 <li>
\e$BJ,;6%k!<%k
\e(B (col_name
\e$B!"
\e(Bdist_def_func)</li>
273 <li>
\e$B%F!<%V%k$N%a%?>pJs
\e(B (dbname
\e$B!"
\e(Bschema_name
\e$B!"
\e(Btable_name
\e$B!"
\e(Bcol_list
\e$B!"
\e(Btype_list)</li>
275 <p>
\e$B$^$:!"J,;6%k!<%k$O$I$N%G!<%?$r$I$N%G!<%?%Y!<%9%N!<%I$K3JG<$9$k$+$H$$$&$3$H$r7hDj$9$k$?$a$N%G!<%?$G$9!#
\e(B
276 col_name
\e$BNs$K$O%F!<%V%k$N$I$NNs$NCM$K$h$C$F3JG<$9$k%G!<%?%Y!<%9%N!<%I$r7hDj$9$k$+$H$$$&$3$H$r;XDj$7$^$9!#
\e(B
277 dist_def_func
\e$BNs$K$O!"
\e(Bcol_name
\e$BNs$K;XDj$5$l$?Ns$NCM$r0z?t$H$7$F<u$1<h$j!"%G!<%?%Y!<%9%N!<%I$NHV9f$rJV$94X?t$r;XDj$7$^$9!#
\e(B</p>
278 <p>
\e$B%F!<%V%k$N%a%?>pJs$OLd$$9g$o$;$N=q$-49$($r9T$&:]$K;HMQ$5$l$k%G!<%?$G$9!#
\e(B
279 \e$B%Q%i%l%k%/%(%j$G$O!"Ld$$9g$o$;$rJ#?t$N%G!<%?%Y!<%9%N!<%I$K?6$jJ,$1!"$=$l$>$l$N%G!<%?%Y!<%9%N!<%I$G<B9T$5$l$?7k2L$r
\e(B 1
\e$B$D$K$^$H$a$k$?$a!"Ld$$9g$o$;$N=q$-49$($r9T$$$^$9!#
\e(B</p>
282 <h4><p>3.2.3.
\e$B%F!<%V%k
\e(B replicate_def
\e$B$NDj5A
\e(B</p></h4>
284 \e$B0l$D$N
\e(BSQL
\e$BJ8$K%F!<%V%k$N7k9gEy$G
\e(Bdist_def
\e$B$KEPO?$7$?%F!<%V%k$H6&$K%l%W%j%1!<%7%g%s$r9T$&%F!<%V%k$r;XDj$9$k>l9g$K$O!"
\e(B
285 \e$B%l%W%j%1!<%7%g%s$r9T$&%F!<%V%k$N>pJs
\e(B(
\e$BJ#@=%k!<%k
\e(B)
\e$B$r$"$i$+$8$a!"
\e(Breplicate_def
\e$B$H$$$&%F!<%V%k$KEPO?$7$F$*$-$^$9!#
\e(B
286 \e$B%F!<%V%k
\e(B dist_def
\e$B$NDj5A$N:]$K!"
\e(Bsystem_db.sql
\e$B%U%!%$%k$+$i:n@.$7$?>l9g$K$O!"$9$G$K
\e(Breplicate_def
\e$B%F!<%V%k$,:n@.$5$l$F$$$^$9!#
\e(B
287 replicate_def
\e$B%F!<%V%k$O0J2<$N$h$&$KDj5A$5$l$F$$$^$9!#
\e(B
289 CREATE TABLE pgpool_catalog.replicate_def(
290 dbname TEXT, --
\e$B%G!<%?%Y!<%9L>
\e(B
291 schema_name TEXT, --
\e$B%9%-!<%^L>
\e(B
292 table_name TEXT, --
\e$B%F!<%V%kL>
\e(B
293 col_list TEXT[] NOT NULL, --
\e$B%F!<%V%k$NNsL>
\e(B
294 type_list TEXT[] NOT NULL, --
\e$B%F!<%V%k$N%G!<%?7?L>
\e(B
295 PRIMARY KEY (dbname,schema_name,table_name)
300 \e$B%F!<%V%k
\e(B replicate_def
\e$B$K3JG<$5$l$k%G!<%?$O%F!<%V%k$N%a%?>pJs
\e(B(dbname
\e$B!"
\e(Bschema_name
\e$B!"
\e(Btable_name
\e$B!"
\e(Bcol_list
\e$B!"
\e(Btype_list)
\e$B$H$J$j$^$9!#
\e(B
304 pgpool-ll
\e$B$O!"%/%(%j$K;H$o$l$F$$$k!"$9$Y$F$N%F!<%V%k!"%+%i%`!"7?>pJs$r
\e(Bdist_def
\e$B$^$?$O!"
\e(Breplicate_def
\e$B%F!<%V%k$KEPO?$7$F$$$k>pJs
\e(B
305 \e$B$rMQ$$$F!"%/%(%j$N2r@O$H%/%(%j$N=q$-49$($r9T$$$^$9!#$=$N$?$a
\e(B replicate_def
\e$B%F!<%V%k$K@5$7$$>pJs$rEPO?$7$F$*$+$J$$$H!"@5$7$$<B9T
\e(B
306 \e$B7k2L$,F@$i$l$J$$2DG=@-$,$"$j$^$9!#
\e(B
309 <h3>3.3. <a name="dist-def">
\e$BJ,;6%k!<%k$NDj5A
\e(B</a></h3>
310 <p>
\e$BJ,;6%k!<%k$O$I$N%G!<%?$r$I$N%G!<%?%Y!<%9%N!<%I$K3JG<$9$k$+$H$$$&$3$H$r7hDj$9$k$b$N$G$9!#
\e(B</p>
311 <p>
\e$B$3$3$G$O!"%9%1!<%k%U%!%/%?!<
\e(B 3
\e$B$r;XDj$7$F%G!<%?$r=i4|2=$7$?
\e(B pgbench
\e$B$N%F!<%V%k$r
\e(B 3
\e$BBf$N%G!<%?%Y!<%9%N!<%I$K?6$jJ,$1$k$?$a$NJ,;6%k!<%k$rDj5A$7$^$9!#
\e(B
312 \e$B$J$*!"%G!<%?%Y!<%9$O!V
\e(B2. <a href="#replication">
\e$B=i$a$F$N%l%W%j%1!<%7%g%s
\e(B</a>
\e$B!W$G;HMQ$7$?%G!<%?%Y!<%9
\e(B bench_replication
\e$B$H$OJL$K%G!<%?%Y!<%9
\e(B bench_parallel
\e$B$r:n@.$9$k$3$H$K$7$^$9!#
\e(B</p>
313 <p>
\e$B$J$*!"%=!<%9%3!<%I$N
\e(B <code>sample</code>
\e$B%G%#%l%/%H%j$K$O0J2<$N@bL@$G;HMQ$9$kJ,;6%k!<%k$,Dj5A$5$l$?%U%!%$%k
\e(B <code>dist_def_pgbench.sql</code>
\e$B$,=`Hw$5$l$F$$$^$9!#
\e(B
314 \e$B$3$l$r;HMQ$7$FJ,;6%k!<%k$rDj5A$9$k$K$O%=!<%9%3!<%I$rE83+$7$?%G%#%l%/%H%j$G0J2<$N$h$&$K
\e(B psql
\e$B%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
315 <pre>$ psql -f sample/dist_def_pgbench.sql -p 5432 pgpool</pre>
316 <p>
\e$B$^$:!"J,;6%k!<%k$H%F!<%V%k$N%a%?>pJs$r%7%9%F%`%G!<%?%Y!<%9
\e(B pgpool
\e$B$N%F!<%V%k
\e(B dist_def
\e$B$K3JG<$7$^$9!#
\e(B
317 \e$B$3$3$G$O
\e(Baccounts
\e$B%F!<%V%k$r3F%G!<%?%Y!<%9%N!<%I$KBP$7$F%G!<%?J,3d$r9T$$$^$9!#
\e(B
318 \e$BJ,;6%-!<NsL>$O!"
\e(Baccounts
\e$B$K$D$$$F$O%W%i%$%^%j%-!<@)Ls$,;XDj$5$l$?Ns
\e(B aid
\e$B$K;XDj$7$^$9!#
\e(B</p>
320 INSERT INTO pgpool_catalog.dist_def VALUES (
325 ARRAY['aid', 'bid', 'abalance', 'filler'],
326 ARRAY['integer', 'integer', 'integer', 'character(84)'],
327 'pgpool_catalog.dist_def_accounts'
330 <p>
\e$B<!$K!"J,;6%k!<%k4X?t$r%F!<%V%k$4$H$K%7%9%F%`%G!<%?%Y!<%9
\e(B pgpool
\e$B$KDj5A$7$^$9!#
\e(B
331 \e$BJ,;6%k!<%k4X?t$O!"I,$:$7$b%F!<%V%k$4$H$K:n@.$9$kI,MW$O$J$/!"FbIt4X?t$r;HMQ$9$k$3$H$b$G$-$^$9!#
\e(B
332 \e$B$^$?!"J,;6%k!<%k4X?t$O
\e(B SQL
\e$B$G$J$/$H$b
\e(B PL/pgSQL
\e$B$d
\e(B PL/Tcl
\e$B$G:n@.$7$F$b9=$$$^$;$s!#
\e(B</p>
333 <p>
\e$B%9%1!<%k%U%!%/%?!<
\e(B 3
\e$B$r;XDj$7$F%G!<%?$r=i4|2=$7$?>l9g!"
\e(Baccounts
\e$B%F!<%V%k$N
\e(B aid
\e$BNs$NCM$O
\e(B 1
\e$B$+$i
\e(B 300000
\e$B$^$G$K$J$k$N$G!"$3$l$i$NCM$r$b$H$K
\e(B 3
\e$BBf$N%G!<%?%Y!<%9%N!<%I$KBP$7$F%G!<%?$,6QEy$KJ,;6$5$l$k$h$&$K4X?t$rDj5A$7$^$9!#
\e(B</p>
334 <p>
\e$B$3$3$G$O!"0z?t$H$7$F<u$1<h$C$?CM$+$i
\e(B WHEN
\e$B<0$K$h$C$F
\e(B 0
\e$B$+$i
\e(B 2
\e$B$^$G$N%G!<%?%Y!<%9%N!<%I$NHV9f$rJV$9C1=c$J
\e(B SQL
\e$B4X?t$rDj5A$9$k$3$H$K$7$^$9!#
\e(B</p>
336 CREATE OR REPLACE FUNCTION pgpool_catalog.dist_def_accounts(anyelement)
337 RETURNS integer AS $$
338 SELECT CASE WHEN $1 > 0 AND $1 <= 100000 THEN 0
339 WHEN $1 > 100000 AND $1 <= 200000 THEN 1
345 <h3>3.4 <a name="replicate-def">
\e$BJ#@=%k!<%k$NDj5A
\e(B</a></h3>
346 <p>
\e$BJ#@=%k!<%k$O$I$N%F!<%V%k$,%l%W%j%1!<%7%g%s$5$l$F$$$k$+$I$&$+$r7hDj$9$k$b$N$G$9!#
\e(B</p>
347 <p>
\e$B$3$3$G$O!"
\e(Bpgbench
\e$B$G:n@.$5$l$k!!
\e(Bbranches
\e$B%F!<%V%k$H
\e(B tellers
\e$B$rEPO?$7$F$*$-$^$9!#$3$l$K$h$j!"
\e(Baccounts
\e$B%F!<%V%k!"
\e(Bbranches
\e$B%F!<%V%k$H
\e(Btellers
\e$B%F!<%V%k$r
\e(B
348 \e$B;H$C$?Ld$$9g$o$;$,2DG=$H$J$j$^$9!#
\e(B
350 INSERT INTO pgpool_catalog.replicate_def VALUES (
354 ARRAY['bid', 'bbalance', 'filler'],
355 ARRAY['integer', 'integer', 'character(88)']
358 INSERT INTO pgpool_catalog.replicate_def VALUES (
362 ARRAY['tid', 'bid', 'tbalance', 'filler'],
363 ARRAY['integer', 'integer', 'integer', 'character(84)']
366 <p>
\e$B$J$*!"%=!<%9%3!<%I$N
\e(B <code>sample</code>
\e$B%G%#%l%/%H%j$K$O>e5-$N@bL@$G;HMQ$9$kJ#@=%k!<%k$,Dj5A$5$l$?%U%!%$%k
\e(B <code>replicate_def_pgbench.sql</code>
\e$B$,=`Hw$5$l$F$$$^$9!#
\e(B
367 \e$B$3$l$r;HMQ$7$FJ,;6%k!<%k$rDj5A$9$k$K$O%=!<%9%3!<%I$rE83+$7$?%G%#%l%/%H%j$G0J2<$N$h$&$K
\e(B psql
\e$B%3%^%s%I$r<B9T$7$^$9!#
\e(B</p>
369 $ psql -f sample/replicate_def_pgbench.sql -p 5432 pgpool
373 <h3>3.5. <a name="parallel-check">
\e$B%Q%i%l%k%/%(%j$N3NG'
\e(B</a></h3>
374 <p>
\e$B%Q%i%l%k%/%(%j$N@_Dj$r
\e(B pgpool-II
\e$B$KH?1G$5$;$k$K$O
\e(B pgpool-II
\e$B$r:F5/F0$9$kI,MW$,$"$j$^$9!#$J$*!"%F!<%V%k
\e(B dist_def
\e$B!"
\e(Breplicate_def
\e$B$r99?7$7$?>l9g$b
\e(B pgpool-II
\e$B$N:F5/F0$,I,MW$G$9!#
\e(B
375 pgpool-II
\e$B$N:F5/F0$K$D$$$F$O!V
\e(B1.5. <a href="#start-shutdown">pgpool-II
\e$B$N5/F0$HDd;_
\e(B</a>
\e$B!W$r;2>H$7$F$/$@$5$$!#
\e(B</p>
376 <p>
\e$B%Q%i%l%k%/%(%j$rM-8z$K$7$F
\e(B pgpool-II
\e$B$r5/F0$G$-$?$i!"<B:]$K
\e(B pgbench
\e$B$r;HMQ$7$F%Q%i%l%k%/%(%j$,<B9T$5$l$k$3$H$r3NG'$7$^$7$g$&!#
\e(B</p>
377 <p>
\e$B$^$:!"
\e(Bpgbench
\e$B$,;HMQ$9$k%G!<%?%Y!<%9
\e(B bench_parallel
\e$B$r:n@.$7$^$9!#
\e(B
378 <code>createdb</code>
\e$B%3%^%s%I$r
\e(B pgpool-II
\e$B$KBP$7$F<B9T$9$k$H!"$9$Y$F$N%G!<%?%Y!<%9%N!<%I$KBP$7$F%G!<%?%Y!<%9
\e(B bench_parallel
\e$B$,:n@.$5$l$^$9!#
\e(B</p>
379 <pre>$ createdb -p 9999 bench_parallel</pre>
380 <p>
\e$B$=$7$F!"0J2<$N$h$&$K%9%1!<%k%U%!%/%?!<
\e(B 3
\e$B$r;XDj$7$F
\e(B pgbench
\e$B$G;HMQ$9$k%F!<%V%k$r:n@.$7!"%G!<%?$r=i4|2=$7$^$9!#
\e(B</p>
381 <pre>$ pgbench -i -p 9999 -s 3 bench_parallel</pre>
382 <p>
\e$B%9%1!<%k%U%!%/%?!<
\e(B 3
\e$B$r;XDj$7$F%G!<%?$r=i4|2=$7$?
\e(B pgbench
\e$B$N%F!<%V%k$H$=$l$>$l$N9T?t$O0J2<$N$H$*$j$G$9!#
\e(B
383 \e$B%G!<%?$r=i4|2=$9$k$3$H$K$h$C$F3JG<$5$l$k%G!<%?$O!"%F!<%V%k
\e(B dist_def
\e$B$KEPO?$5$l$F$$$k%F!<%V%k$KBP$7$F$OJ,;6%k!<%k$K=>$C$F
\e(B 3
\e$BBf$N%G!<%?%Y!<%9%N!<%I$KJ,;6$5$l$^$9!#
\e(B</p>
387 <th>
\e$B%F!<%V%kL>
\e(B</th>
388 <th>
\e$B9T?t
\e(B</th>
408 <p>
\e$B%G!<%?$,
\e(B 3
\e$BBf$N%G!<%?%Y!<%9%N!<%I$KJ,;6$5$l$F$$$k$3$H$O!"
\e(Bpgpool-II
\e$B$KBP$7$FLd$$9g$o$;$r<B9T$7$?7k2L$H%G!<%?%Y!<%9%N!<%I$KD>@\Ld$$9g$o$;$r<B9T$7$?7k2L$rHf3S$9$l$P3NG'$G$-$^$9!#
\e(B
409 \e$BNc$($P!"0J2<$N$h$&$K%3%^%s%I$r<B9T$9$k$H!"$9$Y$F$N%G!<%?%Y!<%9%N!<%I
\e(B (
\e$B%]!<%HHV9f
\e(B 5432
\e$B!"
\e(B5433
\e$B!"
\e(B5434
\e$B!"
\e(B9999)
\e$B$N%G!<%?%Y!<%9
\e(B bench_parallel
\e$B$N%F!<%V%k
\e(B accounts
\e$B$N:G>.CM!":GBgCM$,I=<($5$l$^$9!#
\e(B</p>
410 <pre>$ for port in 5432 5433 5434 9999; do
412 > psql -c "SELECT min(aid), max(aid) FROM accounts" -p $port bench_parallel
415 <div class="copyright">
418 Copyright © 2003 – 2008 PgPool Global Development Group