]> git.8kb.co.uk Git - pgpool-ii/pgpool-ii_2.2.5/blob - doc/tutorial-ja.html
Attempt to send a proper failure message to frontend when authentication
[pgpool-ii/pgpool-ii_2.2.5] / doc / tutorial-ja.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <head>
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" />
7 </head>
8 <body>
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>
13 <dl>
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>
30 </dl>
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>
35 <pre>$ ./configure
36 $ make
37 $ make install</pre>
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'
58 port = 9999</pre>
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'
83 backend_port0 = 5432
84 backend_weight0 = 1
85 backend_hostname1 = 'localhost'
86 backend_port1 = 5433
87 backend_weight1 = 1
88 backend_hostname2 = 'localhost'
89 backend_port2 = 5434
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&hellip; \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>
97 <pre>$ pgpool</pre>
98 <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
102 </p>
103
104 <pre>
105 $ pgpool -n &
106 </pre>
107
108 <p>
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 &gt; /var/log/pgpool/pgpool.log 2&gt;&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>
112 <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
116
117 \e$B$?$H$($P!"\e(BApache2\e$B$KIUB0$9$k\e(Brotatelogs\e$B$r;H$&$N$G$"$l$P!"\e(B
118
119 <pre>
120 $ pgpool -n 2>&1 | /usr/local/apache2/bin/rotatelogs \
121   -l -f /var/log/pgpool/pgpool.log.%A 86400 &
122 </pre>
123
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
127 <pre>
128 55 23 * * * /usr/bin/find /var/log/pgpool -type f -mtime +5 -exec /bin/rm -f '{}' \;
129 </pre>
130 </p>
131 <p>
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
134 </p>
135
136 <p>
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
138
139 <pre>
140 $ pgpool -n 2>&1 | /usr/sbin/cronolog \
141   --hardlink=/var/log/pgpool/pgpool.log \
142   '/var/log/pgpool/%Y-%m-%d-pgpool.log' &
143 </pre>
144 </p>
145
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>
172
173 <center>
174 <table border>
175 <tr>
176 <th>\e$B%F!<%V%kL>\e(B</th>
177 <th>\e$B9T?t\e(B</th>
178 </tr>
179 <tr>
180 <td>branches</td>
181 <td>1</td>
182 </tr>
183 <tr>
184 <td>tellers</td>
185 <td>10</td>
186 </tr>
187 <tr>
188 <td>accounts</td>
189 <td>100000</td>
190 </tr>
191 <tr>
192 <td>history</td>
193 <td>0</td>
194 </tr>
195 </table>
196 </center>
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
199 &gt;     echo $port
200 &gt;     for table_name in branches tellers accounts history; do
201 &gt;         echo $table_name
202 &gt;         psql -c &quot;SELECT count(*) FROM $table_name&quot; -p $port bench_replication
203 &gt;     done
204 &gt; done
205 </pre>
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
240 </p>
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)
269 );</pre>
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>
271 <ul>
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>
274 </ul>
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>
280
281
282 <h4><p>3.2.3. \e$B%F!<%V%k\e(B replicate_def \e$B$NDj5A\e(B</p></h4>
283 <p>
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
288 <pre>
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)
296 );
297 </pre>
298 </p>
299 <p>
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
301 </p>
302
303 <p>
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
307 </p>
308
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>
319 <pre>
320 INSERT INTO pgpool_catalog.dist_def VALUES (
321     'bench_parallel',
322     'public',
323     'accounts',
324     'aid',
325     ARRAY['aid', 'bid', 'abalance', 'filler'],
326     ARRAY['integer', 'integer', 'integer', 'character(84)'],
327     'pgpool_catalog.dist_def_accounts'
328 );
329 </pre>
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>
335 <pre>
336 CREATE OR REPLACE FUNCTION pgpool_catalog.dist_def_accounts(anyelement)
337 RETURNS integer AS $$
338     SELECT CASE WHEN $1 &gt; 0 AND $1 &lt;= 100000 THEN 0
339         WHEN $1 &gt; 100000 AND $1 &lt;= 200000 THEN 1
340         ELSE 2
341     END;
342 $$ LANGUAGE sql;
343 </pre>
344
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
349 <pre>
350 INSERT INTO pgpool_catalog.replicate_def VALUES (
351     'bench_parallel',
352     'public',
353     'branches',
354     ARRAY['bid', 'bbalance', 'filler'],
355     ARRAY['integer', 'integer', 'character(88)']
356 );
357
358 INSERT INTO pgpool_catalog.replicate_def VALUES (
359     'bench_parallel',
360     'public',
361     'tellers',
362     ARRAY['tid', 'bid', 'tbalance', 'filler'],
363     ARRAY['integer', 'integer', 'integer', 'character(84)']
364 );
365 </pre>
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>
368 <pre>
369 $ psql -f sample/replicate_def_pgbench.sql -p 5432 pgpool
370 </pre>
371
372
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>
384 <center>
385 <table border="1">
386 <tr>
387 <th>\e$B%F!<%V%kL>\e(B</th>
388 <th>\e$B9T?t\e(B</th>
389 </tr>
390 <tr>
391 <td>branches</td>
392 <td>3</td>
393 </tr>
394 <tr>
395 <td>tellers</td>
396 <td>30</td>
397 </tr>
398 <tr>
399 <td>accounts</td>
400 <td>300000</td>
401 </tr>
402 <tr>
403 <td>history</td>
404 <td>0</td>
405 </tr>
406 </table>
407 </center>
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
411 &gt;     echo $port
412 &gt;     psql -c &quot;SELECT min(aid), max(aid) FROM accounts&quot; -p $port bench_parallel
413 &gt; done
414 </pre>
415 <div class="copyright">
416 <hr>
417 <copyright>
418 Copyright &copy; 2003 &ndash; 2008 PgPool Global Development Group
419 </copyright>
420 </div>
421 </body>
422 </html>