Jan Wieck wieck at lists.slony.info
Sat Sep 8 07:21:42 PDT 2007
Update of /home/cvsd/slony1/slony1-engine/src/ducttape
In directory main.slony.info:/tmp/cvs-serv20140/src/ducttape

Modified Files:
      Tag: REL_1_2_STABLE
	test_5_ddlscript test_8_logship.in 
Log Message:
Add the slony_logshipper.

This is a standalone utility that can be used with the slon -x option
to postprocess slony archive log files. Since it does not require any
changes in the existing slony or slonik functionality, I decided to
the current stable branch to be released with 1.2.12.

Jan


Index: test_5_ddlscript
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/src/ducttape/test_5_ddlscript,v
retrieving revision 1.2.6.1
retrieving revision 1.2.6.2
diff -C2 -d -r1.2.6.1 -r1.2.6.2
*** test_5_ddlscript	4 Jun 2007 22:51:19 -0000	1.2.6.1
--- test_5_ddlscript	8 Sep 2007 14:21:40 -0000	1.2.6.2
***************
*** 19,22 ****
--- 19,23 ----
  
  cat >test_5_tmp.sql <<_EOF_
+ 	set search_path = public;
  	alter table accounts add column lastuser name;
  

Index: test_8_logship.in
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/src/ducttape/test_8_logship.in,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** test_8_logship.in	31 May 2007 13:29:48 -0000	1.1.2.1
--- test_8_logship.in	8 Sep 2007 14:21:40 -0000	1.1.2.2
***************
*** 51,54 ****
--- 51,55 ----
  		kill -15 $slon2_pid
  	fi
+ 	slony_logshipper -T ./test_8_logshipper.conf
  	exit 1
  ' 2 15
***************
*** 82,87 ****
  PREAMBLE_FILE=/tmp/preamble.$$
  cat <<EOF > $PREAMBLE_FILE
! define origin 11;
! define sub1 22;
  cluster name = $CLUSTERNAME;
  node @origin admin conninfo='dbname=$DB1';
--- 83,88 ----
  PREAMBLE_FILE=/tmp/preamble.$$
  cat <<EOF > $PREAMBLE_FILE
! define origin 1;
! define sub1 2;
  cluster name = $CLUSTERNAME;
  node @origin admin conninfo='dbname=$DB1';
***************
*** 104,108 ****
  # Create the "Primary Node"
  #####
! echo "**** creating database for Node 11"
  
  createdb $DB1 || exit 1
--- 105,109 ----
  # Create the "Primary Node"
  #####
! echo "**** creating database for Node 1"
  
  createdb $DB1 || exit 1
***************
*** 135,139 ****
  	include <$PREAMBLE_FILE>;
  	init cluster (id = @origin, comment = 'Node @origin');
! 	echo 'Database $DB1 initialized as Node 11';
  _EOF_
  if [ $? -ne 0 ] ; then
--- 136,140 ----
  	include <$PREAMBLE_FILE>;
  	init cluster (id = @origin, comment = 'Node @origin');
! 	echo 'Database $DB1 initialized as Node 1';
  _EOF_
  if [ $? -ne 0 ] ; then
***************
*** 143,147 ****
  
  echo "**** starting the Slony-I node daemon for $DB1"
! $TERMPROG -title "Slon node 11" -e sh -c "slon -d$DEBUG_LEVEL -s500 -g10 $CLUSTERNAME dbname=$DB1; echo -n 'Enter>'; read line" &
  slon1_pid=$!
  echo "slon[$slon1_pid] on dbname=$DB1"
--- 144,148 ----
  
  echo "**** starting the Slony-I node daemon for $DB1"
! $TERMPROG -title "Slon node 1" -e sh -c "slon -d$DEBUG_LEVEL -s500 -g10 $CLUSTERNAME dbname=$DB1; echo -n 'Enter>'; read line" &
  slon1_pid=$!
  echo "slon[$slon1_pid] on dbname=$DB1"
***************
*** 152,156 ****
  
  	try {
! 		table add key (node id = 11, fully qualified name = 'public.history');
  	}
  	on error {
--- 153,157 ----
  
  	try {
! 		table add key (node id = 1, fully qualified name = 'public.history');
  	}
  	on error {
***************
*** 207,211 ****
  # set of the running pgbench
  ######################################################################
! echo "**** creating database for node 22"
  if ! createdb $DB2 ; then
  	kill $pgbench_pid 2>/dev/null
--- 208,212 ----
  # set of the running pgbench
  ######################################################################
! echo "**** creating database for node 2"
  if ! createdb $DB2 ; then
  	kill $pgbench_pid 2>/dev/null
***************
*** 214,221 ****
  fi
  
! echo "**** initializing $DB2 as node 22 of Slony-I cluster $CLUSTERNAME"
  slonik <<_EOF_
  	include <$PREAMBLE_FILE>;
! 	echo 'Creating node 22';
  	try {
  		store node (id = @sub1, comment = 'node @sub1', event node = @origin);
--- 215,222 ----
  fi
  
! echo "**** initializing $DB2 as node 2 of Slony-I cluster $CLUSTERNAME"
  slonik <<_EOF_
  	include <$PREAMBLE_FILE>;
! 	echo 'Creating node 2';
  	try {
  		store node (id = @sub1, comment = 'node @sub1', event node = @origin);
***************
*** 239,251 ****
  	exit 1
  fi
  
  echo "**** starting the Slony-I node daemon for $DB2"
! $TERMPROG -title "Slon node 22" -e sh -c "slon -d$DEBUG_LEVEL -s10000 -o10000 -g10 -a $LOGSHIPDIR $CLUSTERNAME dbname=$DB2; echo -n 'Enter>'; read line" &
  slon2_pid=$!
  echo "slon[$slon2_pid] on dbname=$DB2"
  
- echo "**** taking offline_dump.sql from $DB2 for logshipping"
- sh ../../tools/slony1_dump.sh $DB2 T1 >offline_dump.sql
- 
  #####
  # Check that pgbench is still running
--- 240,274 ----
  	exit 1
  fi
+ echo "**** creating pgbench tables in node 2"
+ (
+ 	cat pgbench_schema.sql
+ ) | psql -q $DB2
+ echo "**** taking offline_dump.sql from $DB2 for logshipping"
+ sh ../../tools/slony1_dump.sh $DB2 T1 >offline_dump.sql
+ 
+ ######################################################################
+ # Prepare DB3 for receiving offline logs from the slony_logshipper
+ ######################################################################
+ echo "**** creating database for offline node"
+ if ! createdb $DB3 ; then
+ 	exit 1
+ fi
  
+ echo "**** loading pgbench schema into $DB3"
+ psql -q $DB3 <./pgbench_schema.sql
+ echo "**** loading Slony-I offline replica schema into $DB3"
+ psql -q $DB3 <./offline_dump.sql
+ psql -q $DB3 <<_EOF_
+ 	alter table history add column "_Slony-I_T1_rowID" bigint;
+ _EOF_
+ 
+ ######################################################################
+ # Start the slon for node 2, which also fires the logshipper
+ ######################################################################
  echo "**** starting the Slony-I node daemon for $DB2"
! $TERMPROG -title "Slon node 2" -e sh -c "slon -d$DEBUG_LEVEL -s10000 -o10000 -g10 -a $LOGSHIPDIR -x 'slony_logshipper ./test_8_logshipper.conf' $CLUSTERNAME dbname=$DB2; echo -n 'Enter>'; read line" &
  slon2_pid=$!
  echo "slon[$slon2_pid] on dbname=$DB2"
  
  #####
  # Check that pgbench is still running
***************
*** 261,268 ****
  # and the attendants in the first row climb on their chairs ...
  ######################################################################
! echo "**** creating pgbench tables and subscribing node 22 to set 1"
! (
! 	cat pgbench_schema.sql
! ) | psql -q $DB2
  slonik <<_EOF_
  	include <$PREAMBLE_FILE>;
--- 284,288 ----
  # and the attendants in the first row climb on their chairs ...
  ######################################################################
! echo "**** Subscribing node 2 to set 1"
  slonik <<_EOF_
  	include <$PREAMBLE_FILE>;
***************
*** 289,312 ****
  kill $slon1_pid 2>/dev/null
  kill $slon2_pid 2>/dev/null
  
  sh ./compare_pgbench_dumps $DB1 $DB2
- 
- echo "**** creating database for offline node"
- if ! createdb $DB3 ; then
- 	exit 1
- fi
- 
- echo "---- loading pgbench schema into $DB3"
- psql -q $DB3 <./pgbench_schema.sql
- echo "---- loading Slony-I offline replica schema into $DB3"
- psql -q $DB3 <./offline_dump.sql
- psql -q $DB3 <<_EOF_
- 	alter table history add column "_Slony-I_T1_rowID" bigint;
- _EOF_
- echo "---- loading all offline log archives"
- for afile in $LOGSHIPDIR/*.sql ; do
- 	psql -q $DB3 <$afile
- done
- 
  sh ./compare_pgbench_dumps $DB1 $DB3
  
--- 309,315 ----
  kill $slon1_pid 2>/dev/null
  kill $slon2_pid 2>/dev/null
+ slony_logshipper -t ./test_8_logshipper.conf
  
  sh ./compare_pgbench_dumps $DB1 $DB2
  sh ./compare_pgbench_dumps $DB1 $DB3
  



More information about the Slony1-commit mailing list