From 6e5bf2e0f225726d72d221914596834937458cf5 Mon Sep 17 00:00:00 2001 From: miker Date: Sun, 3 Sep 2006 07:35:03 +0000 Subject: [PATCH] replication and load balancing srcripts git-svn-id: svn://svn.open-ils.org/ILS/trunk@5886 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../extras/import/sparkle.replicate.slonik | 191 ++++++++++++++++++ .../import/sparkle.subscribe-fw2.slonik | 31 +++ .../import/sparkle.subscribe-fw5.slonik | 30 +++ Evergreen/src/extras/import/start_pgpool | 2 + Evergreen/src/extras/import/start_slon | 2 + 5 files changed, 256 insertions(+) create mode 100644 Evergreen/src/extras/import/sparkle.replicate.slonik create mode 100644 Evergreen/src/extras/import/sparkle.subscribe-fw2.slonik create mode 100644 Evergreen/src/extras/import/sparkle.subscribe-fw5.slonik create mode 100755 Evergreen/src/extras/import/start_pgpool create mode 100755 Evergreen/src/extras/import/start_slon diff --git a/Evergreen/src/extras/import/sparkle.replicate.slonik b/Evergreen/src/extras/import/sparkle.replicate.slonik new file mode 100644 index 0000000000..152c864e74 --- /dev/null +++ b/Evergreen/src/extras/import/sparkle.replicate.slonik @@ -0,0 +1,191 @@ +#!/bin/sh + +CLUSTER=prod_replica_set +DBNAME=sparkle +MASTERHOST=10.1.0.13 +SLAVEHOST=10.1.0.14 +STATSHOST=10.1.0.11 +PGUSER=postgres +BINDIR=/opt/pg814/bin + +$BINDIR/slonik <<_EOF_ + + #-- + # define the namespace the replication system uses in our example it is + # slony_example + #-- + + cluster name = $CLUSTER; + + #-- + # admin conninfo's are used by slonik to connect to the nodes one for each + # node on each side of the cluster, the syntax is that of PQconnectdb in + # the C-API + # -- + + node 1 admin conninfo = 'dbname=$DBNAME host=$MASTERHOST user=$PGUSER'; + node 2 admin conninfo = 'dbname=$DBNAME host=$SLAVEHOST user=$PGUSER'; + node 3 admin conninfo = 'dbname=$DBNAME host=$STATSHOST user=$PGUSER'; + + #-- + # init the first node. Its id MUST be 1. This creates the schema + # _$CLUSTERNAME containing all replication system specific database + # objects. + #-- + + init cluster ( id=1, comment = 'Master Node'); + + #-- + # Slony-I organizes tables into sets. The smallest unit a node can + # subscribe is a set. + #-- + + create set (id=1, origin=1, comment='All Open-ILS Tables'); + + set add table (set id=1, origin=1, id=1, fully qualified name = 'offline.script', comment = ''); + set add table (set id=1, origin=1, id=2, fully qualified name = 'offline.session', comment = ''); + + set add table (set id=1, origin=1, id=3, fully qualified name = 'config.bib_source', comment = ''); + set add table (set id=1, origin=1, id=4, fully qualified name = 'config.standing', comment = ''); + set add table (set id=1, origin=1, id=5, fully qualified name = 'config.metabib_field', comment = ''); + set add table (set id=1, origin=1, id=6, fully qualified name = 'config.non_cataloged_type', comment = ''); + set add table (set id=1, origin=1, id=7, fully qualified name = 'config.identification_type', comment = ''); + set add table (set id=1, origin=1, id=8, fully qualified name = 'config.rule_circ_duration', comment = ''); + set add table (set id=1, origin=1, id=9, fully qualified name = 'config.rule_max_fine', comment = ''); + set add table (set id=1, origin=1, id=10, fully qualified name = 'config.rule_recuring_fine', comment = ''); + set add table (set id=1, origin=1, id=11, fully qualified name = 'config.rule_age_hold_protect', comment = ''); + set add table (set id=1, origin=1, id=12, fully qualified name = 'config.copy_status', comment = ''); + set add table (set id=1, origin=1, id=13, fully qualified name = 'config.net_access_level', comment = ''); + set add table (set id=1, origin=1, id=14, fully qualified name = 'config.audience_map', comment = ''); + set add table (set id=1, origin=1, id=15, fully qualified name = 'config.lit_form_map', comment = ''); + set add table (set id=1, origin=1, id=16, fully qualified name = 'config.language_map', comment = ''); + set add table (set id=1, origin=1, id=17, fully qualified name = 'config.item_form_map', comment = ''); + set add table (set id=1, origin=1, id=18, fully qualified name = 'config.item_type_map', comment = ''); + + set add table (set id=1, origin=1, id=19, fully qualified name = 'actor.usr', comment = ''); + set add table (set id=1, origin=1, id=20, fully qualified name = 'actor.usr_note', comment = ''); + set add table (set id=1, origin=1, id=21, fully qualified name = 'actor.usr_standing_penalty', comment = ''); + set add table (set id=1, origin=1, id=22, fully qualified name = 'actor.usr_setting', comment = ''); + set add table (set id=1, origin=1, id=23, fully qualified name = 'actor.stat_cat', comment = ''); + set add table (set id=1, origin=1, id=24, fully qualified name = 'actor.stat_cat_entry', comment = ''); + set add table (set id=1, origin=1, id=25, fully qualified name = 'actor.stat_cat_entry_usr_map', comment = ''); + set add table (set id=1, origin=1, id=26, fully qualified name = 'actor.card', comment = ''); + set add table (set id=1, origin=1, id=34, fully qualified name = 'actor.usr_address', comment = ''); + + set add table (set id=1, origin=1, id=27, fully qualified name = 'actor.org_unit_type', comment = ''); + set add table (set id=1, origin=1, id=28, fully qualified name = 'actor.org_unit', comment = ''); + set add table (set id=1, origin=1, id=29, fully qualified name = 'actor.org_unit_proximity', comment = ''); + set add table (set id=1, origin=1, id=30, fully qualified name = 'actor.hours_of_operation', comment = ''); + set add table (set id=1, origin=1, id=31, fully qualified name = 'actor.org_unit_closed', comment = ''); + set add table (set id=1, origin=1, id=32, fully qualified name = 'actor.workstation', comment = ''); + set add table (set id=1, origin=1, id=33, fully qualified name = 'actor.org_unit_setting', comment = ''); + set add table (set id=1, origin=1, id=35, fully qualified name = 'actor.org_address', comment = ''); + + set add table (set id=1, origin=1, id=36, fully qualified name = 'permission.perm_list', comment = ''); + set add table (set id=1, origin=1, id=37, fully qualified name = 'permission.grp_tree', comment = ''); + set add table (set id=1, origin=1, id=38, fully qualified name = 'permission.grp_perm_map', comment = ''); + set add table (set id=1, origin=1, id=39, fully qualified name = 'permission.usr_perm_map', comment = ''); + set add table (set id=1, origin=1, id=40, fully qualified name = 'permission.usr_grp_map', comment = ''); + + set add table (set id=1, origin=1, id=41, fully qualified name = 'biblio.record_entry', comment = ''); + set add table (set id=1, origin=1, id=42, fully qualified name = 'biblio.record_note', comment = ''); + + set add table (set id=1, origin=1, id=43, fully qualified name = 'authority.record_entry', comment = ''); + set add table (set id=1, origin=1, id=44, fully qualified name = 'authority.record_note', comment = ''); + set add table (set id=1, origin=1, id=45, fully qualified name = 'authority.rec_descriptor', comment = ''); + set add table (set id=1, origin=1, id=46, fully qualified name = 'authority.full_rec', comment = ''); + + set add table (set id=1, origin=1, id=47, fully qualified name = 'metabib.metarecord', comment = ''); + set add table (set id=1, origin=1, id=48, fully qualified name = 'metabib.title_field_entry', comment = ''); + set add table (set id=1, origin=1, id=49, fully qualified name = 'metabib.author_field_entry', comment = ''); + set add table (set id=1, origin=1, id=50, fully qualified name = 'metabib.subject_field_entry', comment = ''); + set add table (set id=1, origin=1, id=51, fully qualified name = 'metabib.keyword_field_entry', comment = ''); + set add table (set id=1, origin=1, id=52, fully qualified name = 'metabib.series_field_entry', comment = ''); + set add table (set id=1, origin=1, id=53, fully qualified name = 'metabib.rec_descriptor', comment = ''); + set add table (set id=1, origin=1, id=54, fully qualified name = 'metabib.full_rec', comment = ''); + set add table (set id=1, origin=1, id=55, fully qualified name = 'metabib.metarecord_source_map', comment = ''); + + set add table (set id=1, origin=1, id=56, fully qualified name = 'asset.copy_location', comment = ''); + set add table (set id=1, origin=1, id=57, fully qualified name = 'asset.copy', comment = ''); + set add table (set id=1, origin=1, id=61, fully qualified name = 'asset.stat_cat', comment = ''); + set add table (set id=1, origin=1, id=62, fully qualified name = 'asset.stat_cat_entry', comment = ''); + set add table (set id=1, origin=1, id=63, fully qualified name = 'asset.stat_cat_entry_copy_map', comment = ''); + set add table (set id=1, origin=1, id=64, fully qualified name = 'asset.copy_note', comment = ''); + set add table (set id=1, origin=1, id=65, fully qualified name = 'asset.call_number', comment = ''); + set add table (set id=1, origin=1, id=66, fully qualified name = 'asset.call_number_note', comment = ''); + + set add table (set id=1, origin=1, id=67, fully qualified name = 'container.copy_bucket', comment = ''); + set add table (set id=1, origin=1, id=68, fully qualified name = 'container.copy_bucket_item', comment = ''); + set add table (set id=1, origin=1, id=69, fully qualified name = 'container.call_number_bucket', comment = ''); + set add table (set id=1, origin=1, id=70, fully qualified name = 'container.call_number_bucket_item', comment = ''); + set add table (set id=1, origin=1, id=71, fully qualified name = 'container.biblio_record_entry_bucket', comment = ''); + set add table (set id=1, origin=1, id=72, fully qualified name = 'container.biblio_record_entry_bucket_item', comment = ''); + set add table (set id=1, origin=1, id=73, fully qualified name = 'container.user_bucket', comment = ''); + set add table (set id=1, origin=1, id=74, fully qualified name = 'container.user_bucket_item', comment = ''); + + set add table (set id=1, origin=1, id=75, fully qualified name = 'money.collections_tracker', comment = ''); + set add table (set id=1, origin=1, id=76, fully qualified name = 'money.billable_xact', comment = ''); + set add table (set id=1, origin=1, id=77, fully qualified name = 'money.grocery', comment = ''); + set add table (set id=1, origin=1, id=78, fully qualified name = 'money.billing', comment = ''); + set add table (set id=1, origin=1, id=79, fully qualified name = 'money.payment', comment = ''); + set add table (set id=1, origin=1, id=80, fully qualified name = 'money.bnm_payment', comment = ''); + set add table (set id=1, origin=1, id=81, fully qualified name = 'money.forgive_payment', comment = ''); + set add table (set id=1, origin=1, id=82, fully qualified name = 'money.work_payment', comment = ''); + set add table (set id=1, origin=1, id=83, fully qualified name = 'money.credit_payment', comment = ''); + set add table (set id=1, origin=1, id=84, fully qualified name = 'money.bnm_desk_payment', comment = ''); + set add table (set id=1, origin=1, id=85, fully qualified name = 'money.cash_payment', comment = ''); + set add table (set id=1, origin=1, id=86, fully qualified name = 'money.check_payment', comment = ''); + set add table (set id=1, origin=1, id=87, fully qualified name = 'money.credit_card_payment', comment = ''); + + set add table (set id=1, origin=1, id=88, fully qualified name = 'action.in_house_use', comment = ''); + set add table (set id=1, origin=1, id=89, fully qualified name = 'action.non_cataloged_circulation', comment = ''); + set add table (set id=1, origin=1, id=90, fully qualified name = 'action.survey', comment = ''); + set add table (set id=1, origin=1, id=91, fully qualified name = 'action.survey_question', comment = ''); + set add table (set id=1, origin=1, id=92, fully qualified name = 'action.survey_answer', comment = ''); + set add table (set id=1, origin=1, id=93, fully qualified name = 'action.survey_response', comment = ''); + set add table (set id=1, origin=1, id=94, fully qualified name = 'action.circulation', comment = ''); + set add table (set id=1, origin=1, id=95, fully qualified name = 'action.hold_request', comment = ''); + set add table (set id=1, origin=1, id=96, fully qualified name = 'action.hold_notification', comment = ''); + set add table (set id=1, origin=1, id=97, fully qualified name = 'action.hold_copy_map', comment = ''); + set add table (set id=1, origin=1, id=98, fully qualified name = 'action.transit_copy', comment = ''); + set add table (set id=1, origin=1, id=99, fully qualified name = 'action.hold_transit_copy', comment = ''); + set add table (set id=1, origin=1, id=100, fully qualified name = 'action.unfulfilled_hold_list', comment = ''); + + #set add table (set id=1, origin=1, id=101, fully qualified name = 'auditor.actor_org_unit_history', comment = '', key = serial); + #set add table (set id=1, origin=1, id=102, fully qualified name = 'auditor.actor_usr_address_history', comment = '', key = serial); + #set add table (set id=1, origin=1, id=103, fully qualified name = 'auditor.actor_usr_history', comment = '', key = serial); + #set add table (set id=1, origin=1, id=104, fully qualified name = 'auditor.asset_call_number_history', comment = '', key = serial); + #set add table (set id=1, origin=1, id=105, fully qualified name = 'auditor.asset_copy_history', comment = '', key = serial); + #set add table (set id=1, origin=1, id=106, fully qualified name = 'auditor.biblio_record_entry_history', comment = '', key = serial); + + set add sequence (set id=1, origin=1, id=1, fully qualified name = 'action.survey_response_group_id_seq', comment = ''); + + # TSearch2 tables + set add table (set id=1, origin=1, id=107, fully qualified name = 'public.pg_ts_cfg', comment = ''); + set add table (set id=1, origin=1, id=108, fully qualified name = 'public.pg_ts_cfgmap', comment = ''); + set add table (set id=1, origin=1, id=109, fully qualified name = 'public.pg_ts_dict', comment = ''); + set add table (set id=1, origin=1, id=110, fully qualified name = 'public.pg_ts_parser', comment = ''); + + + store node (id=2, comment = 'Active Slave node'); + #store node (id=3, comment = 'Statistical Reporting node'); + + store path (server = 1, client = 2, conninfo='dbname=$DBNAME host=$MASTERHOST user=$PGUSER'); + #store path (server = 1, client = 3, conninfo='dbname=$DBNAME host=$MASTERHOST user=$PGUSER'); + + store path (server = 2, client = 1, conninfo='dbname=$DBNAME host=$SLAVEHOST user=$PGUSER'); + #store path (server = 2, client = 3, conninfo='dbname=$DBNAME host=$SLAVEHOST user=$PGUSER'); + + #store path (server = 3, client = 1, conninfo='dbname=$DBNAME host=$STATSHOST user=$PGUSER'); + #store path (server = 3, client = 2, conninfo='dbname=$DBNAME host=$STATSHOST user=$PGUSER'); + + store listen (origin=1, provider = 1, receiver =2); + store listen (origin=2, provider = 2, receiver =1); + + #store listen (origin=2, provider = 2, receiver =3); + #store listen (origin=3, provider = 3, receiver =2); + + #store listen (origin=1, provider = 1, receiver =3); + #store listen (origin=3, provider = 3, receiver =1); + +_EOF_ diff --git a/Evergreen/src/extras/import/sparkle.subscribe-fw2.slonik b/Evergreen/src/extras/import/sparkle.subscribe-fw2.slonik new file mode 100644 index 0000000000..e897faf17b --- /dev/null +++ b/Evergreen/src/extras/import/sparkle.subscribe-fw2.slonik @@ -0,0 +1,31 @@ +#!/bin/sh + +CLUSTER=prod_replica_set +DBNAME=sparkle +MASTERHOST=10.1.0.13 +SLAVEHOST=10.1.0.14 +STATSHOST=10.1.0.11 +PGUSER=postgres +BINDIR=/opt/pg814/bin + +$BINDIR/slonik <<_EOF_ + + #-- + # define the namespace the replication system uses in our example it is + # slony_example + #-- + + cluster name = $CLUSTER; + + #-- + # admin conninfo's are used by slonik to connect to the nodes one for each + # node on each side of the cluster, the syntax is that of PQconnectdb in + # the C-API + # -- + + node 1 admin conninfo = 'dbname=$DBNAME host=$MASTERHOST user=$PGUSER'; + node 2 admin conninfo = 'dbname=$DBNAME host=$SLAVEHOST user=$PGUSER'; + node 3 admin conninfo = 'dbname=$DBNAME host=$STATSHOST user=$PGUSER'; + + subscribe set ( id = 1, provider = 2, receiver = 3, forward = no); +_EOF_ diff --git a/Evergreen/src/extras/import/sparkle.subscribe-fw5.slonik b/Evergreen/src/extras/import/sparkle.subscribe-fw5.slonik new file mode 100644 index 0000000000..6bdf3b2d0d --- /dev/null +++ b/Evergreen/src/extras/import/sparkle.subscribe-fw5.slonik @@ -0,0 +1,30 @@ +#!/bin/sh + +CLUSTER=prod_replica_set +DBNAME=sparkle +MASTERHOST=10.1.0.13 +SLAVEHOST=10.1.0.14 +STATSHOST=10.1.0.11 +PGUSER=postgres +BINDIR=/opt/pg814/bin + +$BINDIR/slonik <<_EOF_ + + #-- + # define the namespace the replication system uses in our example it is + # slony_example + #-- + + cluster name = $CLUSTER; + + #-- + # admin conninfo's are used by slonik to connect to the nodes one for each + # node on each side of the cluster, the syntax is that of PQconnectdb in + # the C-API + # -- + + node 1 admin conninfo = 'dbname=$DBNAME host=$MASTERHOST user=$PGUSER'; + node 2 admin conninfo = 'dbname=$DBNAME host=$SLAVEHOST user=$PGUSER'; + + subscribe set ( id = 1, provider = 1, receiver = 2, forward = yes); +_EOF_ diff --git a/Evergreen/src/extras/import/start_pgpool b/Evergreen/src/extras/import/start_pgpool new file mode 100755 index 0000000000..b35faa2211 --- /dev/null +++ b/Evergreen/src/extras/import/start_pgpool @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/pg814/bin/pgpool -f /opt/pg814/etc/pgpool.conf -n 2>&1 | logger -t pgpool -p local0.info & diff --git a/Evergreen/src/extras/import/start_slon b/Evergreen/src/extras/import/start_slon new file mode 100755 index 0000000000..a09e0298c1 --- /dev/null +++ b/Evergreen/src/extras/import/start_slon @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/pg814/bin/slon prod_replica_set dbname=sparkle host=10.1.0.13 user=postgres 2>&1 | logger -t slon -p local3.info & -- 2.43.2