mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			260 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| # InitRservTest
 | |
| # erServer demonstration implementation
 | |
| # (c) 2000 Vadim Mikheev, PostgreSQL Inc.
 | |
| 
 | |
| [ -n "$RSERV_PERL" ] || RSERV_PERL=@LIBDIR@
 | |
| [ -n "$RSERV_SQL" ] || RSERV_SQL=@SQLDIR@
 | |
| [ -n "$RSERV_BIN" ] || RSERV_BIN=@BINDIR@
 | |
| export RSERV_PERL
 | |
| export RSERV_SQL
 | |
| export RSERV_BIN
 | |
| 
 | |
| pargs=
 | |
| 
 | |
| while [[ $1 == -* ]]; do
 | |
|     case "$1" in
 | |
| 	--user)
 | |
| 	    shift
 | |
| 	    pargs="$pargs -U $1"
 | |
| 	    ;;
 | |
| 	--host)
 | |
| 	    shift
 | |
| 	    pargs="$pargs -h $1"
 | |
| 	    ;;
 | |
| 	*)
 | |
| 	    echo "Usage: $0 --user name --host name masterdb slavedb"
 | |
| 	    exit 1
 | |
| 	    ;;
 | |
|     esac
 | |
|     shift
 | |
| done
 | |
| 
 | |
| masterdb=$1
 | |
| slavedb=$2
 | |
| 
 | |
| [ "${masterdb}" != "" ] || masterdb=master
 | |
| [ "${slavedb}" != "" ] || slavedb=slave
 | |
| 
 | |
| echo "Master -> $masterdb"
 | |
| echo "Slave  -> $slavedb"
 | |
| 
 | |
| ############################################################################
 | |
| 
 | |
| fill()
 | |
| {
 | |
| 	table="create table test (i text, k int, l int);
 | |
| copy test from stdin;
 | |
| Line: 1	1	1
 | |
| Line: 2	2	2
 | |
| Line: 3	3	3
 | |
| Line: 4	4	4
 | |
| Line: 5	5	5
 | |
| Line: 6	6	6
 | |
| Line: 7	7	7
 | |
| Line: 8	8	8
 | |
| Line: 9	9	9
 | |
| Line: 10	10	10
 | |
| Line: 11	11	11
 | |
| Line: 12	12	12
 | |
| Line: 13	13	13
 | |
| Line: 14	14	14
 | |
| Line: 15	15	15
 | |
| Line: 16	16	16
 | |
| Line: 17	17	17
 | |
| Line: 18	18	18
 | |
| Line: 19	19	19
 | |
| Line: 20	20	20
 | |
| Line: 21	21	21
 | |
| Line: 22	22	22
 | |
| Line: 23	23	23
 | |
| Line: 24	24	24
 | |
| Line: 25	25	25
 | |
| Line: 26	26	26
 | |
| Line: 27	27	27
 | |
| Line: 28	28	28
 | |
| Line: 29	29	29
 | |
| Line: 30	30	30
 | |
| Line: 31	31	31
 | |
| Line: 32	32	32
 | |
| Line: 33	33	33
 | |
| Line: 34	34	34
 | |
| Line: 35	35	35
 | |
| Line: 36	36	36
 | |
| Line: 37	37	37
 | |
| Line: 38	38	38
 | |
| Line: 39	39	39
 | |
| Line: 40	40	40
 | |
| Line: 41	41	41
 | |
| Line: 42	42	42
 | |
| Line: 43	43	43
 | |
| Line: 44	44	44
 | |
| Line: 45	45	45
 | |
| Line: 46	46	46
 | |
| Line: 47	47	47
 | |
| Line: 48	48	48
 | |
| Line: 49	49	49
 | |
| Line: 50	50	50
 | |
| Line: 51	51	51
 | |
| Line: 52	52	52
 | |
| Line: 53	53	53
 | |
| Line: 54	54	54
 | |
| Line: 55	55	55
 | |
| Line: 56	56	56
 | |
| Line: 57	57	57
 | |
| Line: 58	58	58
 | |
| Line: 59	59	59
 | |
| Line: 60	60	60
 | |
| Line: 61	61	61
 | |
| Line: 62	62	62
 | |
| Line: 63	63	63
 | |
| Line: 64	64	64
 | |
| Line: 65	65	65
 | |
| Line: 66	66	66
 | |
| Line: 67	67	67
 | |
| Line: 68	68	68
 | |
| Line: 69	69	69
 | |
| Line: 70	70	70
 | |
| Line: 71	71	71
 | |
| Line: 72	72	72
 | |
| Line: 73	73	73
 | |
| Line: 74	74	74
 | |
| Line: 75	75	75
 | |
| Line: 76	76	76
 | |
| Line: 77	77	77
 | |
| Line: 78	78	78
 | |
| Line: 79	79	79
 | |
| Line: 80	80	80
 | |
| Line: 81	81	81
 | |
| Line: 82	82	82
 | |
| Line: 83	83	83
 | |
| Line: 84	84	84
 | |
| Line: 85	85	85
 | |
| Line: 86	86	86
 | |
| Line: 87	87	87
 | |
| Line: 88	88	88
 | |
| Line: 89	89	89
 | |
| Line: 90	90	90
 | |
| Line: 91	91	91
 | |
| Line: 92	92	92
 | |
| Line: 93	93	93
 | |
| Line: 94	94	94
 | |
| Line: 95	95	95
 | |
| Line: 96	96	96
 | |
| Line: 97	97	97
 | |
| Line: 98	98	98
 | |
| Line: 99	99	99
 | |
| Line: 100	100	100
 | |
| \\.";
 | |
| 	echo "$table" | psql $pargs $1 || exit
 | |
| 	if [ "$1" = "$masterdb" ]
 | |
| 	then
 | |
| 		rm -rf __tmpf__
 | |
| 		psql $pargs -c "select * into table testoid from test" $1 || exit
 | |
| 		psql $pargs -c "copy testoid with oids to '`pwd`/__tmpf__'" $1 || exit
 | |
| 		psql $pargs -c "select * into table teststr from test" $1 || exit
 | |
| 	else
 | |
| 		psql $pargs -c "select * into table testoid from test where k < 0" $1 || exit
 | |
| 		psql $pargs -c "copy testoid with oids from '`pwd`/__tmpf__'" $1 || exit
 | |
| 		psql $pargs -c "select * into table teststr from test" $1 || exit
 | |
| 		rm -rf __tmpf__
 | |
| 	fi
 | |
| 	psql $pargs -c "create unique index i_test on test (k)" $1 || exit
 | |
| 	psql $pargs -c "create unique index i_testoid on testoid (oid)" $1 || exit
 | |
| 	psql $pargs -c "create unique index i_teststr on teststr (i)" $1 || exit
 | |
| 	psql $pargs -c vacuum $1 || exit
 | |
| }
 | |
| 
 | |
| ############################################################################
 | |
| 
 | |
| echo
 | |
| echo
 | |
| echo '                            ATTENTION'
 | |
| echo
 | |
| echo This script will destroy databases with names MASTER and SLAVE
 | |
| echo
 | |
| echo -n "Are you going to continue ? [Y/N] "
 | |
| 
 | |
| read answ
 | |
| 
 | |
| case $answ in
 | |
|     Y*|y*)
 | |
|         ;;
 | |
|     *)
 | |
|         exit
 | |
|         ;;
 | |
| esac
 | |
| 
 | |
| echo
 | |
| echo
 | |
| 
 | |
| sql="drop database $masterdb"
 | |
| echo $sql
 | |
| psql $pargs -c "$sql" template1
 | |
| sql="create database $masterdb"
 | |
| echo $sql
 | |
| psql $pargs -c "$sql" template1 || exit
 | |
| 
 | |
| echo Setup master system
 | |
| psql $pargs $masterdb < $RSERV_SQL/master.sql || exit
 | |
| 
 | |
| echo Wait for template1 to become available...
 | |
| sleep 1
 | |
| 
 | |
| sql="drop database $slavedb"
 | |
| echo $sql
 | |
| psql $pargs -c "$sql" template1
 | |
| sql="create database $slavedb"
 | |
| echo $sql
 | |
| psql $pargs -c "$sql" template1 || exit
 | |
| 
 | |
| echo Setup slave system
 | |
| psql $pargs $slavedb < $RSERV_SQL/slave.sql || exit
 | |
| 
 | |
| echo Create and fill test, testoid and teststr tables in master db
 | |
| fill $masterdb
 | |
| echo
 | |
| echo Register test, testoid and teststr tables for replication on master
 | |
| echo
 | |
| $RSERV_BIN/MasterAddTable $masterdb test k
 | |
| $RSERV_BIN/MasterAddTable $masterdb testoid oid
 | |
| $RSERV_BIN/MasterAddTable $masterdb teststr i
 | |
| 
 | |
| echo Create and fill test, testoid and teststr tables in slave db
 | |
| fill $slavedb
 | |
| echo
 | |
| echo Register test, testoid and teststr tables for replication on slave
 | |
| echo
 | |
| $RSERV_BIN/SlaveAddTable $slavedb test k
 | |
| $RSERV_BIN/SlaveAddTable $slavedb testoid oid
 | |
| $RSERV_BIN/SlaveAddTable $slavedb teststr i
 | |
| 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo "            Now make changes in $masterdb db and run"
 | |
| echo 
 | |
| echo "                Replicate $masterdb $slavedb"
 | |
| echo 
 | |
| echo "            to replicate the master on the slave."
 | |
| echo 
 | |
| echo "            You may also use the RservTest tcl utility"
 | |
| echo "            to demonstrate this functionality."
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| echo 
 | |
| 
 | |
| exit
 | |
| 
 | |
| ############################################################################
 |