prestogres 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +20 -0
- data/LICENSE +202 -0
- data/NOTICE +22 -0
- data/README.md +217 -0
- data/Rakefile +13 -0
- data/VERSION +1 -0
- data/bin/prestogres +254 -0
- data/config/pcp.conf.sample +28 -0
- data/config/pgpool.conf +678 -0
- data/config/pool_hba.conf +84 -0
- data/config/pool_passwd +0 -0
- data/config/postgresql.conf +2 -0
- data/ext/.gitignore +6 -0
- data/ext/depend +26 -0
- data/ext/extconf.rb +4 -0
- data/ext/prestogres_config.c +12 -0
- data/pgpool2/.gitignore +36 -0
- data/pgpool2/AUTHORS +4 -0
- data/pgpool2/COPYING +12 -0
- data/pgpool2/ChangeLog +1 -0
- data/pgpool2/INSTALL +1 -0
- data/pgpool2/Makefile.am +159 -0
- data/pgpool2/Makefile.in +1187 -0
- data/pgpool2/NEWS +4960 -0
- data/pgpool2/README +1 -0
- data/pgpool2/README.euc_jp +1 -0
- data/pgpool2/README.online-recovery +62 -0
- data/pgpool2/TODO +103 -0
- data/pgpool2/ac_func_accept_argtypes.m4 +85 -0
- data/pgpool2/aclocal.m4 +1088 -0
- data/pgpool2/c-compiler.m4 +134 -0
- data/pgpool2/c-library.m4 +325 -0
- data/pgpool2/child.c +2097 -0
- data/pgpool2/config.guess +1532 -0
- data/pgpool2/config.h.in +332 -0
- data/pgpool2/config.sub +1640 -0
- data/pgpool2/configure +15752 -0
- data/pgpool2/configure.in +392 -0
- data/pgpool2/depcomp +522 -0
- data/pgpool2/doc/basebackup.sh +17 -0
- data/pgpool2/doc/pgpool-de.html +4220 -0
- data/pgpool2/doc/pgpool-en.html +5738 -0
- data/pgpool2/doc/pgpool-fr.html +4118 -0
- data/pgpool2/doc/pgpool-ja.css +198 -0
- data/pgpool2/doc/pgpool-ja.html +11279 -0
- data/pgpool2/doc/pgpool-zh_cn.html +4445 -0
- data/pgpool2/doc/pgpool.css +280 -0
- data/pgpool2/doc/pgpool_remote_start +13 -0
- data/pgpool2/doc/recovery.conf.sample +117 -0
- data/pgpool2/doc/tutorial-en.html +707 -0
- data/pgpool2/doc/tutorial-ja.html +422 -0
- data/pgpool2/doc/tutorial-memqcache-en.html +325 -0
- data/pgpool2/doc/tutorial-memqcache-ja.html +370 -0
- data/pgpool2/doc/tutorial-memqcache-zh_cn.html +322 -0
- data/pgpool2/doc/tutorial-watchdog-en.html +306 -0
- data/pgpool2/doc/tutorial-watchdog-ja.html +343 -0
- data/pgpool2/doc/tutorial-watchdog-zh_cn.html +301 -0
- data/pgpool2/doc/tutorial-zh_cn.html +537 -0
- data/pgpool2/doc/watchdog.png +0 -0
- data/pgpool2/doc/wd-en.html +236 -0
- data/pgpool2/doc/wd-en.jpg +0 -0
- data/pgpool2/doc/wd-ja.html +219 -0
- data/pgpool2/doc/wd-ja.jpg +0 -0
- data/pgpool2/doc/wd-zh_cn.html +201 -0
- data/pgpool2/doc/where_to_send_queries.odg +0 -0
- data/pgpool2/doc/where_to_send_queries.pdf +0 -0
- data/pgpool2/general.m4 +166 -0
- data/pgpool2/getopt_long.c +200 -0
- data/pgpool2/getopt_long.h +44 -0
- data/pgpool2/install-sh +251 -0
- data/pgpool2/ltmain.sh +8406 -0
- data/pgpool2/m4/libtool.m4 +7360 -0
- data/pgpool2/m4/ltoptions.m4 +368 -0
- data/pgpool2/m4/ltsugar.m4 +123 -0
- data/pgpool2/m4/ltversion.m4 +23 -0
- data/pgpool2/m4/lt~obsolete.m4 +92 -0
- data/pgpool2/main.c +2971 -0
- data/pgpool2/md5.c +444 -0
- data/pgpool2/md5.h +28 -0
- data/pgpool2/missing +360 -0
- data/pgpool2/mkinstalldirs +40 -0
- data/pgpool2/parser/Makefile.am +50 -0
- data/pgpool2/parser/Makefile.in +559 -0
- data/pgpool2/parser/copyfuncs.c +3310 -0
- data/pgpool2/parser/gram.c +39100 -0
- data/pgpool2/parser/gram.h +940 -0
- data/pgpool2/parser/gram.y +13408 -0
- data/pgpool2/parser/gramparse.h +74 -0
- data/pgpool2/parser/keywords.c +32 -0
- data/pgpool2/parser/keywords.h +39 -0
- data/pgpool2/parser/kwlist.h +425 -0
- data/pgpool2/parser/kwlookup.c +88 -0
- data/pgpool2/parser/list.c +1156 -0
- data/pgpool2/parser/makefuncs.c +518 -0
- data/pgpool2/parser/makefuncs.h +83 -0
- data/pgpool2/parser/memnodes.h +79 -0
- data/pgpool2/parser/nodes.c +29 -0
- data/pgpool2/parser/nodes.h +609 -0
- data/pgpool2/parser/outfuncs.c +5790 -0
- data/pgpool2/parser/parsenodes.h +2615 -0
- data/pgpool2/parser/parser.c +262 -0
- data/pgpool2/parser/parser.h +46 -0
- data/pgpool2/parser/pg_class.h +158 -0
- data/pgpool2/parser/pg_config_manual.h +273 -0
- data/pgpool2/parser/pg_list.h +352 -0
- data/pgpool2/parser/pg_trigger.h +147 -0
- data/pgpool2/parser/pg_wchar.h +492 -0
- data/pgpool2/parser/pool_memory.c +342 -0
- data/pgpool2/parser/pool_memory.h +77 -0
- data/pgpool2/parser/pool_parser.h +222 -0
- data/pgpool2/parser/pool_string.c +121 -0
- data/pgpool2/parser/pool_string.h +37 -0
- data/pgpool2/parser/primnodes.h +1280 -0
- data/pgpool2/parser/scan.c +4094 -0
- data/pgpool2/parser/scan.l +1451 -0
- data/pgpool2/parser/scanner.h +120 -0
- data/pgpool2/parser/scansup.c +221 -0
- data/pgpool2/parser/scansup.h +28 -0
- data/pgpool2/parser/snprintf.c +1102 -0
- data/pgpool2/parser/stringinfo.c +294 -0
- data/pgpool2/parser/stringinfo.h +178 -0
- data/pgpool2/parser/value.c +78 -0
- data/pgpool2/parser/value.h +62 -0
- data/pgpool2/parser/wchar.c +2048 -0
- data/pgpool2/pcp.conf.sample +28 -0
- data/pgpool2/pcp/Makefile.am +40 -0
- data/pgpool2/pcp/Makefile.in +771 -0
- data/pgpool2/pcp/libpcp_ext.h +250 -0
- data/pgpool2/pcp/md5.c +444 -0
- data/pgpool2/pcp/md5.h +28 -0
- data/pgpool2/pcp/pcp.c +1652 -0
- data/pgpool2/pcp/pcp.h +61 -0
- data/pgpool2/pcp/pcp_attach_node.c +172 -0
- data/pgpool2/pcp/pcp_detach_node.c +185 -0
- data/pgpool2/pcp/pcp_error.c +87 -0
- data/pgpool2/pcp/pcp_node_count.c +160 -0
- data/pgpool2/pcp/pcp_node_info.c +198 -0
- data/pgpool2/pcp/pcp_pool_status.c +166 -0
- data/pgpool2/pcp/pcp_proc_count.c +166 -0
- data/pgpool2/pcp/pcp_proc_info.c +261 -0
- data/pgpool2/pcp/pcp_promote_node.c +185 -0
- data/pgpool2/pcp/pcp_recovery_node.c +172 -0
- data/pgpool2/pcp/pcp_stop_pgpool.c +179 -0
- data/pgpool2/pcp/pcp_stream.c +385 -0
- data/pgpool2/pcp/pcp_stream.h +52 -0
- data/pgpool2/pcp/pcp_systemdb_info.c +194 -0
- data/pgpool2/pcp/pcp_watchdog_info.c +211 -0
- data/pgpool2/pcp_child.c +1493 -0
- data/pgpool2/pg_md5.c +305 -0
- data/pgpool2/pgpool.8.in +121 -0
- data/pgpool2/pgpool.conf +553 -0
- data/pgpool2/pgpool.conf.sample +666 -0
- data/pgpool2/pgpool.conf.sample-master-slave +665 -0
- data/pgpool2/pgpool.conf.sample-replication +664 -0
- data/pgpool2/pgpool.conf.sample-stream +664 -0
- data/pgpool2/pgpool.spec +264 -0
- data/pgpool2/pgpool_adm/TODO +7 -0
- data/pgpool2/pgpool_adm/pgpool_adm--1.0.sql +85 -0
- data/pgpool2/pgpool_adm/pgpool_adm.c +558 -0
- data/pgpool2/pgpool_adm/pgpool_adm.control +5 -0
- data/pgpool2/pgpool_adm/pgpool_adm.h +46 -0
- data/pgpool2/pgpool_adm/pgpool_adm.sql.in +85 -0
- data/pgpool2/pool.h +655 -0
- data/pgpool2/pool_auth.c +1390 -0
- data/pgpool2/pool_config.c +5007 -0
- data/pgpool2/pool_config.h +284 -0
- data/pgpool2/pool_config.l +3281 -0
- data/pgpool2/pool_config_md5.c +29 -0
- data/pgpool2/pool_connection_pool.c +812 -0
- data/pgpool2/pool_error.c +242 -0
- data/pgpool2/pool_globals.c +27 -0
- data/pgpool2/pool_hba.c +1723 -0
- data/pgpool2/pool_hba.conf.sample +67 -0
- data/pgpool2/pool_ip.c +567 -0
- data/pgpool2/pool_ip.h +65 -0
- data/pgpool2/pool_ipc.h +38 -0
- data/pgpool2/pool_lobj.c +242 -0
- data/pgpool2/pool_lobj.h +32 -0
- data/pgpool2/pool_memqcache.c +3818 -0
- data/pgpool2/pool_memqcache.h +268 -0
- data/pgpool2/pool_params.c +163 -0
- data/pgpool2/pool_passwd.c +249 -0
- data/pgpool2/pool_passwd.h +41 -0
- data/pgpool2/pool_path.c +193 -0
- data/pgpool2/pool_path.h +81 -0
- data/pgpool2/pool_process_context.c +247 -0
- data/pgpool2/pool_process_context.h +62 -0
- data/pgpool2/pool_process_query.c +5001 -0
- data/pgpool2/pool_process_reporting.c +1671 -0
- data/pgpool2/pool_process_reporting.h +44 -0
- data/pgpool2/pool_proto2.c +671 -0
- data/pgpool2/pool_proto_modules.c +3524 -0
- data/pgpool2/pool_proto_modules.h +185 -0
- data/pgpool2/pool_query_cache.c +1020 -0
- data/pgpool2/pool_query_context.c +1871 -0
- data/pgpool2/pool_query_context.h +105 -0
- data/pgpool2/pool_relcache.c +284 -0
- data/pgpool2/pool_relcache.h +78 -0
- data/pgpool2/pool_rewrite_outfuncs.c +9060 -0
- data/pgpool2/pool_rewrite_query.c +715 -0
- data/pgpool2/pool_rewrite_query.h +192 -0
- data/pgpool2/pool_select_walker.c +1150 -0
- data/pgpool2/pool_select_walker.h +68 -0
- data/pgpool2/pool_sema.c +161 -0
- data/pgpool2/pool_session_context.c +952 -0
- data/pgpool2/pool_session_context.h +203 -0
- data/pgpool2/pool_shmem.c +185 -0
- data/pgpool2/pool_signal.c +158 -0
- data/pgpool2/pool_signal.h +61 -0
- data/pgpool2/pool_ssl.c +339 -0
- data/pgpool2/pool_stream.c +962 -0
- data/pgpool2/pool_stream.h +61 -0
- data/pgpool2/pool_system.c +659 -0
- data/pgpool2/pool_timestamp.c +1215 -0
- data/pgpool2/pool_timestamp.h +38 -0
- data/pgpool2/pool_type.h +171 -0
- data/pgpool2/pool_worker_child.c +384 -0
- data/pgpool2/ps_status.c +404 -0
- data/pgpool2/recovery.c +435 -0
- data/pgpool2/redhat/pgpool.conf.sample.patch +52 -0
- data/pgpool2/redhat/pgpool.init +201 -0
- data/pgpool2/redhat/pgpool.sysconfig +7 -0
- data/pgpool2/redhat/rpm_installer/basebackup-replication.sh +53 -0
- data/pgpool2/redhat/rpm_installer/basebackup-stream.sh +55 -0
- data/pgpool2/redhat/rpm_installer/config_for_script +17 -0
- data/pgpool2/redhat/rpm_installer/failover.sh +64 -0
- data/pgpool2/redhat/rpm_installer/getsources.sh +141 -0
- data/pgpool2/redhat/rpm_installer/install.sh +1363 -0
- data/pgpool2/redhat/rpm_installer/pgpool_recovery_pitr +47 -0
- data/pgpool2/redhat/rpm_installer/pgpool_remote_start +15 -0
- data/pgpool2/redhat/rpm_installer/recovery.conf +4 -0
- data/pgpool2/redhat/rpm_installer/uninstall.sh +57 -0
- data/pgpool2/sample/dist_def_pgbench.sql +73 -0
- data/pgpool2/sample/pgpool.pam +3 -0
- data/pgpool2/sample/pgpool_recovery +20 -0
- data/pgpool2/sample/pgpool_recovery_pitr +19 -0
- data/pgpool2/sample/pgpool_remote_start +13 -0
- data/pgpool2/sample/replicate_def_pgbench.sql +18 -0
- data/pgpool2/sql/insert_lock.sql +15 -0
- data/pgpool2/sql/pgpool-recovery/pgpool-recovery.c +280 -0
- data/pgpool2/sql/pgpool-recovery/pgpool-recovery.sql.in +19 -0
- data/pgpool2/sql/pgpool-recovery/pgpool_recovery--1.0.sql +24 -0
- data/pgpool2/sql/pgpool-recovery/pgpool_recovery.control +5 -0
- data/pgpool2/sql/pgpool-recovery/uninstall_pgpool-recovery.sql +3 -0
- data/pgpool2/sql/pgpool-regclass/pgpool-regclass.c +206 -0
- data/pgpool2/sql/pgpool-regclass/pgpool-regclass.sql.in +4 -0
- data/pgpool2/sql/pgpool-regclass/pgpool_regclass--1.0.sql +7 -0
- data/pgpool2/sql/pgpool-regclass/pgpool_regclass.control +5 -0
- data/pgpool2/sql/pgpool-regclass/uninstall_pgpool-regclass.sql +1 -0
- data/pgpool2/sql/system_db.sql +38 -0
- data/pgpool2/strlcpy.c +85 -0
- data/pgpool2/test/C/test_extended.c +98 -0
- data/pgpool2/test/jdbc/.cvsignore +2 -0
- data/pgpool2/test/jdbc/AutoCommitTest.java +45 -0
- data/pgpool2/test/jdbc/BatchTest.java +55 -0
- data/pgpool2/test/jdbc/ColumnTest.java +60 -0
- data/pgpool2/test/jdbc/CreateTempTableTest.java +48 -0
- data/pgpool2/test/jdbc/InsertTest.java +34 -0
- data/pgpool2/test/jdbc/LockTest.java +36 -0
- data/pgpool2/test/jdbc/PgpoolTest.java +75 -0
- data/pgpool2/test/jdbc/README.euc_jp +73 -0
- data/pgpool2/test/jdbc/RunTest.java +83 -0
- data/pgpool2/test/jdbc/SelectTest.java +37 -0
- data/pgpool2/test/jdbc/UpdateTest.java +32 -0
- data/pgpool2/test/jdbc/expected/CreateTempTable +1 -0
- data/pgpool2/test/jdbc/expected/autocommit +10 -0
- data/pgpool2/test/jdbc/expected/batch +1 -0
- data/pgpool2/test/jdbc/expected/column +100 -0
- data/pgpool2/test/jdbc/expected/insert +1 -0
- data/pgpool2/test/jdbc/expected/lock +100 -0
- data/pgpool2/test/jdbc/expected/select +2 -0
- data/pgpool2/test/jdbc/expected/update +1 -0
- data/pgpool2/test/jdbc/pgpool.properties +7 -0
- data/pgpool2/test/jdbc/prepare.sql +54 -0
- data/pgpool2/test/jdbc/run.sh +6 -0
- data/pgpool2/test/parser/.cvsignore +6 -0
- data/pgpool2/test/parser/README +32 -0
- data/pgpool2/test/parser/expected/copy.out +17 -0
- data/pgpool2/test/parser/expected/create.out +64 -0
- data/pgpool2/test/parser/expected/cursor.out +37 -0
- data/pgpool2/test/parser/expected/delete.out +10 -0
- data/pgpool2/test/parser/expected/drop.out +12 -0
- data/pgpool2/test/parser/expected/insert.out +13 -0
- data/pgpool2/test/parser/expected/misc.out +28 -0
- data/pgpool2/test/parser/expected/prepare.out +4 -0
- data/pgpool2/test/parser/expected/privileges.out +31 -0
- data/pgpool2/test/parser/expected/scanner.out +30 -0
- data/pgpool2/test/parser/expected/select.out +89 -0
- data/pgpool2/test/parser/expected/transaction.out +38 -0
- data/pgpool2/test/parser/expected/update.out +11 -0
- data/pgpool2/test/parser/expected/v84.out +37 -0
- data/pgpool2/test/parser/expected/v90.out +25 -0
- data/pgpool2/test/parser/expected/var.out +22 -0
- data/pgpool2/test/parser/input/alter.sql +2 -0
- data/pgpool2/test/parser/input/copy.sql +17 -0
- data/pgpool2/test/parser/input/create.sql +64 -0
- data/pgpool2/test/parser/input/cursor.sql +37 -0
- data/pgpool2/test/parser/input/delete.sql +10 -0
- data/pgpool2/test/parser/input/drop.sql +12 -0
- data/pgpool2/test/parser/input/insert.sql +13 -0
- data/pgpool2/test/parser/input/misc.sql +28 -0
- data/pgpool2/test/parser/input/prepare.sql +4 -0
- data/pgpool2/test/parser/input/privileges.sql +31 -0
- data/pgpool2/test/parser/input/scanner.sql +34 -0
- data/pgpool2/test/parser/input/select.sql +89 -0
- data/pgpool2/test/parser/input/transaction.sql +38 -0
- data/pgpool2/test/parser/input/update.sql +11 -0
- data/pgpool2/test/parser/input/v84.sql +37 -0
- data/pgpool2/test/parser/input/v90.sql +38 -0
- data/pgpool2/test/parser/input/var.sql +22 -0
- data/pgpool2/test/parser/main.c +96 -0
- data/pgpool2/test/parser/parse_schedule +16 -0
- data/pgpool2/test/parser/pool.h +13 -0
- data/pgpool2/test/parser/run-test +62 -0
- data/pgpool2/test/pdo-test/README.euc_jp +58 -0
- data/pgpool2/test/pdo-test/SQLlist/test1.sql +3 -0
- data/pgpool2/test/pdo-test/SQLlist/test2.sql +3 -0
- data/pgpool2/test/pdo-test/collections.inc +11 -0
- data/pgpool2/test/pdo-test/def.inc +7 -0
- data/pgpool2/test/pdo-test/log.txt +0 -0
- data/pgpool2/test/pdo-test/mod/database.inc +36 -0
- data/pgpool2/test/pdo-test/mod/def.inc +0 -0
- data/pgpool2/test/pdo-test/mod/errorhandler.inc +27 -0
- data/pgpool2/test/pdo-test/pdotest.php +11 -0
- data/pgpool2/test/pdo-test/regsql.inc +56 -0
- data/pgpool2/test/pgpool_setup +898 -0
- data/pgpool2/test/regression/README +39 -0
- data/pgpool2/test/regression/clean.sh +21 -0
- data/pgpool2/test/regression/libs.sh +16 -0
- data/pgpool2/test/regression/regress.sh +166 -0
- data/pgpool2/test/regression/tests/001.load_balance/test.sh +128 -0
- data/pgpool2/test/regression/tests/002.native_replication/PgTester.java +47 -0
- data/pgpool2/test/regression/tests/002.native_replication/create.sql +6 -0
- data/pgpool2/test/regression/tests/002.native_replication/test.sh +71 -0
- data/pgpool2/test/regression/tests/003.failover/expected.r +6 -0
- data/pgpool2/test/regression/tests/003.failover/expected.s +6 -0
- data/pgpool2/test/regression/tests/003.failover/test.sh +45 -0
- data/pgpool2/test/regression/tests/004.watchdog/master.conf +12 -0
- data/pgpool2/test/regression/tests/004.watchdog/standby.conf +19 -0
- data/pgpool2/test/regression/tests/004.watchdog/test.sh +52 -0
- data/pgpool2/test/regression/tests/050.bug58/test.sh +50 -0
- data/pgpool2/test/regression/tests/051.bug60/bug.sql +12 -0
- data/pgpool2/test/regression/tests/051.bug60/database-clean.sql +6 -0
- data/pgpool2/test/regression/tests/051.bug60/database-setup.sql +28 -0
- data/pgpool2/test/regression/tests/051.bug60/test.sh +79 -0
- data/pgpool2/test/regression/tests/052.do_query/test.sh +44 -0
- data/pgpool2/test/regression/tests/053.insert_lock_hangs/test.sh +81 -0
- data/pgpool2/test/regression/tests/054.postgres_fdw/test.sh +67 -0
- data/pgpool2/test/regression/tests/055.backend_all_down/test.sh +52 -0
- data/pgpool2/test/regression/tests/056.bug63/jdbctest2.java +66 -0
- data/pgpool2/test/regression/tests/056.bug63/test.sh +47 -0
- data/pgpool2/test/regression/tests/057.bug61/test.sh +40 -0
- data/pgpool2/test/regression/tests/058.bug68/jdbctest3.java +45 -0
- data/pgpool2/test/regression/tests/058.bug68/test.sh +47 -0
- data/pgpool2/test/timestamp/expected/insert.out +16 -0
- data/pgpool2/test/timestamp/expected/misc.out +3 -0
- data/pgpool2/test/timestamp/expected/update.out +6 -0
- data/pgpool2/test/timestamp/input/insert.sql +16 -0
- data/pgpool2/test/timestamp/input/misc.sql +3 -0
- data/pgpool2/test/timestamp/input/update.sql +6 -0
- data/pgpool2/test/timestamp/main.c +129 -0
- data/pgpool2/test/timestamp/parse_schedule +3 -0
- data/pgpool2/test/timestamp/run-test +69 -0
- data/pgpool2/version.h +1 -0
- data/pgpool2/watchdog/Makefile.am +17 -0
- data/pgpool2/watchdog/Makefile.in +505 -0
- data/pgpool2/watchdog/test/stab.c +266 -0
- data/pgpool2/watchdog/test/test.c +85 -0
- data/pgpool2/watchdog/test/wd_child_t.c +87 -0
- data/pgpool2/watchdog/test/wd_lifecheck_t.c +87 -0
- data/pgpool2/watchdog/test/wd_packet_t.c +87 -0
- data/pgpool2/watchdog/test/wd_ping_t.c +20 -0
- data/pgpool2/watchdog/watchdog.c +408 -0
- data/pgpool2/watchdog/watchdog.h +209 -0
- data/pgpool2/watchdog/wd_child.c +444 -0
- data/pgpool2/watchdog/wd_ext.h +123 -0
- data/pgpool2/watchdog/wd_heartbeat.c +577 -0
- data/pgpool2/watchdog/wd_if.c +216 -0
- data/pgpool2/watchdog/wd_init.c +126 -0
- data/pgpool2/watchdog/wd_interlock.c +347 -0
- data/pgpool2/watchdog/wd_lifecheck.c +512 -0
- data/pgpool2/watchdog/wd_list.c +429 -0
- data/pgpool2/watchdog/wd_packet.c +1159 -0
- data/pgpool2/watchdog/wd_ping.c +330 -0
- data/pgpool2/ylwrap +223 -0
- data/pgsql/presto_client.py +346 -0
- data/pgsql/prestogres.py +156 -0
- data/pgsql/setup_functions.sql +21 -0
- data/pgsql/setup_language.sql +3 -0
- data/prestogres.gemspec +23 -0
- 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
|