- #!/bin/bash
- # $Id$
- # Global defaults
- CLUSTER=${CLUSTER:-"LedgerSMB"}
- NUMNODES=${NUMNODES:-"2"}
- # Defaults - origin node
- DB1=${DB1:-${PGDATABASE:-"ledgersmb"}}
- HOST1=${HOST1:-`hostname`}
- USER1=${USER1:-${PGUSER:-"slony"}}
- PORT1=${PORT1:-${PGPORT:-"5432"}}
- # Defaults - node 2
- DB2=${DB2:-${PGDATABASE:-"ledgersmb"}}
- HOST2=${HOST2:-"backup.example.info"}
- USER2=${USER2:-${PGUSER:-"slony"}}
- PORT2=${PORT2:-${PGPORT:-"5432"}}
- # Defaults - node 3
- DB3=${DB3:-${PGDATABASE:-"ledgersmb"}}
- HOST3=${HOST3:-"backup3.example.info"}
- USER3=${USER3:-${PGUSER:-"slony"}}
- PORT3=${PORT3:-${PGPORT:-"5432"}}
- # Defaults - node 4
- DB4=${DB4:-${PGDATABASE:-"ledgersmb"}}
- HOST4=${HOST4:-"backup4.example.info"}
- USER4=${USER4:-${PGUSER:-"slony"}}
- PORT4=${PORT4:-${PGPORT:-"5432"}}
- # Defaults - node 5
- DB5=${DB5:-${PGDATABASE:-"ledgersmb"}}
- HOST5=${HOST5:-"backup5.example.info"}
- USER5=${USER5:-${PGUSER:-"slony"}}
- PORT5=${PORT5:-${PGPORT:-"5432"}}
- store_path()
- {
- echo "include <${PREAMBLE}>;" > $mktmp/store_paths.slonik
- i=1
- while : ; do
- eval db=\$DB${i}
- eval host=\$HOST${i}
- eval user=\$USER${i}
- eval port=\$PORT${i}
- if [ -n "${db}" -a "${host}" -a "${user}" -a "${port}" ]; then
- j=1
- while : ; do
- if [ ${i} -ne ${j} ]; then
- eval bdb=\$DB${j}
- eval bhost=\$HOST${j}
- eval buser=\$USER${j}
- eval bport=\$PORT${j}
- if [ -n "${bdb}" -a "${bhost}" -a "${buser}" -a "${bport}" ]; then
- echo "STORE PATH (SERVER=${i}, CLIENT=${j}, CONNINFO='dbname=${db} host=${host} user=${user} port=${port}');" >> $mktmp/store_paths.slonik
- else
- err 3 "No conninfo"
- fi
- fi
- if [ ${j} -ge ${NUMNODES} ]; then
- break;
- else
- j=$((${j} + 1))
- fi
- done
- if [ ${i} -ge ${NUMNODES} ]; then
- break;
- else
- i=$((${i} +1))
- fi
- else
- err 3 "no DB"
- fi
- done
- }
- mktmp=`mktemp -d -t ledgersmb-temp.XXXXXX`
- if [ $MY_MKTEMP_IS_DECREPIT ] ; then
- mktmp=`mktemp -d /tmp/ledgersmb-temp.XXXXXX`
- fi
- PREAMBLE=${mktmp}/preamble.slonik
- echo "cluster name=${CLUSTER};" > $PREAMBLE
- alias=1
- while : ; do
- eval db=\$DB${alias}
- eval host=\$HOST${alias}
- eval user=\$USER${alias}
- eval port=\$PORT${alias}
- if [ -n "${db}" -a "${host}" -a "${user}" -a "${port}" ]; then
- conninfo="dbname=${db} host=${host} user=${user} port=${port}"
- echo "NODE ${alias} ADMIN CONNINFO = '${conninfo}';" >> $PREAMBLE
- if [ ${alias} -ge ${NUMNODES} ]; then
- break;
- else
- alias=`expr ${alias} + 1`
- fi
- else
- break;
- fi
- done
- SEQUENCES=" acc_trans_entry_id_seq audittrail_entry_id_seq
- custom_field_catalog_field_id_seq custom_table_catalog_table_id_seq
- id inventory_entry_id_seq invoiceid jcitemsid orderitemsid
- partscustomer_entry_id_seq partsvendor_entry_id_seq
- session_session_id_seq shipto_entry_id_seq "
- TABLES=" acc_trans ap ar assembly audittrail business chart
- custom_field_catalog custom_table_catalog customer customertax
- defaults department dpt_trans employee exchangerate gifi gl inventory
- invoice jcitems language makemodel oe orderitems parts partscustomer
- partsgroup partstax partsvendor pricegroup project recurring
- recurringemail recurringprint session shipto sic status tax
- transactions translation vendor vendortax warehouse yearend"
- SETUPSET=${mktmp}/create_set.slonik
- echo "include <${PREAMBLE}>;" > $SETUPSET
- echo "create set (id=1, origin=1, comment='${CLUSTER} Tables and Sequences');" >> $SETUPSET
- tnum=1
- for table in `echo $TABLES`; do
- echo "set add table (id=${tnum}, set id=1, origin=1, fully qualified name='public.${table}', comment='${CLUSTER} table ${table}');" >> $SETUPSET
- tnum=`expr ${tnum} + 1`
- done
- snum=1
- for seq in `echo $SEQUENCES`; do
- echo "set add sequence (id=${snum}, set id=1, origin=1, fully qualified name='public.${seq}', comment='${CLUSTER} sequence ${seq}');" >> $SETUPSET
- snum=`expr ${snum} + 1`
- done
- NODEINIT=$mktmp/create_nodes.slonik
- echo "include <${PREAMBLE}>;" > $NODEINIT
- echo "init cluster (id=1, comment='${CLUSTER} node 1');" >> $NODEINIT
- node=2
- while : ; do
- SUBFILE=$mktmp/subscribe_set_${node}.slonik
- echo "include <${PREAMBLE}>;" > $SUBFILE
- echo "store node (id=${node}, comment='${CLUSTER} subscriber node ${node}');" >> $NODEINIT
- echo "subscribe set (id=1, provider=1, receiver=${node}, forward=yes);" >> $SUBFILE
- if [ ${node} -ge ${NUMNODES} ]; then
- break;
- else
- node=`expr ${node} + 1`
- fi
- done
- store_path
- echo "
- $0 has generated Slony-I slonik scripts to initialize replication for LedgerSMB.
- Cluster name: ${CLUSTER}
- Number of nodes: ${NUMNODES}
- Scripts are in ${mktmp}
- =====================
- "
- ls -l $mktmp
- echo "
- =====================
- Be sure to verify that the contents of $PREAMBLE very carefully, as
- the configuration there is used widely in the other scripts.
- =====================
- ====================="
|