#!/bin/sh # # Parameters: # - need cluster name # - need node # of the new node # - need conninfo for node being duplicated # - need conninfo for node being created # - need conninfo for origin node # - need to have Slony-I tools directory in PATH help() { echo < ${mktmp}/schema.sql # Step 3. # - create preamble based on dupe node + new node SPREAMBLE=${mktmp}/slonik.preamble echo "CLUSTER NAME = ${SCLUSTER};" > ${SPREAMBLE} echo "node ${PROVIDERNODE} admin conninfo='dbname=${DATABASEDUP} host=${HOSTDUP} user=${USERDUP} port=${PORTDUP}';" >> ${SPREAMBLE} echo "node ${NODENUM} admin conninfo='dbname=${DATABASENEW} host=${HOSTNEW} user=${USERNEW} port=${PORTNEW}';" >> ${SPREAMBLE} # - STORE NODE on the new node echo "include <${SPREAMBLE}>;" > $mktmp/step1-storenode.slonik echo "store node (id= ${NODENUM}, comment='Duplicate of node ${PROVIDERNODE}', event node=${PROVIDERNODE});" >> $mktmp/step1-storenode.slonik # - STORE PATH to get connections between new node and dupe node echo "include <${SPREAMBLE}>;" > $mktmp/step2-storepath.slonik echo "store path (server= ${NODENUM}, client=${PROVIDERNODE}, conninfo='dbname=${DATABASENEW} host=${HOSTNEW} user=${USERNEW} port=${PORTNEW}');" >> $mktmp/step2-storepath.slonik echo "store path (server= ${PROVIDERNODE}, client=${NODENUM}, conninfo='dbname=${DATABASEDUP} host=${HOSTDUP} user=${USERDUP} port=${PORTDUP}');" >> $mktmp/step2-storepath.slonik echo "include <${SPREAMBLE}>;" > $mktmp/step3-subscribe-sets.slonik # - Get list of sets that "dupe node" subscribes to *or provides* SQUERY="select set_id from \"_${SCLUSTER}\".sl_set where set_origin = \"_${SCLUSTER}\".getlocalnodeid('_${SCLUSTER}') or exists (select 1 from \"_${SCLUSTER}\".sl_subscribe where sub_receiver= \"_${SCLUSTER}\".getlocalnodeid('_${SCLUSTER}') and sub_forward and set_id = sub_set);" echo "Set query: ${SQUERY}" SETS=`psql -At ${PROVIDERPARMS} -c "${SQUERY}" | sort -n` for set in `echo ${SETS}`; do echo "Prepare subscription for set ${set}" echo "subscribe set (id=${set}, provider=${PROVIDERNODE}, receiver=${NODENUM}, forward=true);" >> ${mktmp}/step3-subscribe-sets.slonik done echo "Scripts to set up duplicate node have been set up in ${mktmp}" echo "Please review them before running them."