prestogres 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (393) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +20 -0
  4. data/LICENSE +202 -0
  5. data/NOTICE +22 -0
  6. data/README.md +217 -0
  7. data/Rakefile +13 -0
  8. data/VERSION +1 -0
  9. data/bin/prestogres +254 -0
  10. data/config/pcp.conf.sample +28 -0
  11. data/config/pgpool.conf +678 -0
  12. data/config/pool_hba.conf +84 -0
  13. data/config/pool_passwd +0 -0
  14. data/config/postgresql.conf +2 -0
  15. data/ext/.gitignore +6 -0
  16. data/ext/depend +26 -0
  17. data/ext/extconf.rb +4 -0
  18. data/ext/prestogres_config.c +12 -0
  19. data/pgpool2/.gitignore +36 -0
  20. data/pgpool2/AUTHORS +4 -0
  21. data/pgpool2/COPYING +12 -0
  22. data/pgpool2/ChangeLog +1 -0
  23. data/pgpool2/INSTALL +1 -0
  24. data/pgpool2/Makefile.am +159 -0
  25. data/pgpool2/Makefile.in +1187 -0
  26. data/pgpool2/NEWS +4960 -0
  27. data/pgpool2/README +1 -0
  28. data/pgpool2/README.euc_jp +1 -0
  29. data/pgpool2/README.online-recovery +62 -0
  30. data/pgpool2/TODO +103 -0
  31. data/pgpool2/ac_func_accept_argtypes.m4 +85 -0
  32. data/pgpool2/aclocal.m4 +1088 -0
  33. data/pgpool2/c-compiler.m4 +134 -0
  34. data/pgpool2/c-library.m4 +325 -0
  35. data/pgpool2/child.c +2097 -0
  36. data/pgpool2/config.guess +1532 -0
  37. data/pgpool2/config.h.in +332 -0
  38. data/pgpool2/config.sub +1640 -0
  39. data/pgpool2/configure +15752 -0
  40. data/pgpool2/configure.in +392 -0
  41. data/pgpool2/depcomp +522 -0
  42. data/pgpool2/doc/basebackup.sh +17 -0
  43. data/pgpool2/doc/pgpool-de.html +4220 -0
  44. data/pgpool2/doc/pgpool-en.html +5738 -0
  45. data/pgpool2/doc/pgpool-fr.html +4118 -0
  46. data/pgpool2/doc/pgpool-ja.css +198 -0
  47. data/pgpool2/doc/pgpool-ja.html +11279 -0
  48. data/pgpool2/doc/pgpool-zh_cn.html +4445 -0
  49. data/pgpool2/doc/pgpool.css +280 -0
  50. data/pgpool2/doc/pgpool_remote_start +13 -0
  51. data/pgpool2/doc/recovery.conf.sample +117 -0
  52. data/pgpool2/doc/tutorial-en.html +707 -0
  53. data/pgpool2/doc/tutorial-ja.html +422 -0
  54. data/pgpool2/doc/tutorial-memqcache-en.html +325 -0
  55. data/pgpool2/doc/tutorial-memqcache-ja.html +370 -0
  56. data/pgpool2/doc/tutorial-memqcache-zh_cn.html +322 -0
  57. data/pgpool2/doc/tutorial-watchdog-en.html +306 -0
  58. data/pgpool2/doc/tutorial-watchdog-ja.html +343 -0
  59. data/pgpool2/doc/tutorial-watchdog-zh_cn.html +301 -0
  60. data/pgpool2/doc/tutorial-zh_cn.html +537 -0
  61. data/pgpool2/doc/watchdog.png +0 -0
  62. data/pgpool2/doc/wd-en.html +236 -0
  63. data/pgpool2/doc/wd-en.jpg +0 -0
  64. data/pgpool2/doc/wd-ja.html +219 -0
  65. data/pgpool2/doc/wd-ja.jpg +0 -0
  66. data/pgpool2/doc/wd-zh_cn.html +201 -0
  67. data/pgpool2/doc/where_to_send_queries.odg +0 -0
  68. data/pgpool2/doc/where_to_send_queries.pdf +0 -0
  69. data/pgpool2/general.m4 +166 -0
  70. data/pgpool2/getopt_long.c +200 -0
  71. data/pgpool2/getopt_long.h +44 -0
  72. data/pgpool2/install-sh +251 -0
  73. data/pgpool2/ltmain.sh +8406 -0
  74. data/pgpool2/m4/libtool.m4 +7360 -0
  75. data/pgpool2/m4/ltoptions.m4 +368 -0
  76. data/pgpool2/m4/ltsugar.m4 +123 -0
  77. data/pgpool2/m4/ltversion.m4 +23 -0
  78. data/pgpool2/m4/lt~obsolete.m4 +92 -0
  79. data/pgpool2/main.c +2971 -0
  80. data/pgpool2/md5.c +444 -0
  81. data/pgpool2/md5.h +28 -0
  82. data/pgpool2/missing +360 -0
  83. data/pgpool2/mkinstalldirs +40 -0
  84. data/pgpool2/parser/Makefile.am +50 -0
  85. data/pgpool2/parser/Makefile.in +559 -0
  86. data/pgpool2/parser/copyfuncs.c +3310 -0
  87. data/pgpool2/parser/gram.c +39100 -0
  88. data/pgpool2/parser/gram.h +940 -0
  89. data/pgpool2/parser/gram.y +13408 -0
  90. data/pgpool2/parser/gramparse.h +74 -0
  91. data/pgpool2/parser/keywords.c +32 -0
  92. data/pgpool2/parser/keywords.h +39 -0
  93. data/pgpool2/parser/kwlist.h +425 -0
  94. data/pgpool2/parser/kwlookup.c +88 -0
  95. data/pgpool2/parser/list.c +1156 -0
  96. data/pgpool2/parser/makefuncs.c +518 -0
  97. data/pgpool2/parser/makefuncs.h +83 -0
  98. data/pgpool2/parser/memnodes.h +79 -0
  99. data/pgpool2/parser/nodes.c +29 -0
  100. data/pgpool2/parser/nodes.h +609 -0
  101. data/pgpool2/parser/outfuncs.c +5790 -0
  102. data/pgpool2/parser/parsenodes.h +2615 -0
  103. data/pgpool2/parser/parser.c +262 -0
  104. data/pgpool2/parser/parser.h +46 -0
  105. data/pgpool2/parser/pg_class.h +158 -0
  106. data/pgpool2/parser/pg_config_manual.h +273 -0
  107. data/pgpool2/parser/pg_list.h +352 -0
  108. data/pgpool2/parser/pg_trigger.h +147 -0
  109. data/pgpool2/parser/pg_wchar.h +492 -0
  110. data/pgpool2/parser/pool_memory.c +342 -0
  111. data/pgpool2/parser/pool_memory.h +77 -0
  112. data/pgpool2/parser/pool_parser.h +222 -0
  113. data/pgpool2/parser/pool_string.c +121 -0
  114. data/pgpool2/parser/pool_string.h +37 -0
  115. data/pgpool2/parser/primnodes.h +1280 -0
  116. data/pgpool2/parser/scan.c +4094 -0
  117. data/pgpool2/parser/scan.l +1451 -0
  118. data/pgpool2/parser/scanner.h +120 -0
  119. data/pgpool2/parser/scansup.c +221 -0
  120. data/pgpool2/parser/scansup.h +28 -0
  121. data/pgpool2/parser/snprintf.c +1102 -0
  122. data/pgpool2/parser/stringinfo.c +294 -0
  123. data/pgpool2/parser/stringinfo.h +178 -0
  124. data/pgpool2/parser/value.c +78 -0
  125. data/pgpool2/parser/value.h +62 -0
  126. data/pgpool2/parser/wchar.c +2048 -0
  127. data/pgpool2/pcp.conf.sample +28 -0
  128. data/pgpool2/pcp/Makefile.am +40 -0
  129. data/pgpool2/pcp/Makefile.in +771 -0
  130. data/pgpool2/pcp/libpcp_ext.h +250 -0
  131. data/pgpool2/pcp/md5.c +444 -0
  132. data/pgpool2/pcp/md5.h +28 -0
  133. data/pgpool2/pcp/pcp.c +1652 -0
  134. data/pgpool2/pcp/pcp.h +61 -0
  135. data/pgpool2/pcp/pcp_attach_node.c +172 -0
  136. data/pgpool2/pcp/pcp_detach_node.c +185 -0
  137. data/pgpool2/pcp/pcp_error.c +87 -0
  138. data/pgpool2/pcp/pcp_node_count.c +160 -0
  139. data/pgpool2/pcp/pcp_node_info.c +198 -0
  140. data/pgpool2/pcp/pcp_pool_status.c +166 -0
  141. data/pgpool2/pcp/pcp_proc_count.c +166 -0
  142. data/pgpool2/pcp/pcp_proc_info.c +261 -0
  143. data/pgpool2/pcp/pcp_promote_node.c +185 -0
  144. data/pgpool2/pcp/pcp_recovery_node.c +172 -0
  145. data/pgpool2/pcp/pcp_stop_pgpool.c +179 -0
  146. data/pgpool2/pcp/pcp_stream.c +385 -0
  147. data/pgpool2/pcp/pcp_stream.h +52 -0
  148. data/pgpool2/pcp/pcp_systemdb_info.c +194 -0
  149. data/pgpool2/pcp/pcp_watchdog_info.c +211 -0
  150. data/pgpool2/pcp_child.c +1493 -0
  151. data/pgpool2/pg_md5.c +305 -0
  152. data/pgpool2/pgpool.8.in +121 -0
  153. data/pgpool2/pgpool.conf +553 -0
  154. data/pgpool2/pgpool.conf.sample +666 -0
  155. data/pgpool2/pgpool.conf.sample-master-slave +665 -0
  156. data/pgpool2/pgpool.conf.sample-replication +664 -0
  157. data/pgpool2/pgpool.conf.sample-stream +664 -0
  158. data/pgpool2/pgpool.spec +264 -0
  159. data/pgpool2/pgpool_adm/TODO +7 -0
  160. data/pgpool2/pgpool_adm/pgpool_adm--1.0.sql +85 -0
  161. data/pgpool2/pgpool_adm/pgpool_adm.c +558 -0
  162. data/pgpool2/pgpool_adm/pgpool_adm.control +5 -0
  163. data/pgpool2/pgpool_adm/pgpool_adm.h +46 -0
  164. data/pgpool2/pgpool_adm/pgpool_adm.sql.in +85 -0
  165. data/pgpool2/pool.h +655 -0
  166. data/pgpool2/pool_auth.c +1390 -0
  167. data/pgpool2/pool_config.c +5007 -0
  168. data/pgpool2/pool_config.h +284 -0
  169. data/pgpool2/pool_config.l +3281 -0
  170. data/pgpool2/pool_config_md5.c +29 -0
  171. data/pgpool2/pool_connection_pool.c +812 -0
  172. data/pgpool2/pool_error.c +242 -0
  173. data/pgpool2/pool_globals.c +27 -0
  174. data/pgpool2/pool_hba.c +1723 -0
  175. data/pgpool2/pool_hba.conf.sample +67 -0
  176. data/pgpool2/pool_ip.c +567 -0
  177. data/pgpool2/pool_ip.h +65 -0
  178. data/pgpool2/pool_ipc.h +38 -0
  179. data/pgpool2/pool_lobj.c +242 -0
  180. data/pgpool2/pool_lobj.h +32 -0
  181. data/pgpool2/pool_memqcache.c +3818 -0
  182. data/pgpool2/pool_memqcache.h +268 -0
  183. data/pgpool2/pool_params.c +163 -0
  184. data/pgpool2/pool_passwd.c +249 -0
  185. data/pgpool2/pool_passwd.h +41 -0
  186. data/pgpool2/pool_path.c +193 -0
  187. data/pgpool2/pool_path.h +81 -0
  188. data/pgpool2/pool_process_context.c +247 -0
  189. data/pgpool2/pool_process_context.h +62 -0
  190. data/pgpool2/pool_process_query.c +5001 -0
  191. data/pgpool2/pool_process_reporting.c +1671 -0
  192. data/pgpool2/pool_process_reporting.h +44 -0
  193. data/pgpool2/pool_proto2.c +671 -0
  194. data/pgpool2/pool_proto_modules.c +3524 -0
  195. data/pgpool2/pool_proto_modules.h +185 -0
  196. data/pgpool2/pool_query_cache.c +1020 -0
  197. data/pgpool2/pool_query_context.c +1871 -0
  198. data/pgpool2/pool_query_context.h +105 -0
  199. data/pgpool2/pool_relcache.c +284 -0
  200. data/pgpool2/pool_relcache.h +78 -0
  201. data/pgpool2/pool_rewrite_outfuncs.c +9060 -0
  202. data/pgpool2/pool_rewrite_query.c +715 -0
  203. data/pgpool2/pool_rewrite_query.h +192 -0
  204. data/pgpool2/pool_select_walker.c +1150 -0
  205. data/pgpool2/pool_select_walker.h +68 -0
  206. data/pgpool2/pool_sema.c +161 -0
  207. data/pgpool2/pool_session_context.c +952 -0
  208. data/pgpool2/pool_session_context.h +203 -0
  209. data/pgpool2/pool_shmem.c +185 -0
  210. data/pgpool2/pool_signal.c +158 -0
  211. data/pgpool2/pool_signal.h +61 -0
  212. data/pgpool2/pool_ssl.c +339 -0
  213. data/pgpool2/pool_stream.c +962 -0
  214. data/pgpool2/pool_stream.h +61 -0
  215. data/pgpool2/pool_system.c +659 -0
  216. data/pgpool2/pool_timestamp.c +1215 -0
  217. data/pgpool2/pool_timestamp.h +38 -0
  218. data/pgpool2/pool_type.h +171 -0
  219. data/pgpool2/pool_worker_child.c +384 -0
  220. data/pgpool2/ps_status.c +404 -0
  221. data/pgpool2/recovery.c +435 -0
  222. data/pgpool2/redhat/pgpool.conf.sample.patch +52 -0
  223. data/pgpool2/redhat/pgpool.init +201 -0
  224. data/pgpool2/redhat/pgpool.sysconfig +7 -0
  225. data/pgpool2/redhat/rpm_installer/basebackup-replication.sh +53 -0
  226. data/pgpool2/redhat/rpm_installer/basebackup-stream.sh +55 -0
  227. data/pgpool2/redhat/rpm_installer/config_for_script +17 -0
  228. data/pgpool2/redhat/rpm_installer/failover.sh +64 -0
  229. data/pgpool2/redhat/rpm_installer/getsources.sh +141 -0
  230. data/pgpool2/redhat/rpm_installer/install.sh +1363 -0
  231. data/pgpool2/redhat/rpm_installer/pgpool_recovery_pitr +47 -0
  232. data/pgpool2/redhat/rpm_installer/pgpool_remote_start +15 -0
  233. data/pgpool2/redhat/rpm_installer/recovery.conf +4 -0
  234. data/pgpool2/redhat/rpm_installer/uninstall.sh +57 -0
  235. data/pgpool2/sample/dist_def_pgbench.sql +73 -0
  236. data/pgpool2/sample/pgpool.pam +3 -0
  237. data/pgpool2/sample/pgpool_recovery +20 -0
  238. data/pgpool2/sample/pgpool_recovery_pitr +19 -0
  239. data/pgpool2/sample/pgpool_remote_start +13 -0
  240. data/pgpool2/sample/replicate_def_pgbench.sql +18 -0
  241. data/pgpool2/sql/insert_lock.sql +15 -0
  242. data/pgpool2/sql/pgpool-recovery/pgpool-recovery.c +280 -0
  243. data/pgpool2/sql/pgpool-recovery/pgpool-recovery.sql.in +19 -0
  244. data/pgpool2/sql/pgpool-recovery/pgpool_recovery--1.0.sql +24 -0
  245. data/pgpool2/sql/pgpool-recovery/pgpool_recovery.control +5 -0
  246. data/pgpool2/sql/pgpool-recovery/uninstall_pgpool-recovery.sql +3 -0
  247. data/pgpool2/sql/pgpool-regclass/pgpool-regclass.c +206 -0
  248. data/pgpool2/sql/pgpool-regclass/pgpool-regclass.sql.in +4 -0
  249. data/pgpool2/sql/pgpool-regclass/pgpool_regclass--1.0.sql +7 -0
  250. data/pgpool2/sql/pgpool-regclass/pgpool_regclass.control +5 -0
  251. data/pgpool2/sql/pgpool-regclass/uninstall_pgpool-regclass.sql +1 -0
  252. data/pgpool2/sql/system_db.sql +38 -0
  253. data/pgpool2/strlcpy.c +85 -0
  254. data/pgpool2/test/C/test_extended.c +98 -0
  255. data/pgpool2/test/jdbc/.cvsignore +2 -0
  256. data/pgpool2/test/jdbc/AutoCommitTest.java +45 -0
  257. data/pgpool2/test/jdbc/BatchTest.java +55 -0
  258. data/pgpool2/test/jdbc/ColumnTest.java +60 -0
  259. data/pgpool2/test/jdbc/CreateTempTableTest.java +48 -0
  260. data/pgpool2/test/jdbc/InsertTest.java +34 -0
  261. data/pgpool2/test/jdbc/LockTest.java +36 -0
  262. data/pgpool2/test/jdbc/PgpoolTest.java +75 -0
  263. data/pgpool2/test/jdbc/README.euc_jp +73 -0
  264. data/pgpool2/test/jdbc/RunTest.java +83 -0
  265. data/pgpool2/test/jdbc/SelectTest.java +37 -0
  266. data/pgpool2/test/jdbc/UpdateTest.java +32 -0
  267. data/pgpool2/test/jdbc/expected/CreateTempTable +1 -0
  268. data/pgpool2/test/jdbc/expected/autocommit +10 -0
  269. data/pgpool2/test/jdbc/expected/batch +1 -0
  270. data/pgpool2/test/jdbc/expected/column +100 -0
  271. data/pgpool2/test/jdbc/expected/insert +1 -0
  272. data/pgpool2/test/jdbc/expected/lock +100 -0
  273. data/pgpool2/test/jdbc/expected/select +2 -0
  274. data/pgpool2/test/jdbc/expected/update +1 -0
  275. data/pgpool2/test/jdbc/pgpool.properties +7 -0
  276. data/pgpool2/test/jdbc/prepare.sql +54 -0
  277. data/pgpool2/test/jdbc/run.sh +6 -0
  278. data/pgpool2/test/parser/.cvsignore +6 -0
  279. data/pgpool2/test/parser/README +32 -0
  280. data/pgpool2/test/parser/expected/copy.out +17 -0
  281. data/pgpool2/test/parser/expected/create.out +64 -0
  282. data/pgpool2/test/parser/expected/cursor.out +37 -0
  283. data/pgpool2/test/parser/expected/delete.out +10 -0
  284. data/pgpool2/test/parser/expected/drop.out +12 -0
  285. data/pgpool2/test/parser/expected/insert.out +13 -0
  286. data/pgpool2/test/parser/expected/misc.out +28 -0
  287. data/pgpool2/test/parser/expected/prepare.out +4 -0
  288. data/pgpool2/test/parser/expected/privileges.out +31 -0
  289. data/pgpool2/test/parser/expected/scanner.out +30 -0
  290. data/pgpool2/test/parser/expected/select.out +89 -0
  291. data/pgpool2/test/parser/expected/transaction.out +38 -0
  292. data/pgpool2/test/parser/expected/update.out +11 -0
  293. data/pgpool2/test/parser/expected/v84.out +37 -0
  294. data/pgpool2/test/parser/expected/v90.out +25 -0
  295. data/pgpool2/test/parser/expected/var.out +22 -0
  296. data/pgpool2/test/parser/input/alter.sql +2 -0
  297. data/pgpool2/test/parser/input/copy.sql +17 -0
  298. data/pgpool2/test/parser/input/create.sql +64 -0
  299. data/pgpool2/test/parser/input/cursor.sql +37 -0
  300. data/pgpool2/test/parser/input/delete.sql +10 -0
  301. data/pgpool2/test/parser/input/drop.sql +12 -0
  302. data/pgpool2/test/parser/input/insert.sql +13 -0
  303. data/pgpool2/test/parser/input/misc.sql +28 -0
  304. data/pgpool2/test/parser/input/prepare.sql +4 -0
  305. data/pgpool2/test/parser/input/privileges.sql +31 -0
  306. data/pgpool2/test/parser/input/scanner.sql +34 -0
  307. data/pgpool2/test/parser/input/select.sql +89 -0
  308. data/pgpool2/test/parser/input/transaction.sql +38 -0
  309. data/pgpool2/test/parser/input/update.sql +11 -0
  310. data/pgpool2/test/parser/input/v84.sql +37 -0
  311. data/pgpool2/test/parser/input/v90.sql +38 -0
  312. data/pgpool2/test/parser/input/var.sql +22 -0
  313. data/pgpool2/test/parser/main.c +96 -0
  314. data/pgpool2/test/parser/parse_schedule +16 -0
  315. data/pgpool2/test/parser/pool.h +13 -0
  316. data/pgpool2/test/parser/run-test +62 -0
  317. data/pgpool2/test/pdo-test/README.euc_jp +58 -0
  318. data/pgpool2/test/pdo-test/SQLlist/test1.sql +3 -0
  319. data/pgpool2/test/pdo-test/SQLlist/test2.sql +3 -0
  320. data/pgpool2/test/pdo-test/collections.inc +11 -0
  321. data/pgpool2/test/pdo-test/def.inc +7 -0
  322. data/pgpool2/test/pdo-test/log.txt +0 -0
  323. data/pgpool2/test/pdo-test/mod/database.inc +36 -0
  324. data/pgpool2/test/pdo-test/mod/def.inc +0 -0
  325. data/pgpool2/test/pdo-test/mod/errorhandler.inc +27 -0
  326. data/pgpool2/test/pdo-test/pdotest.php +11 -0
  327. data/pgpool2/test/pdo-test/regsql.inc +56 -0
  328. data/pgpool2/test/pgpool_setup +898 -0
  329. data/pgpool2/test/regression/README +39 -0
  330. data/pgpool2/test/regression/clean.sh +21 -0
  331. data/pgpool2/test/regression/libs.sh +16 -0
  332. data/pgpool2/test/regression/regress.sh +166 -0
  333. data/pgpool2/test/regression/tests/001.load_balance/test.sh +128 -0
  334. data/pgpool2/test/regression/tests/002.native_replication/PgTester.java +47 -0
  335. data/pgpool2/test/regression/tests/002.native_replication/create.sql +6 -0
  336. data/pgpool2/test/regression/tests/002.native_replication/test.sh +71 -0
  337. data/pgpool2/test/regression/tests/003.failover/expected.r +6 -0
  338. data/pgpool2/test/regression/tests/003.failover/expected.s +6 -0
  339. data/pgpool2/test/regression/tests/003.failover/test.sh +45 -0
  340. data/pgpool2/test/regression/tests/004.watchdog/master.conf +12 -0
  341. data/pgpool2/test/regression/tests/004.watchdog/standby.conf +19 -0
  342. data/pgpool2/test/regression/tests/004.watchdog/test.sh +52 -0
  343. data/pgpool2/test/regression/tests/050.bug58/test.sh +50 -0
  344. data/pgpool2/test/regression/tests/051.bug60/bug.sql +12 -0
  345. data/pgpool2/test/regression/tests/051.bug60/database-clean.sql +6 -0
  346. data/pgpool2/test/regression/tests/051.bug60/database-setup.sql +28 -0
  347. data/pgpool2/test/regression/tests/051.bug60/test.sh +79 -0
  348. data/pgpool2/test/regression/tests/052.do_query/test.sh +44 -0
  349. data/pgpool2/test/regression/tests/053.insert_lock_hangs/test.sh +81 -0
  350. data/pgpool2/test/regression/tests/054.postgres_fdw/test.sh +67 -0
  351. data/pgpool2/test/regression/tests/055.backend_all_down/test.sh +52 -0
  352. data/pgpool2/test/regression/tests/056.bug63/jdbctest2.java +66 -0
  353. data/pgpool2/test/regression/tests/056.bug63/test.sh +47 -0
  354. data/pgpool2/test/regression/tests/057.bug61/test.sh +40 -0
  355. data/pgpool2/test/regression/tests/058.bug68/jdbctest3.java +45 -0
  356. data/pgpool2/test/regression/tests/058.bug68/test.sh +47 -0
  357. data/pgpool2/test/timestamp/expected/insert.out +16 -0
  358. data/pgpool2/test/timestamp/expected/misc.out +3 -0
  359. data/pgpool2/test/timestamp/expected/update.out +6 -0
  360. data/pgpool2/test/timestamp/input/insert.sql +16 -0
  361. data/pgpool2/test/timestamp/input/misc.sql +3 -0
  362. data/pgpool2/test/timestamp/input/update.sql +6 -0
  363. data/pgpool2/test/timestamp/main.c +129 -0
  364. data/pgpool2/test/timestamp/parse_schedule +3 -0
  365. data/pgpool2/test/timestamp/run-test +69 -0
  366. data/pgpool2/version.h +1 -0
  367. data/pgpool2/watchdog/Makefile.am +17 -0
  368. data/pgpool2/watchdog/Makefile.in +505 -0
  369. data/pgpool2/watchdog/test/stab.c +266 -0
  370. data/pgpool2/watchdog/test/test.c +85 -0
  371. data/pgpool2/watchdog/test/wd_child_t.c +87 -0
  372. data/pgpool2/watchdog/test/wd_lifecheck_t.c +87 -0
  373. data/pgpool2/watchdog/test/wd_packet_t.c +87 -0
  374. data/pgpool2/watchdog/test/wd_ping_t.c +20 -0
  375. data/pgpool2/watchdog/watchdog.c +408 -0
  376. data/pgpool2/watchdog/watchdog.h +209 -0
  377. data/pgpool2/watchdog/wd_child.c +444 -0
  378. data/pgpool2/watchdog/wd_ext.h +123 -0
  379. data/pgpool2/watchdog/wd_heartbeat.c +577 -0
  380. data/pgpool2/watchdog/wd_if.c +216 -0
  381. data/pgpool2/watchdog/wd_init.c +126 -0
  382. data/pgpool2/watchdog/wd_interlock.c +347 -0
  383. data/pgpool2/watchdog/wd_lifecheck.c +512 -0
  384. data/pgpool2/watchdog/wd_list.c +429 -0
  385. data/pgpool2/watchdog/wd_packet.c +1159 -0
  386. data/pgpool2/watchdog/wd_ping.c +330 -0
  387. data/pgpool2/ylwrap +223 -0
  388. data/pgsql/presto_client.py +346 -0
  389. data/pgsql/prestogres.py +156 -0
  390. data/pgsql/setup_functions.sql +21 -0
  391. data/pgsql/setup_language.sql +3 -0
  392. data/prestogres.gemspec +23 -0
  393. metadata +496 -0
@@ -0,0 +1,141 @@
1
+ #!/bin/sh
2
+
3
+ username=`whoami`
4
+ rpm_dir=$HOME/rpm
5
+ work_dir=`pwd`/work
6
+
7
+ # ---------------------------------------------------------------------
8
+ # configuration
9
+ # ---------------------------------------------------------------------
10
+
11
+ git_dir=$HOME/git
12
+
13
+ ## pgpool-II
14
+ pgpool_src_dir=${git_dir}/pgpool2
15
+ pgpool_tarball_dir=${pgpool_src_dir}
16
+ pgpool_version=3.3.2
17
+
18
+ ## pgpoolAdmin
19
+ admin_src_dir=${git_dir}/pgpooladmin
20
+ admin_tarball_dir=${admin_src_dir}/tools
21
+ admin_version=3.3.0
22
+
23
+ ## postgresql92
24
+ pg_home=/usr/pgsql-9.2
25
+ pg_version=92
26
+ export PATH=${pg_home}/bin:$PATH
27
+
28
+ echo "* Setup starts."
29
+ echo
30
+
31
+ # ---------------------------------------------------------------------
32
+ # setup for rpmbuild
33
+ # ---------------------------------------------------------------------
34
+
35
+ echo -n " Setup for rpmbuild ... "
36
+
37
+ mkdir -p ${rpm_dir}/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
38
+
39
+ cat > ~/.rpmmacros <<EOT
40
+ %_topdir /home/${username}/rpm
41
+ %_mandir %_prefix/man
42
+ %debug_package %{nil}
43
+ %dist .pgdg
44
+ %pgdg 1
45
+ EOT
46
+
47
+ echo "done."
48
+
49
+ # ---------------------------------------------------------------------
50
+ # get sources for pgpool to rpmbuild
51
+ # ---------------------------------------------------------------------
52
+
53
+ rm -rf ${work_dir}
54
+ mkdir ${work_dir}
55
+ cd ${work_dir}
56
+
57
+ echo -n " Get sources to rpmbuild ... "
58
+
59
+ # each spec files
60
+ cp -f ${pgpool_src_dir}/pgpool.spec ${work_dir}
61
+ cp -f ${admin_src_dir}/pgpoolAdmin.spec ${work_dir}
62
+
63
+ # pgpool-II-*.tar.gz
64
+ if [ ! -f ${pgpool_tarball_dir}/pgpool-II-${pgpool_version}.tar.gz ]; then
65
+ cd ${pgpool_src_dir}
66
+ ./configure --with-pgsql=${pg_home}
67
+ make
68
+ make dist > /dev/null 2>&1
69
+ if [ $? -ne 0 ]; then
70
+ echo "Failed."
71
+ exit
72
+ fi
73
+ if [ ! -f ${pgpool_tarball_dir}/pgpool-II-${pgpool_version}.tar.gz ]; then
74
+ echo "${pgpool_tarball_dir}/pgpool-II-${pgpool_version}.tar.gz not found."
75
+ exit
76
+ fi
77
+ mv pgpool-II-${pgpool_version}.tar.gz ${rpm_dir}/SOURCES
78
+ fi
79
+
80
+ # pgpoolAdmin-*.tar.gz
81
+ if [ ! -f ${admin_tarball_dir}/pgpoolAdmin-${admin_version}.tar.gz ]; then
82
+ echo "${admin_tarball_dir}/pgpoolAdmin-${admin_version}.tar.gz not found."
83
+ exit
84
+ fi
85
+ cp ${admin_tarball_dir}/pgpoolAdmin-${admin_version}.tar.gz ${rpm_dir}/SOURCES
86
+
87
+ # pgpool.conf.sample.patch, pgpool.init, pgpool.sysconfig
88
+ cp -f ${pgpool_src_dir}/redhat/pgpool.conf.sample.patch ${rpm_dir}/SOURCES/
89
+ cp -f ${pgpool_src_dir}/redhat/pgpool.init ${rpm_dir}/SOURCES/
90
+ cp -f ${pgpool_src_dir}/redhat/pgpool.sysconfig ${rpm_dir}/SOURCES/
91
+
92
+ echo "done."
93
+
94
+ # ---------------------------------------------------------------------
95
+ # get sources for pgpool for installer
96
+ # ---------------------------------------------------------------------
97
+
98
+ echo -n " Get sources for installer ... "
99
+
100
+ installer_dir=${work_dir}/installer-pg${pg_version}-${pgpool_version}
101
+
102
+ # scripts
103
+ mkdir -p ${installer_dir}
104
+ cp -f ${pgpool_src_dir}/redhat/rpm_installer/install.sh ${installer_dir}/
105
+ cp -f ${pgpool_src_dir}/redhat/rpm_installer/uninstall.sh ${installer_dir}/
106
+ cp -f ${pgpool_src_dir}/COPYING ${installer_dir}/
107
+
108
+ # each conf files
109
+ mkdir -p ${installer_dir}/templates
110
+ cp -f ${pgpool_src_dir}/pgpool.conf.sample ${installer_dir}/templates/
111
+ cp -f ${pgpool_src_dir}/pcp.conf.sample ${installer_dir}/templates/
112
+ cp -f ${admin_src_dir}/conf/pgmgt.conf.php ${installer_dir}/templates/
113
+
114
+ initdb -D data_tmp --no-locale -E UTF8 > /dev/null 2>&1
115
+ cp -f data_tmp/postgresql.conf ${installer_dir}/templates/
116
+ sed -i "s/\(replication \+\)$USER/\1postgres/g" data_tmp/pg_hba.conf
117
+ cp -f data_tmp/pg_hba.conf ${installer_dir}/templates/
118
+ rm -rf data_tmp
119
+
120
+ cp -f ${pgpool_src_dir}/redhat/rpm_installer/config_for_script ${installer_dir}/templates/
121
+ cp -f ${pgpool_src_dir}/redhat/rpm_installer/basebackup-*.sh ${installer_dir}/templates/
122
+ cp -f ${pgpool_src_dir}/redhat/rpm_installer/failover.sh ${installer_dir}/templates/
123
+ cp -f ${pgpool_src_dir}/redhat/rpm_installer/pgpool_recovery_pitr ${installer_dir}/templates/
124
+ cp -f ${pgpool_src_dir}/redhat/rpm_installer/pgpool_remote_start ${installer_dir}/templates/
125
+ cp -f ${pgpool_src_dir}/redhat/rpm_installer/recovery.conf ${installer_dir}/templates/
126
+
127
+ echo "done."
128
+
129
+ echo
130
+ echo "* Setup Finished. See \"work\" directory."
131
+
132
+ # ---------------------------------------------------------------------
133
+
134
+ echo
135
+ echo "* Next ..."
136
+ echo
137
+ echo " - rpmbuild -ba work/pgpool.spec"
138
+ echo " - rpmbuild -ba work/pgpoolAdmin.spec"
139
+ echo " - move ~/rpm/RPMS/../pgpool*.rpm (except for *.src.rpm) to work/installer-pg${pg_version}/"
140
+ echo " - create tar ball from work/installer-pg${pg_version}/"
141
+ echo
@@ -0,0 +1,1363 @@
1
+ #! /bin/bash
2
+ # install.sh: Install script for pgpool-II
3
+
4
+ PATH=/bin:/sbin:/usr/bin:/usr/sbin
5
+
6
+ MAJOR_VERSION=3.3
7
+ DIST=pgdg
8
+
9
+ # debug mode of this script
10
+ SH_DEBUG=0
11
+
12
+ # pgpool-II
13
+ PGPOOL_SOFTWARE_NAME=pgpool-II
14
+ P_VERSION=3.3.2
15
+ P_RELEASE=1
16
+ PGPOOL_CONF_DIR=/etc/pgpool-II
17
+
18
+ # pgpoolAdmin
19
+ ADMIN_SOFTWARE_NAME=pgpoolAdmin
20
+ A_VERSION=3.3.0
21
+ A_RELEASE=1
22
+ ADMIN_DIR=/var/www/html/pgpoolAdmin
23
+ APACHE_USER=apache
24
+
25
+ # packages
26
+ ARCHITECTURE=$(uname -i)
27
+ PACKAGE_FILES=(
28
+ $PGPOOL_SOFTWARE_NAME-$P_VERSION-$P_RELEASE.$DIST.$ARCHITECTURE.rpm
29
+ $ADMIN_SOFTWARE_NAME-$A_VERSION-$A_RELEASE.$DIST.noarch.rpm
30
+ )
31
+
32
+ # pgpool
33
+ PGPOOL_BIN_DIR=/usr/bin
34
+ PGPOOL_PORT=9999
35
+ PCP_PORT=9898
36
+ WATCHDOG_PORT=9000
37
+ MODE=stream # This will be editted in script.
38
+ NODE0_HOST="" # This will be editted in script.
39
+ NODE1_HOST="" # This will be editted in script.
40
+ NETMASK="255.255.255.0" # This will be editted in script.
41
+
42
+ # postgres
43
+ PGHOME=/usr/pgsql-9.2
44
+ CONTRIB_DIR=$PGHOME/share/contrib
45
+ PG_SUPER_USER=postgres
46
+ PG_SUPER_USER_PASSWD=$PG_SUPER_USER
47
+ PG_SUPER_USER_HOME=`eval echo ~$PG_SUPER_USER`
48
+ PG_ADMIN_USER=admin # This will be editted in script.
49
+ PG_ADMIN_USER_PASSWD=pgpool # This will be editted in script.
50
+ PGPORT=5432 # This will be editted in script.
51
+ PGDATA=$PG_SUPER_USER_HOME/data # This will be editted in script.
52
+ ARCHIVE_DIR=$PG_SUPER_USER_HOME/archivedir # This will be editted in script.
53
+ INITDB_OPTION="--no-locale -E UTF8"
54
+
55
+ # other
56
+ USE_WATCHDOG=0 # This will be editted in script.
57
+ NOBODY_SBIN=/var/private/nobody/sbin
58
+ PID_FILE_DIR=/var/run/pgpool/
59
+ PGPOOL_LOG_DIR=/var/log/pgpool
60
+ INSTALL_ONLY=0
61
+ SKIPPED=0
62
+
63
+ NODE_NO=0
64
+ THIS_HOST=""
65
+ DEST_HOST=""
66
+
67
+ TEMP_FILE_RPM=/tmp/rpmcheck
68
+ TEMP_CONF=/tmp/pgpool_conf_template
69
+ BOLD=$'\e[0;30;1m'
70
+ SPAN_END=$'\e[m'
71
+ PROMPT="[input] "
72
+
73
+ # -------------------------------------------------------------------
74
+ # config
75
+ # -------------------------------------------------------------------
76
+
77
+ function decho()
78
+ {
79
+ if [ $SH_DEBUG -eq 1 ]; then
80
+ echo $1
81
+ fi
82
+ }
83
+
84
+ function writeValList()
85
+ {
86
+ cat <<EOT > editted/install_val_list
87
+ MODE=$MODE
88
+ PG_ADMIN_USER=$PG_ADMIN_USER
89
+ PG_ADMIN_USER_PASSWD=$PG_ADMIN_USER_PASSWD
90
+ PGPORT=$PGPORT
91
+ PGDATA=$PGDATA
92
+ ARCHIVE_DIR=$ARCHIVE_DIR
93
+ USE_WATCHDOG=$USE_WATCHDOG
94
+ EOT
95
+ }
96
+
97
+ function readValList()
98
+ {
99
+ source editted/install_val_list
100
+ }
101
+
102
+ # -------------------------------------------------------------------
103
+ # check
104
+ # -------------------------------------------------------------------
105
+
106
+ function ynQuestion()
107
+ {
108
+ local _QUESTION=$1
109
+
110
+ while :; do
111
+ echo -n $PROMPT "$_QUESTION (yes/no): "
112
+ read REPLY
113
+ case $REPLY in
114
+ [yY] | [yY][eE][sS])
115
+ return 0
116
+ ;;
117
+ [nN] | [nN][oO])
118
+ return 1
119
+ ;;
120
+ esac
121
+ done
122
+ }
123
+
124
+ function hasPackage()
125
+ {
126
+ PACKAGE=$1
127
+ PACKAGE_NAME_SHOWN=$2
128
+ SILENT=0
129
+ if [ $# -eq 3 ]; then
130
+ SILENT=$3
131
+ fi
132
+
133
+ egrep -q $PACKAGE $TEMP_FILE_RPM
134
+ if [ $? -ne 0 ]; then
135
+ if [ $SILENT -eq 0 ]; then
136
+ echo
137
+ echo "Please install $PACKAGE_NAME_SHOWN."
138
+ fi
139
+ return 1
140
+ fi
141
+
142
+ return 0
143
+ }
144
+
145
+ function checkEnv()
146
+ {
147
+ # OS
148
+ if [ -f /etc/redhat-release ]; then
149
+ if grep -q "release 6" /etc/redhat-release; then
150
+ distribution=rhel6
151
+ else
152
+ echo "Your platform is not supported."
153
+ return 1
154
+ fi
155
+ fi
156
+
157
+ # pgpool-II
158
+ hasPackage $PGPOOL_SOFTWARE_NAME $PGPOOL_SOFTWARE_NAME 1
159
+ if [ $? -eq 0 ]; then
160
+ echo
161
+ echo "pgpool-II $MAJOR_VERSION is already installed."
162
+ return 1
163
+ fi
164
+
165
+ # other
166
+ hasPackage "postgresql92-server" "PostgreSQL (postgresql92-server)"
167
+ if [ $? -ne 0 ]; then return 1; fi
168
+ hasPackage "postgresql92" "PostgreSQL (postgresql92)"
169
+ if [ $? -ne 0 ]; then return 1; fi
170
+ hasPackage "httpd" "Apache (httpd)"
171
+ if [ $? -ne 0 ]; then return 1; fi
172
+ hasPackage "php-pgsql" "PHP (php-pgsql)"
173
+ if [ $? -ne 0 ]; then return 1; fi
174
+ hasPackage "php-mbstring" "PHP (php-mbstring)"
175
+ if [ $? -ne 0 ]; then return 1; fi
176
+ hasPackage "php-[45]" "PHP"
177
+ if [ $? -ne 0 ]; then return 1; fi
178
+
179
+ # root
180
+ if [ $(id -un) != root ]; then
181
+ echo
182
+ echo "Must be installed as root."
183
+ return 1
184
+ fi
185
+
186
+ return 0
187
+ }
188
+
189
+ # -------------------------------------------------------------------
190
+ # Nodes
191
+ # -------------------------------------------------------------------
192
+
193
+ function fixNodes()
194
+ {
195
+ # node 0
196
+ while :; do
197
+ echo -n $PROMPT "Specify node 0's hostname or IP address : "
198
+ read REPLY
199
+ if [ "$REPLY" != "" ]; then
200
+ if [ $REPLY = localhost ]; then
201
+ echo "NG. Please input actual hostname or IP address."
202
+ else
203
+ NODE0_HOST=$REPLY
204
+ break
205
+ fi
206
+ fi
207
+ done
208
+
209
+ # node 1
210
+ while :; do
211
+ echo -n $PROMPT "Specify node 1's hostname or IP address : "
212
+ read REPLY
213
+ if [ "$REPLY" != "" ]; then
214
+ if [ $REPLY = localhost ]; then
215
+ echo "NG. Please input actual hostname or IP address."
216
+ else
217
+ NODE1_HOST=$REPLY
218
+ break
219
+ fi
220
+ fi
221
+ done
222
+
223
+ }
224
+
225
+ function fixNetmask()
226
+ {
227
+ echo -n $PROMPT "Specify netmask (default: $NETMASK) : "
228
+ read REPLY
229
+ if [ "$REPLY" != "" ]; then
230
+ NETMASK=$REPLY
231
+ fi
232
+ }
233
+
234
+ # -------------------------------------------------------------------
235
+ # pgpool.conf
236
+ # -------------------------------------------------------------------
237
+
238
+ # get input from console and check the value if needed.
239
+ # input values is set to $RTN
240
+ function checkInputParam()
241
+ {
242
+ local _PARAM=$1
243
+ local _DESCRIPTION=$2
244
+ local _DEFAULT=$3
245
+
246
+ while :; do
247
+ echo -n $PROMPT $_DESCRIPTION
248
+ if [ "$_DEFAULT" != "" ]; then
249
+ echo -n " (default: $_DEFAULT)"
250
+ fi
251
+ echo -n " : "
252
+
253
+ read _INPUT_VAL
254
+ if [ "$_INPUT_VAL" = "" ]; then
255
+ if [ "$_DEFAULT" != "" ]; then
256
+ RTN=$_DEFAULT
257
+ return 0
258
+ fi
259
+ else
260
+ case $_PARAM in
261
+ backend_hostname*)
262
+ if [ $_INPUT_VAL = "localhost" ]; then
263
+ echo "NG. Please specify the host name."
264
+ else
265
+ RTN=$_INPUT_VAL
266
+ return 0
267
+ fi
268
+ ;;
269
+ *)
270
+ RTN=$_INPUT_VAL
271
+ return 0
272
+ ;;
273
+ esac
274
+ fi
275
+ done
276
+
277
+ return 0
278
+ }
279
+
280
+ # get input from console and write it to pgpool.conf
281
+ function setPgpoolParam()
282
+ {
283
+ local _PARAM=$1
284
+ local _DESCRIPTION=$2
285
+ local _DEFAULT=""
286
+
287
+ if [ $# -eq 3 ]; then
288
+ _DEFAULT=$3
289
+ fi
290
+
291
+ checkInputParam $_PARAM "$_DESCRIPTION" $_DEFAULT
292
+ _NEWVAL=$RTN
293
+
294
+ case $_PARAM in
295
+ delegate_IP|backend_data_directory*|heartbeat_*)
296
+ _NEWVAL="'$_NEWVAL'"
297
+ ;;
298
+ esac
299
+
300
+ writePgpoolParam $_PARAM $_NEWVAL
301
+ }
302
+
303
+ function getPgpoolParam()
304
+ {
305
+ local _PARAM=$1
306
+
307
+ RTN=`grep $_PARAM editted/pgpool.conf | sed -e "s/$_PARAM \+= \+\(.*\)/\1/" \
308
+ | sed -e "s/^'\(.*\)'$/\1/"`
309
+ }
310
+
311
+ # rewrite param in pgpool.conf to new values
312
+ function writePgpoolParam()
313
+ {
314
+ local _PARAM=$1
315
+ local _NEWVAL=$2
316
+
317
+ sed -i "s|^[#]*$_PARAM[ ]*=.*$|$_PARAM = $_NEWVAL|" editted/pgpool.conf
318
+
319
+ decho " [$_PARAM] $_NEWVAL"
320
+ }
321
+
322
+ function setBackend()
323
+ {
324
+ local _NODE_NUM=$1
325
+
326
+ echo "* backend $_NODE_NUM"
327
+
328
+ if [ $_NODE_NUM -eq 0 ]; then
329
+ writePgpoolParam "backend_hostname$_NODE_NUM" "'$NODE0_HOST'"
330
+
331
+ setPgpoolParam "backend_port$_NODE_NUM" "Port number" $PGPORT
332
+ PGPORT=$RTN
333
+ setPgpoolParam "backend_data_directory$_NODE_NUM" "Data directory" $PGDATA
334
+ PGDATA=$RTN
335
+
336
+ else
337
+ echo " Set the same values as backend 0."
338
+ writePgpoolParam "backend_hostname$_NODE_NUM" "'$NODE1_HOST'"
339
+ writePgpoolParam "backend_port$_NODE_NUM" $PGPORT
340
+ writePgpoolParam "backend_data_directory$_NODE_NUM" "'$PGDATA'"
341
+ fi
342
+ writePgpoolParam "backend_weight$_NODE_NUM" 1
343
+ }
344
+
345
+ function rewriteWatchdog()
346
+ {
347
+ echo "Rewrite watchdog configuration."
348
+ echo
349
+ writePgpoolParam wd_hostname "'$THIS_HOST'"
350
+ writePgpoolParam other_pgpool_hostname0 "'$DEST_HOST'"
351
+
352
+ getPgpoolParam wd_lifecheck_method
353
+ if [ $RTN = "heartbeat" ]; then
354
+ writePgpoolParam heartbeat_destination0 "'$DEST_HOST'"
355
+ fi
356
+ }
357
+
358
+ function setWatchdog()
359
+ {
360
+ writePgpoolParam use_watchdog on
361
+ setPgpoolParam delegate_IP "delegate IP address"
362
+
363
+ # config of this watchdog
364
+ decho
365
+ decho "[[ config of this watchdog ]]"
366
+ writePgpoolParam wd_hostname "'$THIS_HOST'"
367
+ writePgpoolParam wd_port $WATCHDOG_PORT
368
+
369
+ # config of another pgpool with watchdog
370
+ decho
371
+ decho "[[ config of another pgpool with watchdog ]]"
372
+ writePgpoolParam other_pgpool_hostname0 "'$DEST_HOST'"
373
+ writePgpoolParam other_pgpool_port0 $PGPOOL_PORT
374
+ writePgpoolParam other_wd_port0 $WATCHDOG_PORT
375
+
376
+ # lifecheck
377
+ decho
378
+ decho "[[ lifecheck ]]"
379
+ while :; do
380
+ echo $PROMPT "method of watchdog lifecheck (heartbeat / query)"
381
+ read REPLY
382
+ case $REPLY in
383
+ heartbeat|h)
384
+ REPLY=heartbeat
385
+ break
386
+ ;;
387
+ query|q)
388
+ REPLY=query
389
+ break
390
+ ;;
391
+ esac
392
+ done
393
+ writePgpoolParam wd_lifecheck_method $REPLY
394
+ WATCHDOG_METHOD=$REPLY
395
+
396
+ case $WATCHDOG_METHOD in
397
+ heartbeat)
398
+ writePgpoolParam heartbeat_device0 "''"
399
+ writePgpoolParam heartbeat_destination0 "'$DEST_HOST'"
400
+ writePgpoolParam heartbeat_destination_port0 "9694"
401
+ ;;
402
+
403
+ query)
404
+ writePgpoolParam wd_lifecheck_user "'$PG_SUPER_USER'"
405
+ writePgpoolParam wd_lifecheck_password "'$PG_SUPER_USER_PASSWD'"
406
+ ;;
407
+ esac
408
+
409
+ # command path (to use commands with setuid bit)
410
+ writePgpoolParam ifconfig_path "'$NOBODY_SBIN'"
411
+ writePgpoolParam arping_path "'$NOBODY_SBIN'"
412
+
413
+ # configure netmask for VIP
414
+ getPgpoolParam if_up_cmd
415
+ local _VAL=`echo $RTN | sed -e "s/255.255.255.0/$NETMASK/"`
416
+ writePgpoolParam if_up_cmd "'$_VAL'"
417
+
418
+ echo
419
+ }
420
+
421
+ function doConfigPgpool()
422
+ {
423
+ cp templates/pgpool.conf.sample editted/pgpool.conf
424
+ ynQuestion "Do you edit pgpool.conf now?"
425
+ if [ $? -ne 0 ]; then
426
+ SKIPPED=1
427
+ return
428
+ fi
429
+
430
+ local _STEPS=6
431
+
432
+ echo
433
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
434
+ echo $BOLD"Configuration for pgpool-II ... "$SPAN_END
435
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
436
+ echo
437
+
438
+ # -------------------------------------------------------------------
439
+ # [1] general
440
+ # -------------------------------------------------------------------
441
+
442
+ decho "[1/$_STEPS] general"
443
+ decho
444
+
445
+ writePgpoolParam listen_addresses "'*'"
446
+ writePgpoolParam port 9999
447
+ writePgpoolParam pcp_port 9898
448
+
449
+ # -------------------------------------------------------------------
450
+ # [2] mode
451
+ # -------------------------------------------------------------------
452
+
453
+ decho
454
+ decho "[2/$_STEPS] replication"
455
+ while :; do
456
+ echo $PROMPT "Which replication mode do you use? (native/ stream)"
457
+ echo
458
+
459
+ echo " native: native replication mode"
460
+ echo " stream: master slave mode with streaming replication"
461
+
462
+ read REPLY
463
+ case $REPLY in
464
+ native)
465
+ writePgpoolParam replication_mode on
466
+ MODE="replication"
467
+ break
468
+ ;;
469
+ stream)
470
+ writePgpoolParam master_slave_mode on
471
+ writePgpoolParam master_slave_sub_mode "'stream'"
472
+ MODE="stream"
473
+ break
474
+ ;;
475
+ esac
476
+ done
477
+
478
+ ynQuestion "Do you use load balancing?"
479
+ if [ $? -eq 0 ]; then
480
+ writePgpoolParam load_balance_mode on
481
+ fi
482
+
483
+ ynQuestion "Do you use on memory query cache with shared memory?"
484
+ if [ $? -eq 0 ]; then
485
+ writePgpoolParam memory_cache_enabled on
486
+ writePgpoolParam memqcache_method "'shmem'"
487
+ writePgpoolParam memqcache_oiddir "'$PGPOOL_LOG_DIR/oiddir'"
488
+ fi
489
+
490
+ # -------------------------------------------------------------------
491
+ # [3] watchdog
492
+ # -------------------------------------------------------------------
493
+
494
+ decho
495
+ decho "[3/$_STEPS] watchdog"
496
+
497
+ ynQuestion "Do you use watchdog?"
498
+ if [ $? -eq 0 ]; then
499
+ USE_WATCHDOG=1
500
+ setWatchdog
501
+ fi
502
+
503
+ # -------------------------------------------------------------------
504
+ # [4] backend
505
+ # -------------------------------------------------------------------
506
+
507
+ decho
508
+ decho "[4/$_STEPS] backend"
509
+ decho
510
+
511
+ setBackend 0
512
+ echo
513
+ setBackend 1
514
+
515
+ # -------------------------------------------------------------------
516
+ # [5] health check user
517
+ # -------------------------------------------------------------------
518
+
519
+ decho
520
+ decho "[5/$_STEPS] health check"
521
+ writePgpoolParam health_check_user "'$PG_SUPER_USER'"
522
+ writePgpoolParam health_check_password "'$PG_SUPER_USER_PASSWD'"
523
+ writePgpoolParam health_check_period 10
524
+
525
+ # -------------------------------------------------------------------
526
+ # [6] fail over
527
+ # -------------------------------------------------------------------
528
+
529
+ decho
530
+ decho "[6/$_STEPS] fail over & online recovery"
531
+ writePgpoolParam recovery_user "'$PG_SUPER_USER'"
532
+ writePgpoolParam recovery_password "'$PG_SUPER_USER_PASSWD'"
533
+ if [ $MODE = "stream" ]; then
534
+ writePgpoolParam recovery_1st_stage_command "'basebackup-stream.sh'"
535
+ writePgpoolParam failover_command "'$PGPOOL_CONF_DIR/failover.sh %d %h %p %D %m %M %H %P %r %R'"
536
+ writePgpoolParam sr_check_user "'$PG_SUPER_USER'"
537
+ writePgpoolParam sr_check_password "'$PG_SUPER_USER_PASSWD'"
538
+ else
539
+ writePgpoolParam recovery_1st_stage_command "'basebackup-replication.sh'"
540
+ writePgpoolParam recovery_2nd_stage_command "'pgpool_recovery_pitr'"
541
+ fi
542
+
543
+ echo
544
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
545
+ echo " ... end."
546
+ }
547
+
548
+ # -------------------------------------------------------------------
549
+ # pgpoolAdmin's conf
550
+ # -------------------------------------------------------------------
551
+
552
+ function writeAdminParam()
553
+ {
554
+ local _PARAM=$1
555
+ local _NEWVAL=$2
556
+
557
+ sed -i "s|define('$_PARAM',[ ]*'.*');|define('$_PARAM', '$_NEWVAL');|" editted/pgmgt.conf.php
558
+ }
559
+
560
+ function doConfigAdmin()
561
+ {
562
+ cp templates/pgmgt.conf.php editted/
563
+ ynQuestion "Do you edit pgmgt.conf.php now?"
564
+ if [ $? -ne 0 ]; then
565
+ return
566
+ fi
567
+
568
+ echo
569
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
570
+ echo $BOLD"Configuration for pgpoolAdmin ..."$SPAN_END
571
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
572
+ echo
573
+
574
+ while :; do
575
+ echo $PROMPT "Which language do you use? (en/fr/ja/zh_cn)"
576
+
577
+ read REPLY
578
+ case $REPLY in
579
+ en | fr | ja | zh_cn )
580
+ writeAdminParam "_PGPOOL2_LANG" $REPLY
581
+ break
582
+ ;;
583
+ esac
584
+ done
585
+
586
+ writeAdminParam _PGPOOL2_VERSION $MAJOR_VERSION
587
+ writeAdminParam _PGPOOL2_CONFIG_FILE $PGPOOL_CONF_DIR/pgpool.conf
588
+ writeAdminParam _PGPOOL2_PASSWORD_FILE $PGPOOL_CONF_DIR/pcp.conf
589
+ writeAdminParam _PGPOOL2_COMMAND $PGPOOL_BIN_DIR/pgpool
590
+ writeAdminParam _PGPOOL2_LOG_FILE $PGPOOL_LOG_DIR/pgpool.log
591
+ writeAdminParam _PGPOOL2_CMD_OPTION_N 1
592
+ writeAdminParam _PGPOOL2_PCP_DIR $PGPOOL_BIN_DIR
593
+ writeAdminParam _PGPOOL2_STATUS_REFRESH_TIME 5
594
+
595
+ echo
596
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
597
+ echo " ... end."
598
+ }
599
+
600
+ # -------------------------------------------------------------------
601
+ # pcp.conf
602
+ # -------------------------------------------------------------------
603
+
604
+ function doConfigPcp()
605
+ {
606
+ cp templates/pcp.conf.sample editted/pcp.conf
607
+ ynQuestion "Do you edit pcp.conf now?"
608
+ if [ $? -ne 0 ]; then
609
+ return
610
+ fi
611
+
612
+ echo
613
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
614
+ echo $BOLD"Configuration for PCP ..."$SPAN_END
615
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
616
+ echo
617
+
618
+ while :; do
619
+ echo -n $PROMPT "username for pgpoolAdmin: "
620
+ read PG_ADMIN_USER
621
+ if [ "$PG_ADMIN_USER" != "" ]; then
622
+ break;
623
+ fi
624
+ done
625
+
626
+ while :; do
627
+ echo -n $PROMPT "this user's password: "
628
+ read PG_ADMIN_USER_PASSWD
629
+ if [ "$PG_ADMIN_USER_PASSWD" != "" ]; then
630
+ break;
631
+ fi
632
+ done
633
+
634
+ echo
635
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
636
+ echo " ... end."
637
+ }
638
+
639
+ # -------------------------------------------------------------------
640
+ # postgresql.conf
641
+ # -------------------------------------------------------------------
642
+
643
+ function doConfigPostgres()
644
+ {
645
+ local _STEPS=5
646
+
647
+ cp templates/postgresql.conf editted/postgresql.conf
648
+ ynQuestion "Do you edit postgresql.conf now?"
649
+ if [ $? -ne 0 ]; then
650
+ SKIPPED=1
651
+ return
652
+ fi
653
+
654
+ echo
655
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
656
+ echo $BOLD"Configuration for PostgreSQL ..."$SPAN_END
657
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
658
+ echo
659
+
660
+ # [1] hot standby
661
+ decho
662
+ decho "[1/$_STEPS] WAL archive"
663
+ setPostgresParam "archive_command" "the directory where to archive a logfile segment" $ARCHIVE_DIR
664
+ writePostgresParam listen_addresses "'*'"
665
+ writePostgresParam archive_mode on
666
+ #writePostgresParam archive_command "'cp %p $ARCHIVE_DIR/%f </dev/null'"
667
+
668
+ if [ $MODE = "stream" ]; then
669
+ writePostgresParam wal_level hot_standby
670
+ writePostgresParam max_wal_senders 2
671
+ writePostgresParam hot_standby on
672
+ else
673
+ writePostgresParam wal_level archive
674
+ fi
675
+
676
+ # [2] log
677
+ decho
678
+ decho "[2/$_STEPS] log"
679
+ writePostgresParam logging_collector on
680
+ writePostgresParam log_filename "'%A.log'"
681
+ writePostgresParam log_line_prefix "'%t [%p-%l] '"
682
+ writePostgresParam log_truncate_on_rotation on
683
+
684
+ # -------------------------------------------------------------------
685
+ # [3] custom vartiable
686
+ # -------------------------------------------------------------------
687
+
688
+ decho "[4/$_STEPS] custom variable for pgpool_recovery extension"
689
+ writePostgresParam pgpool.pg_ctl "'$PGHOME/bin/pg_ctl'"
690
+
691
+ # -------------------------------------------------------------------
692
+ # [4] pg_hba.conf
693
+ # -------------------------------------------------------------------
694
+
695
+ NODE0_MASK=""
696
+ NODE1_MASK=""
697
+
698
+ # If hostname, netmask isn't necessary.
699
+ if expr "$NODE0_HOST" : "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" > /dev/null; then
700
+ NODE0_MASK=$NETMASK
701
+ fi
702
+ if expr "$NODE1_HOST" : "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" > /dev/null; then
703
+ NODE1_MASK=$NETMASK
704
+ fi
705
+
706
+ decho
707
+ decho "[5/$_STEPS] authorization"
708
+ cp templates/pg_hba.conf editted/pg_hba.conf
709
+ ed -s editted/pg_hba.conf > /dev/null 2>&1 <<EOT
710
+ /^#local *replication/s/^#//p
711
+ /^#host *replication/s/^#//p
712
+ /^#host *replication/s/^#//p
713
+ w
714
+ q
715
+ EOT
716
+ echo "host replication $PG_SUPER_USER $NODE0_HOST $NODE0_MASK trust" >> editted/pg_hba.conf
717
+ echo "host replication $PG_SUPER_USER $NODE1_HOST $NODE1_MASK trust" >> editted/pg_hba.conf
718
+ echo "host all $PG_SUPER_USER $NODE0_HOST $NODE0_MASK trust" >> editted/pg_hba.conf
719
+ echo "host all $PG_SUPER_USER $NODE1_HOST $NODE1_MASK trust" >> editted/pg_hba.conf
720
+ echo "host all $PG_ADMIN_USER $NODE0_HOST $NODE0_MASK trust" >> editted/pg_hba.conf
721
+ echo "host all $PG_ADMIN_USER $NODE1_HOST $NODE1_MASK trust" >> editted/pg_hba.conf
722
+
723
+ echo
724
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
725
+ echo " ... end."
726
+ }
727
+
728
+ function setPostgresParam()
729
+ {
730
+ local _PARAM=$1
731
+ local _DESCRIPTION=$2
732
+ local _DEFAULT=""
733
+
734
+ if [ $# -eq 3 ]; then
735
+ _DEFAULT=$3
736
+ fi
737
+
738
+ checkInputParam $_PARAM "$_DESCRIPTION" $_DEFAULT
739
+ _NEWVAL=$RTN
740
+
741
+ if [ "$_PARAM" = "archive_command" ]; then
742
+ writePostgresParam archive_command "'cp %p $ARCHIVE_DIR/%f </dev/null'"
743
+ else
744
+ writePostgresParam $_PARAM $_NEWVAL
745
+ fi
746
+ }
747
+
748
+ function writePostgresParam()
749
+ {
750
+ local _PARAM=$1
751
+ local _NEWVAL=$2
752
+
753
+ echo "$_PARAM = $_NEWVAL" >> editted/postgresql.conf
754
+
755
+ decho " [$_PARAM] $_NEWVAL"
756
+ }
757
+
758
+ # -------------------------------------------------------------------
759
+ # scripts
760
+ # -------------------------------------------------------------------
761
+
762
+ function createConfForScript()
763
+ {
764
+ local _SCRIPT=config_for_script
765
+ echo
766
+ echo -n "Create config for failover and online recovery ... "
767
+ cp -f templates/$_SCRIPT editted/
768
+ ed -s editted/$_SCRIPT <<EOT
769
+ /__PGHOME__/s@__PGHOME__@$PGHOME@
770
+ /__NODE0_HOST__/s@__NODE0_HOST__@$NODE0_HOST@
771
+ /__NODE1_HOST__/s@__NODE1_HOST__@$NODE1_HOST@
772
+ /__NODE0_PORT__/s@__NODE0_PORT__@$PGPORT@
773
+ /__NODE1_PORT__/s@__NODE1_PORT__@$PGPORT@
774
+ /__NODE0_DIR__/s@__NODE0_DIR__@$PGDATA@
775
+ /__NODE1_DIR__/s@__NODE1_DIR__@$PGDATA@
776
+ /__PGSUPERUSER__/s@__PGSUPERUSER__@$PG_SUPER_USER@
777
+ /__ARCHIVE_DIR__/s@__ARCHIVE_DIR__@$ARCHIVE_DIR@
778
+ /__PGPOOL_LOG_DIR__/s@__PGPOOL_LOG_DIR__@$PGPOOL_LOG_DIR@
779
+ w
780
+ q
781
+ EOT
782
+ echo "OK."
783
+ }
784
+
785
+ function createRecoveryConf()
786
+ {
787
+ local _SCRIPT=recovery.conf
788
+
789
+ echo -n "create recovery.conf ... ".
790
+ cp -f templates/$_SCRIPT editted/
791
+ ed -s editted/$_SCRIPT <<EOT
792
+ /__PGPOOL_PORT__/s@__PGPOOL_PORT__@$PGPOOL_PORT@
793
+ /__REPLI_USER__/s@__REPLI_USER__@$PG_SUPER_USER@
794
+ /__ARCHIVE_DIR__/s@__ARCHIVE_DIR__@$ARCHIVE_DIR@
795
+ w
796
+ q
797
+ EOT
798
+ echo "OK."
799
+ }
800
+
801
+ function chownToApache()
802
+ {
803
+ local _TARGET=$1
804
+ chown $APACHE_USER:$APACHE_USER $_TARGET
805
+ }
806
+
807
+ function copySbin()
808
+ {
809
+ if [ ! -e $NOBODY_SBIN ]; then
810
+ mkdir -p $NOBODY_SBIN
811
+ fi
812
+ chownToApache $NOBODY_SBIN
813
+ chmod 700 $NOBODY_SBIN
814
+
815
+ cp /sbin/ifconfig $NOBODY_SBIN
816
+ cp /sbin/arping $NOBODY_SBIN
817
+ chmod 4755 $NOBODY_SBIN/ifconfig
818
+ chmod 4755 $NOBODY_SBIN/arping
819
+ }
820
+
821
+ function sshWithoutPass()
822
+ {
823
+ local _THIS_USER=$1
824
+ local _HOME=`eval echo ~$_THIS_USER`
825
+ local _SSH_DIR=$_HOME/.ssh
826
+
827
+ rm $_SSH_DIR/id_rsa* >/dev/null 2>&1
828
+ su - $_THIS_USER -c "ssh-keygen -q -t rsa -P '' -f $_SSH_DIR/id_rsa << EOF
829
+
830
+ EOF"
831
+ if [ $? -ne 0 ]; then return 1; fi
832
+
833
+ ssh-copy-id -i $_SSH_DIR/id_rsa.pub $PG_SUPER_USER@$DEST_HOST > /dev/null 2>&1
834
+ if [ $? -ne 0 ]; then return 1; fi
835
+
836
+ su - $_THIS_USER -c "ssh -o StrictHostKeyChecking=no $PG_SUPER_USER@$DEST_HOST exit" > /dev/null 2>&1
837
+ if [ $? -ne 0 ]; then return 1; fi
838
+
839
+ return 0
840
+ }
841
+
842
+ function makeApacheLoginable()
843
+ {
844
+ local _APACHE_HOME="/home/$APACHE_USER"
845
+
846
+ if [ ! -e $_APACHE_HOME ]; then
847
+ mkdir $_APACHE_HOME -m 700
848
+ fi
849
+ chownToApache $_APACHE_HOME
850
+
851
+ su - $APACHE_USER -c "exit" > /dev/null
852
+ if [ $? -ne 0 ]; then
853
+ usermod -d $_APACHE_HOME -s /bin/bash $APACHE_USER > /dev/null 2>&1
854
+ fi
855
+ }
856
+
857
+ # -------------------------------------------------------------------
858
+ # Install
859
+ # -------------------------------------------------------------------
860
+
861
+ function doInstall()
862
+ {
863
+ echo "* Install packages ... "
864
+ rpm -ivh ${PACKAGE_FILES[@]}
865
+ if [ $? -ne 0 ]; then
866
+ echo "Failed."
867
+ return 1
868
+ fi
869
+ echo
870
+ echo "OK."
871
+ return 0
872
+ }
873
+
874
+ # -------------------------------------------------------------------
875
+ # Regist functions
876
+ # -------------------------------------------------------------------
877
+
878
+ function doQueries()
879
+ {
880
+ su - $PG_SUPER_USER -c "$PGHOME/bin/pg_ctl -D $PGDATA -w start" > /dev/null 2>&1
881
+
882
+ echo -n "- create user: admin ... "
883
+ $PGHOME/bin/psql -p $PGPORT -U $PG_SUPER_USER postgres \
884
+ -c "CREATE USER $PG_ADMIN_USER PASSWORD '$PG_ADMIN_USER_PASSWD' SUPERUSER" >/dev/null 2>&1
885
+ if [ $? -eq 0 ]; then
886
+ echo "OK."
887
+ else
888
+ echo "Failed."
889
+ echo " Please create the user \"$PG_ADMIN_USER\" manually. Continuing anyway."
890
+ fi
891
+
892
+ echo -n "- create extension: pgpool_regclass ... "
893
+ $PGHOME/bin/psql -p $PGPORT -U $PG_SUPER_USER template1 \
894
+ -c "CREATE EXTENSION pgpool_regclass; " > /dev/null 2>&1
895
+ if [ $? -eq 0 ]; then
896
+ echo "OK."
897
+ else
898
+ echo "Failed."
899
+ echo " Please install pgpool_regclass() manually . Continuing anyway."
900
+ fi
901
+
902
+ echo -n "- create extension: pgpool_recovery ... "
903
+ $PGHOME/bin/psql -p $PGPORT -U $PG_SUPER_USER template1 \
904
+ -c "CREATE EXTENSION pgpool_recovery;" > /dev/null 2>&1
905
+ if [ $? -eq 0 ]; then
906
+ echo "OK."
907
+ else
908
+ echo "Failed."
909
+ echo " Please install pgpool_recovery() manually . Continuing anyway."
910
+ fi
911
+
912
+ su - $PG_SUPER_USER -c "$PGHOME/bin/pg_ctl stop -D $PGDATA" > /dev/null 2>&1
913
+ }
914
+
915
+ # ===================================================================
916
+ # main
917
+ # ===================================================================
918
+
919
+ # -------------------------------------------------------------------
920
+ # [1] check
921
+ # -------------------------------------------------------------------
922
+
923
+ # 1. check environment
924
+ echo -n "check for installation ..."
925
+
926
+ rpm -qa | grep -E "${PGPOOL_SOFTWARE_NAME}|postgresql92|httpd|php|php-mbstring|php-pgsql" > $TEMP_FILE_RPM
927
+ checkEnv
928
+ if [ $? -ne 0 ]; then
929
+ rm -f $TEMP_FILE_RPM
930
+ exit 1
931
+ fi
932
+ rm -f $TEMP_FILE_RPM
933
+
934
+ echo "OK."
935
+ echo
936
+
937
+ # -------------------------------------------------------------------
938
+
939
+ # 2. licence agreement
940
+ echo $BOLD"================================================================="$SPAN_END
941
+ cat COPYING
942
+ echo $BOLD"================================================================="$SPAN_END
943
+ ynQuestion "Do you accept the end user software license agreement?"
944
+ if [ $? -ne 0 ]; then exit 1; fi
945
+
946
+ # -------------------------------------------------------------------
947
+
948
+ # 3. editing config?
949
+ ynQuestion "Do you edit configs? If no, install will start right now without configuration."
950
+ if [ $? -ne 0 ]; then
951
+ doInstall
952
+ if [ $? -eq 0 ]; then
953
+ echo "Completed!"
954
+ echo "All configuration should be done manually."
955
+ exit 0
956
+ else
957
+ exit 1
958
+ fi
959
+ fi
960
+
961
+ # -------------------------------------------------------------------
962
+ # [2] Node information
963
+ # -------------------------------------------------------------------
964
+
965
+ echo
966
+ echo $BOLD"================================================================="$SPAN_END
967
+ echo Configuration
968
+ echo $BOLD"================================================================="$SPAN_END
969
+
970
+ echo
971
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
972
+ echo $BOLD"Configuring Host, User, SSH ..."$SPAN_END
973
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
974
+
975
+ echo
976
+ echo "* Node information"
977
+
978
+ # 1. IP addresses og both nodes
979
+ echo
980
+ echo "Two-node cluster (node 0 and node 1) is assumed."
981
+ fixNodes
982
+
983
+ # -------------------------------------------------------------------
984
+
985
+ # 2. which node is this, node 0 or 1?
986
+ echo
987
+ echo "Which node is this?"
988
+ echo " If this is node 0, a database cluster is created by initdb after installation."
989
+ echo " Otherwise if this is node 1, the configurations on node 0 is reused."
990
+ ynQuestion "Is this node 0?"
991
+ if [ $? -eq 0 ]; then
992
+ NODE_NO=0
993
+ THIS_HOST=$NODE0_HOST
994
+ DEST_HOST=$NODE1_HOST
995
+ echo "OK. This is node 0."
996
+ else
997
+ echo "This is node 1."
998
+ ynQuestion "Installation on node 0 has finished already?"
999
+ if [ $? -eq 0 ]; then
1000
+ NODE_NO=1
1001
+ THIS_HOST=$NODE1_HOST
1002
+ DEST_HOST=$NODE0_HOST
1003
+ echo "OK. "
1004
+ else
1005
+ echo "Please install pgpool-II to node0 at first."
1006
+ exit 1
1007
+ fi
1008
+ fi
1009
+
1010
+ # -------------------------------------------------------------------
1011
+
1012
+ # 3. The user of PostgreSQL
1013
+ echo
1014
+ echo "* Check the user $PG_SUPER_USER"
1015
+ echo
1016
+
1017
+ id $PG_SUPER_USER >/dev/null 2>&1
1018
+ if [ $? -ne 0 ]; then
1019
+ echo "The user $PG_SUPER_USER doesn't exist on $THIS_HOST. Creating ..."
1020
+ useradd $PG_SUPER_USER > /dev/null 2>&1
1021
+ echo $PG_SUPER_USER:$PG_SUPER_USER_PASSWD | chpasswd
1022
+ if [ $? -eq 0 ]; then
1023
+ echo "OK."
1024
+ echo " Created \"$PG_SUPER_USER\" user with password \"$PG_SUPER_USER_PASSWD\"."
1025
+ echo " You must change the password after install."
1026
+ else
1027
+ echo "Failed."
1028
+ exit 1
1029
+ fi
1030
+ else
1031
+ echo "The user $PG_SUPER_USER exists on $THIS_HOST (this host) ... OK."
1032
+ fi
1033
+
1034
+ ynQuestion "The user $PG_SUPER_USER exists on $DEST_HOST (another host)?"
1035
+ if [ $? -ne 0 ]; then
1036
+ echo "Please create $PG_SUPER_USER on $DEST_HOST before the installation."
1037
+ exit 1
1038
+ fi
1039
+
1040
+ # -------------------------------------------------------------------
1041
+
1042
+ # 3. password-less access over ssh
1043
+ echo
1044
+ echo "* Setup password-less access over ssh"
1045
+ echo
1046
+ echo "Try ssh: $PG_SUPER_USER@$THIS_HOST (this host) -> $PG_SUPER_USER@$DEST_HOST (another host)"
1047
+ sshWithoutPass $PG_SUPER_USER
1048
+ if [ $? -ne 0 ]; then
1049
+ echo "Failed to ssh $PG_SUPER_USER@$DEST_HOST (another host)."
1050
+ exit 1
1051
+ else
1052
+ echo "OK."
1053
+ fi
1054
+
1055
+ echo
1056
+ echo "Try ssh: $APACHE_USER@$THIS_HOST (this host) -> $PG_SUPER_USER@$DEST_HOST (another host)"
1057
+ makeApacheLoginable
1058
+ if [ $? -ne 0 ]; then
1059
+ echo "Failed to make apache loginable. For configuring apache user, httpd must be stopped."
1060
+ exit 1
1061
+ fi
1062
+ sshWithoutPass $APACHE_USER
1063
+ if [ $? -ne 0 ]; then
1064
+ echo "Failed to ssh $PG_SUPER_USER@$DEST_HOST."
1065
+ exit 1
1066
+ else
1067
+ echo "OK."
1068
+ fi
1069
+
1070
+ # -------------------------------------------------------------------
1071
+
1072
+ # 4. netmask (in only node 0)
1073
+ if [ $NODE_NO -eq 0 ]; then
1074
+ echo
1075
+
1076
+ fixNetmask
1077
+ fi
1078
+
1079
+ echo
1080
+ echo $BOLD"----------------------------------------------------------------------"$SPAN_END
1081
+ echo " ... end."
1082
+
1083
+ # -------------------------------------------------------------------
1084
+ # [3] Editting conf files
1085
+ # -------------------------------------------------------------------
1086
+
1087
+ # create temporary config files in editted directory
1088
+ rm -rf editted/
1089
+ mkdir editted/
1090
+
1091
+ # node 0
1092
+ if [ $NODE_NO -eq 0 ]; then
1093
+ doConfigPcp
1094
+ doConfigPgpool
1095
+ doConfigAdmin
1096
+ doConfigPostgres
1097
+
1098
+ if [ $SKIPPED -eq 0 ]; then
1099
+ createConfForScript
1100
+ fi
1101
+
1102
+ if [ $MODE = "stream" ]; then
1103
+ createRecoveryConf
1104
+ cp templates/basebackup-stream.sh editted/
1105
+ cp templates/failover.sh editted/
1106
+ else
1107
+ cp templates/basebackup-replication.sh editted/
1108
+ cp templates/pgpool_recovery_pitr editted/
1109
+ fi
1110
+ cp templates/pgpool_remote_start editted/
1111
+
1112
+ echo
1113
+ echo "Save configuration information for installation on node 1."
1114
+ writeValList
1115
+ rm -rf $TEMP_CONF
1116
+ mkdir $TEMP_CONF
1117
+ cp editted/* $TEMP_CONF
1118
+ chown -R postgres:postgres $TEMP_CONF
1119
+ chmod 700 $TEMP_CONF
1120
+ chmod 600 $TEMP_CONF/*
1121
+
1122
+ # node 1
1123
+ else
1124
+ echo
1125
+ echo "Copy configuration information from node 0."
1126
+ su $PG_SUPER_USER -c "rm -rf $TEMP_CONF; mkdir $TEMP_CONF; scp $PG_SUPER_USER@$DEST_HOST:$TEMP_CONF/* $TEMP_CONF"
1127
+ cp $TEMP_CONF/* editted
1128
+ rm -rf $TEMP_CONF
1129
+ readValList
1130
+ if [ $USE_WATCHDOG -eq 1 ]; then
1131
+ rewriteWatchdog
1132
+ fi
1133
+ fi
1134
+
1135
+ # -------------------------------------------------------------------
1136
+ # [3-1] install RPMs
1137
+ # -------------------------------------------------------------------
1138
+
1139
+ echo
1140
+ echo $BOLD"================================================================="$SPAN_END
1141
+ echo "* Installation"
1142
+ echo $BOLD"================================================================="$SPAN_END
1143
+
1144
+ echo
1145
+ echo "* Setup pgpool-II"
1146
+
1147
+ # 1. install pgpool-II and pgpoolAdmin
1148
+ ynQuestion "Do you install pgpool really?"
1149
+ if [ $? -ne 0 ]; then
1150
+ exit 1
1151
+ fi
1152
+
1153
+ echo
1154
+ doInstall
1155
+ if [ $? -ne 0 ]; then exit 1; fi
1156
+
1157
+ # -------------------------------------------------------------------
1158
+
1159
+ # 2. rewrite pgpool.conf
1160
+ echo
1161
+ echo -n "- rewrite pgpool.conf ... "
1162
+ cp editted/pgpool.conf $PGPOOL_CONF_DIR
1163
+ if [ $? -ne 0 ]; then
1164
+ echo "Failed."
1165
+ echo " Please put pgpool.conf in the current directory to $PGPOOL_CONF_DIR manually. Continuing anyway."
1166
+ else
1167
+ echo "OK."
1168
+ fi
1169
+
1170
+ # -------------------------------------------------------------------
1171
+
1172
+ # 3. rewrite pcp.conf
1173
+ echo -n "- rewrite pcp.conf ... "
1174
+ if [ "$PG_ADMIN_USER_PASSWD" = "" ]; then
1175
+ echo "Skipped."
1176
+ else
1177
+ MD5_PASSWD=`$PGPOOL_BIN_DIR/pg_md5 $PG_ADMIN_USER_PASSWD`
1178
+ echo "${PG_ADMIN_USER}:${MD5_PASSWD}" >> editted/pcp.conf
1179
+
1180
+ cp editted/pcp.conf $PGPOOL_CONF_DIR
1181
+ if [ $? -ne 0 ]; then
1182
+ echo "Failed."
1183
+ echo " Please put pgpool.conf in the current directory to $PGPOOL_CONF_DIR manually. Continuing anyway."
1184
+ else
1185
+ echo "OK."
1186
+ fi
1187
+ fi
1188
+
1189
+ # -------------------------------------------------------------------
1190
+
1191
+ # 4. setuid for watchdog
1192
+ echo -n "- setup watchdog ... "
1193
+ if [ $USE_WATCHDOG -eq 1 ]; then
1194
+ copySbin
1195
+ echo "OK."
1196
+ else
1197
+ echo "Skipped."
1198
+ fi
1199
+
1200
+ # -------------------------------------------------------------------
1201
+ # [3-3] Setup pgpoolAdmin
1202
+ # -------------------------------------------------------------------
1203
+
1204
+ echo
1205
+ echo "* Setup pgpoolAdmin"
1206
+
1207
+ # 1. put conf file
1208
+ echo -n "- rewrite pgmgt.conf.php ... "
1209
+ cp editted/pgmgt.conf.php $ADMIN_DIR/conf/
1210
+ if [ $? -ne 0 ]; then
1211
+ echo "Failed."
1212
+ echo " Please put pgmgt.conf.php in the current directory to $ADMIN_DIR/conf manually. Continuing anyway."
1213
+ else
1214
+ echo "OK."
1215
+ chmod 666 $ADMIN_DIR/conf/pgmgt.conf.php
1216
+ fi
1217
+
1218
+ # -------------------------------------------------------------------
1219
+
1220
+ # 2. create log directories
1221
+ echo "- create log directries ... OK."
1222
+ if [ ! -d $PID_FILE_DIR ]; then
1223
+ mkdir $PID_FILE_DIR
1224
+ fi
1225
+ if [ ! -d $PGPOOL_LOG_DIR ]; then
1226
+ mkdir $PGPOOL_LOG_DIR
1227
+ fi
1228
+
1229
+ # -------------------------------------------------------------------
1230
+
1231
+ # 3. set permission
1232
+ chownToApache $PID_FILE_DIR
1233
+ chownToApache $PGPOOL_LOG_DIR
1234
+ chmod 777 $PGPOOL_LOG_DIR
1235
+ chmod 777 $ADMIN_DIR/templates_c/
1236
+
1237
+ # -------------------------------------------------------------------
1238
+ # [4-1] initdb and put config files
1239
+ # -------------------------------------------------------------------
1240
+
1241
+ INITDB_OK=0
1242
+ if [ $NODE_NO -eq 0 ]; then
1243
+ echo
1244
+ echo "* Create node 0 (localhost) 's database cluster"
1245
+ echo
1246
+
1247
+ echo -n "- initdb ... "
1248
+
1249
+ # 1. stop existing PostgreSQL
1250
+ chown $PG_SUPER_USER $PGHOME
1251
+ su - $PG_SUPER_USER -c "$PGHOME/bin/pg_ctl -D $PGDATA stop -m immediate" > /dev/null 2>&1
1252
+ rm -rf $PGDATA
1253
+ mkdir $PGDATA
1254
+ chown $PG_SUPER_USER:$PG_SUPER_USER $PGDATA
1255
+
1256
+ # -------------------------------------------------------------------
1257
+
1258
+ # 2. initdb
1259
+ su - $PG_SUPER_USER -c "$PGHOME/bin/initdb -D $PGDATA $INITDB_OPTION" > /dev/null 2>&1
1260
+
1261
+ if [ $? -ne 0 ]; then
1262
+ echo "Failed."
1263
+ echo " Please initdb manually like \"$PGHOME/bin/initdb -D $PGDATA $INITDB_OPTION\"".
1264
+
1265
+ # -------------------------------------------------------------------
1266
+
1267
+ else
1268
+ echo "OK."
1269
+ INITDB_OK=1
1270
+
1271
+ # 3. put conf files
1272
+ echo "- rewrite postgresql.conf and pcp.conf ... OK."
1273
+ cp editted/postgresql.conf $PGDATA
1274
+ cp editted/pg_hba.conf $PGDATA
1275
+
1276
+ # -------------------------------------------------------------------
1277
+
1278
+ # 4. setup online recovery
1279
+ echo "- put scripts for online recovery ... OK."
1280
+ cp editted/basebackup*.sh $PGDATA
1281
+ cp templates/pgpool_remote_start $PGDATA
1282
+ chmod 755 $PGDATA/*.sh $PGDATA/pgpool_remote_start
1283
+ chown $PG_SUPER_USER:$PG_SUPER_USER $PGDATA/*
1284
+
1285
+ if [ $MODE = "stream" ]; then
1286
+ cp editted/recovery.conf $PGDATA/recovery.done
1287
+ else
1288
+ cp editted/pgpool_recovery_pitr $PGDATA
1289
+ chmod 755 $PGDATA/pgpool_recovery_pitr
1290
+ fi
1291
+ fi
1292
+ fi
1293
+
1294
+ # -------------------------------------------------------------------
1295
+ # [4-2] Setup database
1296
+ # -------------------------------------------------------------------
1297
+
1298
+ echo
1299
+ echo "* Setup database"
1300
+
1301
+ # 1. setup failover
1302
+ echo "- put scripts for failover ... OK."
1303
+ cp editted/config_for_script $PGPOOL_CONF_DIR
1304
+ if [ $MODE = "stream" ]; then
1305
+ cp templates/failover*.sh $PGPOOL_CONF_DIR
1306
+ chmod 755 $PGPOOL_CONF_DIR/failover.sh
1307
+ fi
1308
+
1309
+ # -------------------------------------------------------------------
1310
+
1311
+ # 2. set permissions to conf files
1312
+ chownToApache "$PGPOOL_CONF_DIR/*.conf"
1313
+ chownToApache $PGPOOL_CONF_DIR
1314
+ chmod 444 $PGPOOL_CONF_DIR/config_for_script
1315
+ chmod 600 $PGPOOL_CONF_DIR/*.conf
1316
+ chmod 755 $PGPOOL_CONF_DIR
1317
+
1318
+
1319
+ # -------------------------------------------------------------------
1320
+
1321
+ # 3. setup WAL archiving
1322
+ echo "- create archive directory ... OK."
1323
+ mkdir -p $ARCHIVE_DIR
1324
+ chown $PG_SUPER_USER:$PG_SUPER_USER $ARCHIVE_DIR
1325
+
1326
+ if [ $INITDB_OK -eq 1 ]; then
1327
+ doQueries
1328
+ fi
1329
+
1330
+ # -------------------------------------------------------------------
1331
+ # [4-3] Cleaning
1332
+ # -------------------------------------------------------------------
1333
+
1334
+ if [ $NODE_NO -eq 1 ]; then
1335
+ echo
1336
+ echo "* Cleaning"
1337
+ echo "Remove configuration information on node 0."
1338
+ su $PG_SUPER_USER -c "ssh $PG_SUPER_USER@$DEST_HOST rm -rf $TEMP_CONF"
1339
+ fi
1340
+
1341
+ # -------------------------------------------------------------------
1342
+
1343
+ echo
1344
+ echo "----------------------------------------------------------------------"
1345
+ echo
1346
+ echo "Completed!"
1347
+ echo
1348
+ echo " * See pgpoolAdmin."
1349
+ echo " http://$THIS_HOST/pgpoolAdmin/"
1350
+ echo
1351
+ if [ $NODE_NO -eq 0 ]; then
1352
+ echo " * Start PostgreSQL by the user $PG_SUPER_USER"
1353
+ echo " ex.) $PGHOME/bin/pg_ctl start -D $PGDATA"
1354
+ echo
1355
+ echo " * Start pgppool from pgpoolAdmin"
1356
+ echo
1357
+ echo " * Install pgpool-II to $NODE1_HOST using install.sh"
1358
+ echo
1359
+ else
1360
+ echo " * Do online recovery of node 1 from pgpoolAdmin"
1361
+ fi
1362
+
1363
+ exit 0