Appendix B
Scenario Scripts
B.1. Introduction
This appendix gives scripts of scenarios which are described in
[Empress Replication Scenarios].
Some of the operations have pre-steps that shall be executed before the
operation. The lines starting with "#" are comments. Most of the environment
variable settings are assumed to be set in a Bourne Shell or Korn Shell. If
they are to be used in C Shell, the environment variable settings must be
changed accordingly.
B.1.1 Environment Variables that need to be set by User
These setting are common for all the scenarios. These are the environemnt
variables that are going to be used by the scenarios. The values of some of
these environment variables shall be set before executing the scenario
operations.
#!/bin/sh
# Set the following variables to their appropriate values:
# Directories, Host Names, Replication Master Server Names
# ___Directories_______________________
# Set these variables to the path of the database directory
# Their default value is the current directory.
# For example if Database directory for TorontoDB is
# "/usr/empress/data/TorontoDB", then TORONTOPWD must be set to
# "/usr/empress/data"
#
TORONTOPWD=`pwd`
export TORONTOPWD
NEWYORKPWD=`pwd`
export NEWYORKPWD
BROOKLYNPWD=`pwd`
export BROOKLYNPWD
TOKYOPWD=`pwd`
export TOKYOPWD
# __Host Names_____________________________________________
# These will contain the network address and host names of their corresponding
# hosts. Their default is localhost
# For example if the host that TorontoDB will reside is "toronto.empress.com",
# then TORONTOHOST must be set to "toronto.empress.com" (or to "toronto" if
# all the databases are using the same network domain).
#
TORONTOHOST=`hostname`
export TORONTOHOST
NEWYORKHOST=`hostname`
export NEWYORKHOST
BROOKLYNHOST=`hostname`
export BROOKLYNHOST
TOKYOHOST=`hostname`
export TOKYOHOST
# __Replication Master Servers___________
# Name of the Replication Master Servers
#
TORONTOREPSERVER=TorontoRepServer
export TORONTOREPSERVER
NEWYORKREPSERVER=NewYorkRepServer
export NEWYORKREPSERVER
B.1.2 Other Environment Variables
These environment variables do not need to changed by user. Their value is
taken from the Environment variables that are set before.
# ___Others____________________________
#
SERVERTYPE=replication_master
export SERVERTYPE
NETSERVER="${HOME}/.empress/netserver.cfg"
export NETSERVER
# __DB Names________________________________________________
TORONTODB="${TORONTOPWD}/TorontoDB"
export TORONTODB
NEWYORKDB="${NEWYORKPWD}/NewYorkDB"
export NEWYORKDB
BROOKLYNDB="${BROOKLYNPWD}/BrooklynDB"
export BROOKLYNDB
TOKYODB="${TOKYOPWD}/TokyoDB"
export TOKYODB
# __Table Names______________________________________________
TORONTOPLIST=TorontoPList
export TORONTOPLIST
NEWYORKPLIST=NewYorkPList
export NEWYORKPLIST
BROOKLYNPLIST=BrooklynPList
export BROOKLYNPLIST
TOKYOPLIST=TokyoPList
export TOKYOPLIST
# __Access Information__________________________________________
# These variables are to simplify typing the access information to
# Replication Maste and Replication Replicates.
#
TORONTO_RM_INFO="'${TORONTOREPSERVER}':'${TORONTODB}':${TORONTOPLIST}"
export TORONTO_RM_INFO
NEWYORK_RR_INFO="'${NEWYORKHOST}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RR_INFO
NEWYORK_RM_INFO="'${NEWYORKREPSERVER}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RM_INFO
BROOKLYN_RR_INFO="'${BROOKLYNHOST}':'${BROOKLYNDB}':${BROOKLYNPLIST}"
export BROOKLYN_RR_INFO
TOKYO_RR_INFO="'${TOKYOHOST}':'${TOKYODB}':${TOKYOPLIST}"
export TOKYO_RR_INFO
B.2 Scenario A
B.2.1 Operations for Creating the Scenario A
#!/bin/sh
# Set the following variables to their appropriate values:
# Directories, Host Names, Replication Master Server Names
# ___Directories_______________________
# Set these variables to the path of the database directory
# Their default value is the current directory.
# For example if Database directory for TorontoDB is
# "/usr/empress/data/TorontoDB", then TORONTOPWD must be set to
# "/usr/empress/data"
#
TORONTOPWD=`pwd`
export TORONTOPWD
NEWYORKPWD=`pwd`
export NEWYORKPWD
BROOKLYNPWD=`pwd`
export BROOKLYNPWD
TOKYOPWD=`pwd`
export TOKYOPWD
# __Host Names_____________________________________________
# These will contain the network address and host names of their corresponding
# hosts. Their default is localhost
# For example if the host that TorontoDB will reside is "toronto.empress.com",
# then TORONTOHOST must be set to "toronto.empress.com" (or to "toronto" if
# all the databases are using the same network domain).
#
TORONTOHOST=`hostname`
export TORONTOHOST
NEWYORKHOST=`hostname`
export NEWYORKHOST
BROOKLYNHOST=`hostname`
export BROOKLYNHOST
TOKYOHOST=`hostname`
export TOKYOHOST
# __Replication Master Servers___________
# Name of the Replication Master Servers
#
TORONTOREPSERVER=TorontoRepServer
export TORONTOREPSERVER
NEWYORKREPSERVER=NewYorkRepServer
export NEWYORKREPSERVER
# ___Others____________________________
#
SERVERTYPE=replication_master
export SERVERTYPE
NETSERVER="${HOME}/.empress/netserver.cfg"
export NETSERVER
# __DB Names________________________________________________
TORONTODB="${TORONTOPWD}/TorontoDB"
export TORONTODB
NEWYORKDB="${NEWYORKPWD}/NewYorkDB"
export NEWYORKDB
BROOKLYNDB="${BROOKLYNPWD}/BrooklynDB"
export BROOKLYNDB
TOKYODB="${TOKYOPWD}/TokyoDB"
export TOKYODB
# __Table Names______________________________________________
TORONTOPLIST=TorontoPList
export TORONTOPLIST
NEWYORKPLIST=NewYorkPList
export NEWYORKPLIST
BROOKLYNPLIST=BrooklynPList
export BROOKLYNPLIST
TOKYOPLIST=TokyoPList
export TOKYOPLIST
# __Access Information__________________________________________
# These variables are to simplify typing the access information to
# Replication Maste and Replication Replicates.
#
TORONTO_RM_INFO="'${TORONTOREPSERVER}':'${TORONTODB}':${TORONTOPLIST}"
export TORONTO_RM_INFO
NEWYORK_RR_INFO="'${NEWYORKHOST}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RR_INFO
NEWYORK_RM_INFO="'${NEWYORKREPSERVER}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RM_INFO
BROOKLYN_RR_INFO="'${BROOKLYNHOST}':'${BROOKLYNDB}':${BROOKLYNPLIST}"
export BROOKLYN_RR_INFO
TOKYO_RR_INFO="'${TOKYOHOST}':'${TOKYODB}':${TOKYOPLIST}"
export TOKYO_RR_INFO
# --------------------------------------------------
# Scenario A
# --------------------------------------------------
#
# Presteps:
#
# ${TORONTOHOST}: OpA1.1. Create Database ${TORONTODB}
empmkdb ${TORONTODB}
# $TORONTODB: OpA1.2. create table ${TORONTOPLIST}
empbatch ${TORONTODB} << @
create ${TORONTOPLIST} (\
prod_id integer not null, \
prod_name character(30,1) not null, \
prod_price float,\
prod_lang character(15,1));
@
# "$TORONTODB: OpA1.3. insert data into ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
insert into ${TORONTOPLIST} values (1, 'DB1', 4000, 'english');
insert into ${TORONTOPLIST} values (3, 'DB2', 7000, 'english');
@
# "$NEWYORKHOST: OpA1.4. Create database ${NEWYORKDB}"
empmkdb ${NEWYORKDB}
# "------------------- OpA1 ------------------------------------"
# "${TORONTODB}: OpA1. Define master table [${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
alter ${TORONTOPLIST} change table type to MASTER;
@
# "------------------- OpA2 ------------------------------------"
# "${TORONTOHOST}: OpA2. Configure Network Server on RMT Side [${TORONTOREPSERVER}] "
# "OpA2.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpA3 ------------------------------------"
# "${TORONTOHOST}: OpA3. Start Replication Master Server ${TORONTOREPSERVER}"
empsvadm ${TORONTOREPSERVER} start
# "------------------- OpA4 ------------------------------------"
# "${TORONTODB}: OpA4.
# Create Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
create replication replicate \
${NEWYORK_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpA5 ------------------------------------"
# Steps of OpA5 are to be executed if ${NEWYORKHOST} and ${TORONTOHOST} are
# different. Otherwise, these is no need to create the files once more.
# "${NEWYORKHOST}: OpA5. Configure Network Server on RRT Side [${NEWYORKPLIST}] "
# "OpA6.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpA6 ------------------------------------"
# "${NEWYORKDB}: OpA6. Create Replicate Table [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${NEWYORKDB} << @
create replicate table \
${NEWYORKPLIST} \
FROM ${TORONTO_RM_INFO};
@
# "------------------- OpA7 ------------------------------------"
# "${NEWYORKHOST}: OpA7. Perform a Synchronization [${NEWYORKPLIST}]"
emprepsync -v ${NEWYORKDB} ${NEWYORKPLIST}
# "------------------- OpA8 ------------------------------------"
# "$NewYorkDB: OpA8. View Replication Table and Synchronization Status [NewYorkPList] "
empbatch ${NEWYORKDB} << @
display table ${NEWYORKPLIST} all;
@
# "Check the contents of the Replication Replicate Table NewYorkPList"
empbatch ${NEWYORKDB} << @
select * from ${NEWYORKPLIST};
@
B.2.2 Other possible operations in scenario A
# "${NEWYORKDB}: Drop Replicate Table [${NEWYORKPLIST}] "
# empcmd ${NEWYORKDB} "DROP TABLE ${NEWYORKPLIST};"
# "${TORONTODB}: Unauthorize Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
# empcmd ${TORONTODB} "DROP REPLICATION REPLICATE \
# ${NEWYORK_RR_INFO} \
# ON ${TORONTOPLIST};"
# "------------------- OpA9 ------------------------------------"
# "${TORONTOHOST}: OpA9. Stop Replication Master Server [${TORONTOREPSERVER}]"
empsvadm ${TORONTOREPSERVER} stop
# "${TORONTODB}: Undefine Master Table [${TORONTOPLIST}]"
# empcmd ${TORONTODB} "ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO NORMAL;"
#---------------------------------------------------------------
# "Post Steps to completely clear the effects"
# "Remove database ${NEWYORKDB}"
# emprmdb ${NEWYORKDB}
# "Remove database ${TORONTODB}"
# emprmdb ${TORONTODB}
# "remove server log file"
# rm ${TORONTOREPSERVER}.log
B.3 Scenario B
B.3.1 Operations for Creating the Scenario B
#!/bin/sh
# Set the following variables to their appropriate values:
# Directories, Host Names, Replication Master Server Names
# ___Directories_______________________
# Set these variables to the path of the database directory
# Their default value is the current directory.
# For example if Database directory for TorontoDB is
# "/usr/empress/data/TorontoDB", then TORONTOPWD must be set to
# "/usr/empress/data"
#
TORONTOPWD=`pwd`
export TORONTOPWD
NEWYORKPWD=`pwd`
export NEWYORKPWD
BROOKLYNPWD=`pwd`
export BROOKLYNPWD
TOKYOPWD=`pwd`
export TOKYOPWD
# __Host Names_____________________________________________
# These will contain the network address and host names of their corresponding
# hosts. Their default is localhost
# For example if the host that TorontoDB will reside is "toronto.empress.com",
# then TORONTOHOST must be set to "toronto.empress.com" (or to "toronto" if
# all the databases are using the same network domain).
#
TORONTOHOST=`hostname`
export TORONTOHOST
NEWYORKHOST=`hostname`
export NEWYORKHOST
BROOKLYNHOST=`hostname`
export BROOKLYNHOST
TOKYOHOST=`hostname`
export TOKYOHOST
# __Replication Master Servers___________
# Name of the Replication Master Servers
#
TORONTOREPSERVER=TorontoRepServer
export TORONTOREPSERVER
NEWYORKREPSERVER=NewYorkRepServer
export NEWYORKREPSERVER
# ___Others____________________________
#
SERVERTYPE=replication_master
export SERVERTYPE
NETSERVER="${HOME}/.empress/netserver.cfg"
export NETSERVER
# __DB Names________________________________________________
TORONTODB="${TORONTOPWD}/TorontoDB"
export TORONTODB
NEWYORKDB="${NEWYORKPWD}/NewYorkDB"
export NEWYORKDB
BROOKLYNDB="${BROOKLYNPWD}/BrooklynDB"
export BROOKLYNDB
TOKYODB="${TOKYOPWD}/TokyoDB"
export TOKYODB
# __Table Names______________________________________________
TORONTOPLIST=TorontoPList
export TORONTOPLIST
NEWYORKPLIST=NewYorkPList
export NEWYORKPLIST
BROOKLYNPLIST=BrooklynPList
export BROOKLYNPLIST
TOKYOPLIST=TokyoPList
export TOKYOPLIST
# __Access Information__________________________________________
# These variables are to simplify typing the access information to
# Replication Maste and Replication Replicates.
#
TORONTO_RM_INFO="'${TORONTOREPSERVER}':'${TORONTODB}':${TORONTOPLIST}"
export TORONTO_RM_INFO
NEWYORK_RR_INFO="'${NEWYORKHOST}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RR_INFO
NEWYORK_RM_INFO="'${NEWYORKREPSERVER}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RM_INFO
BROOKLYN_RR_INFO="'${BROOKLYNHOST}':'${BROOKLYNDB}':${BROOKLYNPLIST}"
export BROOKLYN_RR_INFO
TOKYO_RR_INFO="'${TOKYOHOST}':'${TOKYODB}':${TOKYOPLIST}"
export TOKYO_RR_INFO
# --------------------------------------------------
# Scenario B
# --------------------------------------------------
#
# Presteps:
#
# " ${TORONTOHOST}: OpB1.1. Create Database ${TORONTODB}"
empmkdb ${TORONTODB}
# "$TORONTODB: OpB1.2. create table ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
create ${TORONTOPLIST} (\
prod_id integer not null, \
prod_name character(30,1) not null, \
prod_price float,\
prod_lang character(15,1));
@
# "$TORONTODB: OpB1.3. insert data into ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
insert into ${TORONTOPLIST} values (1, 'DB1', 4000, 'english');
insert into ${TORONTOPLIST} values (3, 'DB2', 7000, 'english');
@
# "$NEWYORKHOST: OpB1.4. Create database ${NEWYORKDB}"
empmkdb ${NEWYORKDB}
# "------------------- OpB1 ------------------------------------"
# "${TORONTODB}: OpB1. Define master table [${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
alter ${TORONTOPLIST} change table type to MASTER;
@
# "------------------- OpB2 ------------------------------------"
# "${TORONTOHOST}: OpB2. Configure Network Server on RMT Side [${TORONTOREPSERVER}] "
# "OpB2.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB3 ------------------------------------"
# "${TORONTOHOST}: OpB3. Start Replication Master Server ${TORONTOREPSERVER}"
empsvadm ${TORONTOREPSERVER} start
# "------------------- OpB4 ------------------------------------"
# "${TORONTODB}: OpB4.
# Create Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
create replication replicate \
${NEWYORK_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpB5 ------------------------------------"
# Steps of OpB5 are to be executed if ${NEWYORKHOST} and ${TORONTOHOST} are
# different. Otherwise, these is no need to create the files once more.
# "${NEWYORKHOST}: OpB5. Configure Network Server on RRT Side [${NEWYORKPLIST}] "
# "OpB5.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB6 ------------------------------------"
# "${NEWYORKDB}: OpB6. Create Replicate Table and Load Data [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${NEWYORKDB} << @
create and insert into replicate table \
${NEWYORKPLIST} \
FROM ${TORONTO_RM_INFO};
@
# "------------------- OpB7 ------------------------------------"
#
# ${NEWYORKHOST}: OpB7. Configure Network Server on RMT Side (NewYorkRepServer)
# "OpB7.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB8 ------------------------------------"
#
# ${NEWYORKHOST}: OpB8. Start Replication Master Server (NewYorkRepServer)
empsvadm ${NEWYORKREPSERVER} start
# "------------------- OpB9 ------------------------------------"
# ${NEWYORKDB}: OpB9. Create Replication Replicate (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${NEWYORKDB} << @
create replication replicate \
${BROOKLYN_RR_INFO} \
ON ${NEWYORKPLIST};
@
# "------------------- OpB10 ------------------------------------"
# ${BROOKLYNHOST}: OpB10. Configure Network Server on RRT Side [${BROOKLYNPLIST}]
# ******************* ATTENTION: ******************
# Execute OpB10 only if ${NEWYORKHOST} is different from ${BROOKLYNHOST}
# **************************************************
# "OpB10.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
MSNETSERVEREND
@
# Pre-step 11.1: Create database ${BROOKLYNDB}
empmkdb ${BROOKLYNDB}
# "------------------- OpB11 ------------------------------------"
# ${BROOKLYNDB}: OpB11. Create Replicate Table (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${BROOKLYNDB} << @
create and insert into replicate table \
${BROOKLYNPLIST} \
FROM ${NEWYORK_RM_INFO};
@
# "------------------- OpB12 ------------------------------------"
# "${BROOKLYNDB}: OpB12. View Replication Table and Synch [${BROOKLYNPLIST}] "
empbatch ${BROOKLYNDB} << @
display table ${BROOKLYNPLIST} all;
@
# "Check the contents of the Replication Replicate Table ${BROOKLYNPLIST}"
empbatch ${BROOKLYNDB} << @
select * from ${BROOKLYNPLIST};
@
B.3.3 Other possible operations in the scenario B
# "${BROOKLYNDB}: Drop Replicate Table [${BROOKLYNPLIST}] "
# empcmd ${BROOKLYNDB} "DROP TABLE ${BROOKLYNPLIST};"
# "${TORONTODB}: Unauthorize Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
# empcmd ${TORONTODB} "DROP REPLICATION REPLICATE \
# ${NEWYORK_RR_INFO} \
# ON ${TORONTOPLIST};"
# "------------------- OpB13 ------------------------------------"
# "${TORONTOHOST}: OpB13. Stop Replication Master Server [${TORONTOREPSERVER}]"
empsvadm ${TORONTOREPSERVER} stop
# "${TORONTODB}: Undefine Master Table [${TORONTOPLIST}]"
# empcmd ${TORONTODB} "ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO NORMAL;"
# "${NEWYORKDB}: Drop Replicate Table [${NEWYORKPLIST}] "
# empcmd ${NEWYORKDB} "DROP TABLE ${NEWYORKPLIST};"
# "${NEWYORKDB}: Unauthorize Replication Replicate [${BROOKLYNPLIST}, ${NEWYORKPLIST}] "
# empcmd ${NEWYORKDB} "DROP REPLICATION REPLICATE \
# ${BROOKLYN_RR_INFO} \
# ON ${NEWYORKPLIST};"
# "------------------- OpB14 ------------------------------------"
# "${NEWYORKHOST}: OpB14. Stop Replication Master Server [${NEWYORKREPSERVER}]"
empsvadm ${NEWYORKREPSERVER} stop
#---------------------------------------------------------------
# "Post Steps to completely clear the effects"
# "Remove database ${NEWYORKDB}"
# emprmdb ${NEWYORKDB}
# "Remove database ${TORONTODB}"
# emprmdb ${TORONTODB}
# "Remove database ${BROOKLYNDB}
# emprmdb ${BROOKLYNDB}
# "remove server log file"
# rm ${TORONTOREPSERVER}.log
B.4 Scenario C
B.4.1 Operations for Creating Scenario C
#!/bin/sh
# Set the following variables to their appropriate values:
# Directories, Host Names, Replication Master Server Names
# ___Directories_______________________
# Set these variables to the path of the database directory
# Their default value is the current directory.
# For example if Database directory for TorontoDB is
# "/usr/empress/data/TorontoDB", then TORONTOPWD must be set to
# "/usr/empress/data"
#
TORONTOPWD=`pwd`
export TORONTOPWD
NEWYORKPWD=`pwd`
export NEWYORKPWD
BROOKLYNPWD=`pwd`
export BROOKLYNPWD
TOKYOPWD=`pwd`
export TOKYOPWD
# __Host Names_____________________________________________
# These will contain the network address and host names of their corresponding
# hosts. Their default is localhost
# For example if the host that TorontoDB will reside is "toronto.empress.com",
# then TORONTOHOST must be set to "toronto.empress.com" (or to "toronto" if
# all the databases are using the same network domain).
#
TORONTOHOST=`hostname`
export TORONTOHOST
NEWYORKHOST=`hostname`
export NEWYORKHOST
BROOKLYNHOST=`hostname`
export BROOKLYNHOST
TOKYOHOST=`hostname`
export TOKYOHOST
# __Replication Master Servers___________
# Name of the Replication Master Servers
#
TORONTOREPSERVER=TorontoRepServer
export TORONTOREPSERVER
NEWYORKREPSERVER=NewYorkRepServer
export NEWYORKREPSERVER
# ___Others____________________________
#
SERVERTYPE=replication_master
export SERVERTYPE
NETSERVER="${HOME}/.empress/netserver.cfg"
export NETSERVER
# __DB Names________________________________________________
TORONTODB="${TORONTOPWD}/TorontoDB"
export TORONTODB
NEWYORKDB="${NEWYORKPWD}/NewYorkDB"
export NEWYORKDB
BROOKLYNDB="${BROOKLYNPWD}/BrooklynDB"
export BROOKLYNDB
TOKYODB="${TOKYOPWD}/TokyoDB"
export TOKYODB
# __Table Names______________________________________________
TORONTOPLIST=TorontoPList
export TORONTOPLIST
NEWYORKPLIST=NewYorkPList
export NEWYORKPLIST
BROOKLYNPLIST=BrooklynPList
export BROOKLYNPLIST
TOKYOPLIST=TokyoPList
export TOKYOPLIST
# __Access Information__________________________________________
# These variables are to simplify typing the access information to
# Replication Maste and Replication Replicates.
#
TORONTO_RM_INFO="'${TORONTOREPSERVER}':'${TORONTODB}':${TORONTOPLIST}"
export TORONTO_RM_INFO
NEWYORK_RR_INFO="'${NEWYORKHOST}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RR_INFO
NEWYORK_RM_INFO="'${NEWYORKREPSERVER}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RM_INFO
BROOKLYN_RR_INFO="'${BROOKLYNHOST}':'${BROOKLYNDB}':${BROOKLYNPLIST}"
export BROOKLYN_RR_INFO
TOKYO_RR_INFO="'${TOKYOHOST}':'${TOKYODB}':${TOKYOPLIST}"
export TOKYO_RR_INFO
# --------------------------------------------------
# Scenario C
# --------------------------------------------------
#
# Presteps:
#
# " ${TORONTOHOST}: OpB1.1. Create Database ${TORONTODB}"
empmkdb ${TORONTODB}
# "$TORONTODB: OpB1.2. create table ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
create ${TORONTOPLIST} (\
prod_id integer not null, \
prod_name character(30,1) not null, \
prod_price float,\
prod_lang character(15,1));
@
# "$TORONTODB: OpB1.3. insert data into ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
insert into ${TORONTOPLIST} values (1, 'DB1', 4000, 'english');
insert into ${TORONTOPLIST} values (3, 'DB2', 7000, 'english');
@
# "$NEWYORKHOST: OpB1.4. Create database ${NEWYORKDB}"
empmkdb ${NEWYORKDB}
# "------------------- OpB1 ------------------------------------"
# "${TORONTODB}: OpB1. Define master table [${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
alter ${TORONTOPLIST} change table type to MASTER;
@
# "------------------- OpB2 ------------------------------------"
# "${TORONTOHOST}: OpB2. Configure Network Server on RMT Side [${TORONTOREPSERVER}] "
# "OpB2.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB3 ------------------------------------"
# "OpB3. Start Replication Master Server ${TORONTOREPSERVER}"
empsvadm ${TORONTOREPSERVER} start
# "------------------- OpB4 ------------------------------------"
# "${TORONTODB}: OpB4.
# Create Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
create replication replicate \
${NEWYORK_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpB5 ------------------------------------"
# Steps of OpB5 are to be executed if ${NEWYORKHOST} and ${TORONTOHOST} are
# different. Otherwise, these is no need to create the files once more.
# "${NEWYORKHOST}: OpB5. Configure Network Server on RRT Side [${NEWYORKPLIST}] "
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB6 ------------------------------------"
# "${NEWYORKDB}: OpB6. Create Replicate Table and Load Data [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${NEWYORKDB} << @
create and insert into replicate table \
${NEWYORKPLIST} \
FROM ${TORONTO_RM_INFO};
@
# "------------------- OpB7 ------------------------------------"
#
# ${NEWYORKHOST}: OpB7. Configure Network Server on RMT Side (NewYorkRepServer)
# "OpB7.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB8 ------------------------------------"
#
# ${NEWYORKHOST}: OpB8. Start Replication Master Server (NewYorkRepServer)
empsvadm ${NEWYORKREPSERVER} start
# "------------------- OpB9 ------------------------------------"
# ${NEWYORKDB}: OpB9. Create Replication Replicate (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${NEWYORKDB} << @
create replication replicate \
${BROOKLYN_RR_INFO} \
ON ${NEWYORKPLIST};
@
# ------------------- OpB10 ------------------------------------
# ${BROOKLYNHOST}: OpB10. Configure Network Server on RRT Side [${BROOKLYNPLIST}]
# ******************* ATTENTION: **********************
# Execute OpB10 only if ${NEWYORKHOST} is different from ${BROOKLYNHOST}
# ******************************************************
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
MSNETSERVEREND
@
# Pre-step 11.1: Create database ${BROOKLYNDB}
empmkdb ${BROOKLYNDB}
# "------------------- OpB11 ------------------------------------"
# ${BROOKLYNDB}: OpB11. Create Replicate Table (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${BROOKLYNDB} << @
create and insert into replicate table \
${BROOKLYNPLIST} \
FROM ${NEWYORK_RM_INFO};
@
# "------------------- OpC1 ------------------------------------"
#
# TORONTODB: OpC1. Create Replication Replicate (BROOKLYNPLIST, TORONTOPLIST)
empbatch ${TORONTODB} << @
CREATE REPLICATION REPLICATE \
${BROOKLYN_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpC2 ------------------------------------"
# "${BROOKLYNHOST}: OpC2. Configure Network Server on RRT Side [${BROOKLYNPLIST}] "
# Execute step C2 only if ${TORONTOHOST} is different from ${BROOKLYNHOST}
#
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpC3 ------------------------------------"
#
# $BrooklynDB: OpC3. Create Replication Master (${TORONTOPLIST}, ${BROOKLYNPLIST})
empbatch ${BROOKLYNDB} << @
CREATE REPLICATION MASTER \
${TORONTO_RM_INFO} \
ON ${BROOKLYNPLIST};
@
# "------------------- OpC4 ------------------------------------"
#
# "${BROOKLYNDB}: OpC4. View Replication Table and Synch Status [${BROOKLYNPLIST}] "
empbatch ${BROOKLYNDB} << @
display table ${BROOKLYNPLIST} all;
@
# "Check the contents of the Replication Replicate Table ${BROOKLYNPLIST}"
empbatch ${BROOKLYNDB} << @
select * from ${BROOKLYNPLIST};
@
B.4.2 Other possible operations in scenario C
# "------------------------------------------------------------"
# "the rest of the commands undo the effects of Scenario C"
# "------------------------------------------------------------"
# $BrooklynDB: Drop Replication Master (${BROOKLYNPLIST}, ${TORONTOPLIST})
# empcmd ${BROOKLYNDB} "DROP REPLICATION MASTER \
# ${TORONTO_RM_INFO} \
# ON ${BROOKLYNPLIST};"
# "${TORONTODB}: Drop Replication Replicate [${TORONTOPLIST}, ${BROOKLYNPLIST}] "
# empcmd ${TORONTODB} "DROP REPLICATION REPLICATE \
# ${BROOKLYN_RR_INFO} \
# ON ${TORONTOPLIST};"
# "${BROOKLYNDB}: Drop Replicate Table [${BROOKLYNPLIST}] "
# empcmd ${BROOKLYNDB} "DROP TABLE ${BROOKLYNPLIST};"
# "${TORONTODB}: Unauthorize Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
# empcmd ${TORONTODB} "DROP REPLICATION REPLICATE \
# ${NEWYORK_RR_INFO} \
# ON ${TORONTOPLIST};"
# "${TORONTOHOST}: Stop Replication Master Server [${TORONTOREPSERVER}]"
empsvadm ${TORONTOREPSERVER} stop
# "${TORONTODB}: Undefine Master Table [${TORONTOPLIST}]"
# empcmd ${TORONTODB} "ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO NORMAL;"
#---------------------------------------------------------------
# "Post Steps to completely clear the effects"
# "Remove database ${NEWYORKDB}"
# emprmdb ${NEWYORKDB}
# "Remove database ${TORONTODB}"
# emprmdb ${TORONTODB}
# "Remove database ${BROOKLYNDB}
# emprmdb ${BROOKLYNDB}
# "remove server log file"
# rm ${TORONTOREPSERVER}.log
B.5 Scenario D
B.5.1 Operations for Creating the Scenario D
#!/bin/sh
# Set the following variables to their appropriate values:
# Directories, Host Names, Replication Master Server Names
# ___Directories_______________________
# Set these variables to the path of the database directory
# Their default value is the current directory.
# For example if Database directory for TorontoDB is
# "/usr/empress/data/TorontoDB", then TORONTOPWD must be set to
# "/usr/empress/data"
#
TORONTOPWD=`pwd`
export TORONTOPWD
NEWYORKPWD=`pwd`
export NEWYORKPWD
BROOKLYNPWD=`pwd`
export BROOKLYNPWD
TOKYOPWD=`pwd`
export TOKYOPWD
# __Host Names_____________________________________________
# These will contain the network address and host names of their corresponding
# hosts. Their default is localhost
# For example if the host that TorontoDB will reside is "toronto.empress.com",
# then TORONTOHOST must be set to "toronto.empress.com" (or to "toronto" if
# all the databases are using the same network domain).
#
TORONTOHOST=`hostname`
export TORONTOHOST
NEWYORKHOST=`hostname`
export NEWYORKHOST
BROOKLYNHOST=`hostname`
export BROOKLYNHOST
TOKYOHOST=`hostname`
export TOKYOHOST
# __Replication Master Servers___________
# Name of the Replication Master Servers
#
TORONTOREPSERVER=TorontoRepServer
export TORONTOREPSERVER
NEWYORKREPSERVER=NewYorkRepServer
export NEWYORKREPSERVER
# ___Others____________________________
#
SERVERTYPE=replication_master
export SERVERTYPE
NETSERVER="${HOME}/.empress/netserver.cfg"
export NETSERVER
# __DB Names________________________________________________
TORONTODB="${TORONTOPWD}/TorontoDB"
export TORONTODB
NEWYORKDB="${NEWYORKPWD}/NewYorkDB"
export NEWYORKDB
BROOKLYNDB="${BROOKLYNPWD}/BrooklynDB"
export BROOKLYNDB
TOKYODB="${TOKYOPWD}/TokyoDB"
export TOKYODB
# __Table Names______________________________________________
TORONTOPLIST=TorontoPList
export TORONTOPLIST
NEWYORKPLIST=NewYorkPList
export NEWYORKPLIST
BROOKLYNPLIST=BrooklynPList
export BROOKLYNPLIST
TOKYOPLIST=TokyoPList
export TOKYOPLIST
# __Access Information__________________________________________
# These variables are to simplify typing the access information to
# Replication Maste and Replication Replicates.
#
TORONTO_RM_INFO="'${TORONTOREPSERVER}':'${TORONTODB}':${TORONTOPLIST}"
export TORONTO_RM_INFO
NEWYORK_RR_INFO="'${NEWYORKHOST}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RR_INFO
NEWYORK_RM_INFO="'${NEWYORKREPSERVER}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RM_INFO
BROOKLYN_RR_INFO="'${BROOKLYNHOST}':'${BROOKLYNDB}':${BROOKLYNPLIST}"
export BROOKLYN_RR_INFO
TOKYO_RR_INFO="'${TOKYOHOST}':'${TOKYODB}':${TOKYOPLIST}"
export TOKYO_RR_INFO
# --------------------------------------------------
# Scenario D
# --------------------------------------------------
#
# Presteps:
#
# " ${TORONTOHOST}: OpB1.1. Create Database ${TORONTODB}"
empmkdb ${TORONTODB}
# "$TORONTODB: OpB1.2. create table ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
create ${TORONTOPLIST} (\
prod_id integer not null, \
prod_name character(30,1) not null, \
prod_price float,\
prod_lang character(15,1));
@
# "$TORONTODB: OpB1.3. insert data into ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
insert into ${TORONTOPLIST} values (1, 'DB1', 4000, 'english');
insert into ${TORONTOPLIST} values (3, 'DB2', 7000, 'english');
@
# "$NEWYORKHOST: OpB1.4. Create database ${NEWYORKDB}"
empmkdb ${NEWYORKDB}
# "------------------- OpB1 ------------------------------------"
# "${TORONTODB}: OpB1. Define master table [${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
alter ${TORONTOPLIST} change table type to MASTER;
@
# "------------------- OpB2 ------------------------------------"
# "${TORONTOHOST}: OpB2. Configure Network Server on RMT Side [${TORONTOREPSERVER}] "
# "OpB2.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB3 ------------------------------------"
# "OpB3. Start Replication Master Server ${TORONTOREPSERVER}"
empsvadm ${TORONTOREPSERVER} start
# "------------------- OpB4 ------------------------------------"
# "${TORONTODB}: OpB4.
# Create Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
create replication replicate \
${NEWYORK_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpB5 ------------------------------------"
# Steps of OpB5 are to be executed if ${NEWYORKHOST} and ${TORONTOHOST} are
# different. Otherwise, these is no need to create the files once more.
# "${NEWYORKHOST}: OpB5. Configure Network Server on RRT Side [${NEWYORKPLIST}] "
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB6 ------------------------------------"
# "${NEWYORKDB}: OpB6. Create Replicate Table and Load Data [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${NEWYORKDB} << @
create and insert into replicate table \
${NEWYORKPLIST} \
FROM ${TORONTO_RM_INFO};
@
# "------------------- OpB7 ------------------------------------"
#
# ${NEWYORKHOST}: OpB7. Configure Network Server on RMT Side (NewYorkRepServer)
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB8 ------------------------------------"
#
# ${NEWYORKHOST}: OpB8. Start Replication Master Server (NewYorkRepServer)
empsvadm ${NEWYORKREPSERVER} start
# "------------------- OpB9 ------------------------------------"
# ${NEWYORKDB}: OpB9. Create Replication Replicate (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${NEWYORKDB} << @
create replication replicate \
${BROOKLYN_RR_INFO} \
ON ${NEWYORKPLIST};
@
# "------------------- OpB10 ------------------------------------"
# ${BROOKLYNHOST}: OpB10. Configure Network Server on RRT Side [${BROOKLYNPLIST}]
# ******************* ATTENTION: **********************************
# Execute OpB10 only if ${NEWYORKHOST} is different from ${BROOKLYNHOST}
# ******************************************************************
# "OpB10.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
MSNETSERVEREND
@
# Pre-step 11.1: Create database ${BROOKLYNDB}
empmkdb ${BROOKLYNDB}
# "------------------- OpB11 ------------------------------------"
# ${BROOKLYNDB}: OpB11. Create Replicate Table (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${BROOKLYNDB} << @
create and insert into replicate table \
${BROOKLYNPLIST} \
FROM ${NEWYORK_RM_INFO}";
@
# "------------------- OpC1 ------------------------------------"
#
# TORONTODB: OpC1. Create Replication Replicate (BROOKLYNPLIST, TORONTOPLIST)
empbatch ${TORONTODB} << @
CREATE REPLICATION REPLICATE \
${BROOKLYN_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpC2 ------------------------------------"
# "${BROOKLYNHOST}: OpC2. Configure Network Server on RRT Side [${BROOKLYNPLIST}] "
# Execute step C2 only if ${TORONTOHOST} is different from ${BROOKLYNHOST}
#
# "OpC2.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpC3 ------------------------------------"
#
# $BrooklynDB: OpC3. Create Replication Master (${TORONTOPLIST}, ${BROOKLYNPLIST})
empbatch ${BROOKLYNDB} << @
CREATE REPLICATION MASTER \
${TORONTO_RM_INFO} \
ON ${BROOKLYNPLIST};
@
# "------------------- OpC4 ------------------------------------"
#
# "${BROOKLYNDB}: OpC4. View Replication Table and Synch Status [${BROOKLYNPLIST}] "
empbatch ${BROOKLYNDB} << @
display table ${BROOKLYNPLIST} all;
@
# "Check the contents of the Replication Replicate Table ${BROOKLYNPLIST}"
empbatch ${BROOKLYNDB} << @
select * from ${BROOKLYNPLIST};
@
# "------------------- OpD1 ------------------------------------"
# $BrooklynDB: OpD1. Change the Replication Master Order [BrooklynPList, order]
empbatch ${BROOKLYNDB} << @
ALTER TABLE ${BROOKLYNPLIST} \
CHANGE REPLICATION MASTER ORDER \
${NEWYORK_RM_INFO} 4, ${TORONTO_RM_INFO} 3;
@
# "------------------- OpD2 ------------------------------------"
# "${BROOKLYNHOST}: OpD2. Perform a Synchronization [${BROOKLYNPLIST}]"
emprepsync -v ${BROOKLYNDB} ${BROOKLYNPLIST}
# "------------------- OpD3 ------------------------------------"
# "${BROOKLYNDB}: OpD3. View Replication Table and Synch Status [${BROOKLYNPLIST}] "
empbatch ${BROOKLYNDB} << @
display table ${BROOKLYNPLIST} all;
@
# "Check the contents of the Replication Replicate Table ${BROOKLYNPLIST}"
empbatch ${BROOKLYNDB} << @
select * from ${BROOKLYNPLIST};
@
B.5.2 Other possible operations in scenario D
# "------------------------------------------------------------"
# "the rest of the commands undo the effects of Scenario 1"
# "------------------------------------------------------------"
# $BrooklynDB: Unclaim Replication Master (${BROOKLYNPLIST}, ${TORONTOPLIST})
# empcmd ${BROOKLYNDB} "DROP REPLICATION MASTER \
# ${TORONTO_RM_INFO} \
# ON ${BROOKLYNPLIST};"
# "${TORONTODB}: Unauthorize Replication Replicate [${TORONTOPLIST}, ${BROOKLYNPLIST}] "
# empcmd ${TORONTODB} "DROP REPLICATION REPLICATE \
# ${BROOKLYN_RR_INFO} \
# ON ${TORONTOPLIST};"
# "${BROOKLYNDB}: Drop Replicate Table [${BROOKLYNPLIST}] "
# empcmd ${BROOKLYNDB} "DROP TABLE ${BROOKLYNPLIST};"
# "${TORONTODB}: Unauthorize Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
# empcmd ${TORONTODB} "DROP REPLICATION REPLICATE \
# ${NEWYORK_RR_INFO} \
# ON ${TORONTOPLIST};"
# "${TORONTOHOST}: Stop Replication Master Server [${TORONTOREPSERVER}]"
# empsvadm ${TORONTOREPSERVER} stop
# "${TORONTODB}: Undefine Master Table [${TORONTOPLIST}]"
# empcmd ${TORONTODB} "ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO NORMAL;"
#---------------------------------------------------------------
# "Post Steps to completely clear the effects"
# "Remove database ${NEWYORKDB}"
# emprmdb ${NEWYORKDB}
# "Remove database ${TORONTODB}"
# emprmdb ${TORONTODB}
# "Remove database ${BROOKLYNDB}
# emprmdb ${BROOKLYNDB}
# "remove server log file"
# rm ${TORONTOREPSERVER}.log
B.6 Scenario E
B.6.1 Operations for Creating the Scenario E
#!/bin/sh
# Set the following variables to their appropriate values:
# Directories, Host Names, Replication Master Server Names
# ___Directories_______________________
# Set these variables to the path of the database directory
# Their default value is the current directory.
# For example if Database directory for TorontoDB is
# "/usr/empress/data/TorontoDB", then TORONTOPWD must be set to
# "/usr/empress/data"
#
TORONTOPWD=`pwd`
export TORONTOPWD
NEWYORKPWD=`pwd`
export NEWYORKPWD
BROOKLYNPWD=`pwd`
export BROOKLYNPWD
TOKYOPWD=`pwd`
export TOKYOPWD
# __Host Names_____________________________________________
# These will contain the network address and host names of their corresponding
# hosts. Their default is localhost
# For example if the host that TorontoDB will reside is "toronto.empress.com",
# then TORONTOHOST must be set to "toronto.empress.com" (or to "toronto" if
# all the databases are using the same network domain).
#
TORONTOHOST=`hostname`
export TORONTOHOST
NEWYORKHOST=`hostname`
export NEWYORKHOST
BROOKLYNHOST=`hostname`
export BROOKLYNHOST
TOKYOHOST=`hostname`
export TOKYOHOST
# __Replication Master Servers___________
# Name of the Replication Master Servers
#
TORONTOREPSERVER=TorontoRepServer
export TORONTOREPSERVER
NEWYORKREPSERVER=NewYorkRepServer
export NEWYORKREPSERVER
# ___Others____________________________
#
SERVERTYPE=replication_master
export SERVERTYPE
NETSERVER="${HOME}/.empress/netserver.cfg"
export NETSERVER
# __DB Names________________________________________________
TORONTODB="${TORONTOPWD}/TorontoDB"
export TORONTODB
NEWYORKDB="${NEWYORKPWD}/NewYorkDB"
export NEWYORKDB
BROOKLYNDB="${BROOKLYNPWD}/BrooklynDB"
export BROOKLYNDB
TOKYODB="${TOKYOPWD}/TokyoDB"
export TOKYODB
# __Table Names______________________________________________
TORONTOPLIST=TorontoPList
export TORONTOPLIST
NEWYORKPLIST=NewYorkPList
export NEWYORKPLIST
BROOKLYNPLIST=BrooklynPList
export BROOKLYNPLIST
TOKYOPLIST=TokyoPList
export TOKYOPLIST
# __Access Information__________________________________________
# These variables are to simplify typing the access information to
# Replication Maste and Replication Replicates.
#
TORONTO_RM_INFO="'${TORONTOREPSERVER}':'${TORONTODB}':${TORONTOPLIST}"
export TORONTO_RM_INFO
NEWYORK_RR_INFO="'${NEWYORKHOST}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RR_INFO
NEWYORK_RM_INFO="'${NEWYORKREPSERVER}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RM_INFO
BROOKLYN_RR_INFO="'${BROOKLYNHOST}':'${BROOKLYNDB}':${BROOKLYNPLIST}"
export BROOKLYN_RR_INFO
TOKYO_RR_INFO="'${TOKYOHOST}':'${TOKYODB}':${TOKYOPLIST}"
export TOKYO_RR_INFO
# --------------------------------------------------
# Scenario E
# --------------------------------------------------
#
# Presteps:
#
# " ${TORONTOHOST}: OpB1.1. Create Database ${TORONTODB}"
empmkdb ${TORONTODB}
# "$TORONTODB: OpB1.2. create table ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
create ${TORONTOPLIST} (\
prod_id integer not null, \
prod_name character(30,1) not null, \
prod_price float,\
prod_lang character(15,1));
@
# "$TORONTODB: OpB1.3. insert data into ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
insert into ${TORONTOPLIST} values (1, 'DB1', 4000, 'english');
insert into ${TORONTOPLIST} values (3, 'DB2', 7000, 'english');
@
# "$NEWYORKHOST: OpB1.4. Create database ${NEWYORKDB}"
empmkdb ${NEWYORKDB}
# "------------------- OpB1 ------------------------------------"
# "${TORONTODB}: OpB1. Define master table [${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
alter ${TORONTOPLIST} change table type to MASTER;
@
# "------------------- OpB2 ------------------------------------"
# "${TORONTOHOST}: OpB2. Configure Network Server on RMT Side [${TORONTOREPSERVER}] "
# "OpB2.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB3 ------------------------------------"
# "OpB3. Start Replication Master Server ${TORONTOREPSERVER}"
empsvadm ${TORONTOREPSERVER} start
# "------------------- OpB4 ------------------------------------"
# "${TORONTODB}: OpB4.
# Create Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
create replication replicate \
${NEWYORK_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpB5 ------------------------------------"
# Steps of OpB5 are to be executed if ${NEWYORKHOST} and ${TORONTOHOST} are
# different. Otherwise, these is no need to create the files once more.
# "${NEWYORKHOST}: OpB5. Configure Network Server on RRT Side [${NEWYORKPLIST}] "
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB6 ------------------------------------"
# "${NEWYORKDB}: OpB6. Create Replicate Table and Load Data [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${NEWYORKDB} << @
create and insert into replicate table \
${NEWYORKPLIST} \
FROM ${TORONTO_RM_INFO};
@
# "------------------- OpB7 ------------------------------------"
#
# ${NEWYORKHOST}: OpB7. Configure Network Server on RMT Side (NewYorkRepServer)
# "OpB7.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB8 ------------------------------------"
#
# ${NEWYORKHOST}: OpB8. Start Replication Master Server (NewYorkRepServer)
empsvadm ${NEWYORKREPSERVER} start
# "------------------- OpB9 ------------------------------------"
# ${NEWYORKDB}: OpB9. Create Replication Replicate (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${NEWYORKDB} << @
create replication replicate \
${BROOKLYN_RR_INFO} \
ON ${NEWYORKPLIST};
@
# "------------------- OpB10 ------------------------------------"
# ${BROOKLYNHOST}: OpB10. Configure Network Server on RRT Side [${BROOKLYNPLIST}]
# ******************* ATTENTION: **********************************
# Execute OpB10 only if ${NEWYORKHOST} is different from ${BROOKLYNHOST}
# ******************************************************************
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
MSNETSERVEREND
@
# Pre-step 11.1: Create database ${BROOKLYNDB}
empmkdb ${BROOKLYNDB}
# "------------------- OpB11 ------------------------------------"
# ${BROOKLYNDB}: OpB11. Create Replicate Table (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${BROOKLYNDB} << @
create and insert into replicate table \
${BROOKLYNPLIST} \
FROM ${NEWYORK_RM_INFO};
@
# "------------------- OpC1 ------------------------------------"
#
# TORONTODB: OpC1. Create Replication Replicate (BROOKLYNPLIST, TORONTOPLIST)
empbatch ${TORONTODB} << @
CREATE REPLICATION REPLICATE \
${BROOKLYN_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpC2 ------------------------------------"
# "${BROOKLYNHOST}: OpC2. Configure Network Server on RRT Side [${BROOKLYNPLIST}] "
# Execute step C2 only if ${TORONTOHOST} is different from ${BROOKLYNHOST}
#
# "OpC2.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpC3 ------------------------------------"
#
# $BrooklynDB: OpC3. Create Replication Master (${TORONTOPLIST}, ${BROOKLYNPLIST})
empcmd ${BROOKLYNDB} "CREATE REPLICATION MASTER \
${TORONTO_RM_INFO} \
ON ${BROOKLYNPLIST};"
# "------------------- OpC4 ------------------------------------"
#
# "${BROOKLYNDB}: OpC4. View Replication Table and Synch Status [${BROOKLYNPLIST}] "
empbatch ${BROOKLYNDB} << @
display table ${BROOKLYNPLIST} all;
@
# "Check the contents of the Replication Replicate Table ${BROOKLYNPLIST}"
empbatch ${BROOKLYNDB} << @
select * from ${BROOKLYNPLIST};
@
# "------------------- OpD1 ------------------------------------"
# $BrooklynDB: OpD1. Change the Replication Master Order [BrooklynPList, order]
empbatch ${BROOKLYNDB} << @
ALTER TABLE ${BROOKLYNPLIST} \
CHANGE REPLICATION MASTER ORDER \
${NEWYORK_RM_INFO} 4, ${TORONTO_RM_INFO} 3;
@
# "------------------- OpE1 ------------------------------------"
#
# $BrooklynDB: OpE1. Disable the Replication Master (BrooklynPList, TorontoPList)
empbatch ${BROOKLYNDB} << @
ALTER TABLE ${BROOKLYNPLIST}
DISABLE REPLICATION MASTER ${TORONTO_RM_INFO};
@
# "------------------- OpE3 ------------------------------------"
#
# "${BROOKLYNHOST}: OpE3. Perform a Synchronization [${BROOKLYNPLIST}]"
emprepsync -v ${BROOKLYNDB} ${BROOKLYNPLIST}
# "------------------- OpE4 ------------------------------------"
#
# "${BROOKLYNDB}: OpE4. View Replication Table and Synchronization Status [${BROOKLYNPLIST}] "
empbatch ${BROOKLYNDB} << @
display table ${BROOKLYNPLIST} all;
@
# "Check the contents of the Replication Replicate Table ${BROOKLYNPLIST}"
empbatch ${BROOKLYNDB} << @
select * from ${BROOKLYNPLIST};
@
B.6.2 Other possible operations in scenario E
# "------------------- OpE2 ------------------------------------"
# $BrooklynDB: OpE2. Enable the Replication Master (BrooklynPList, TorontoPList)
empbatch ${BROOKLYNDB} << @
ALTER TABLE ${BROOKLYNPLIST}
ENABLE REPLICATION MASTER ${TORONTO_RM_INFO};
@
B.7 Scenario F
B.7.1 Operations for Creating the Scenario F
#!/bin/sh
# Set the following variables to their appropriate values:
# Directories, Host Names, Replication Master Server Names
# ___Directories_______________________
# Set these variables to the path of the database directory
# Their default value is the current directory.
# For example if Database directory for TorontoDB is
# "/usr/empress/data/TorontoDB", then TORONTOPWD must be set to
# "/usr/empress/data"
#
TORONTOPWD=`pwd`
export TORONTOPWD
NEWYORKPWD=`pwd`
export NEWYORKPWD
BROOKLYNPWD=`pwd`
export BROOKLYNPWD
TOKYOPWD=`pwd`
export TOKYOPWD
# __Host Names_____________________________________________
# These will contain the network address and host names of their corresponding
# hosts. Their default is localhost
# For example if the host that TorontoDB will reside is "toronto.empress.com",
# then TORONTOHOST must be set to "toronto.empress.com" (or to "toronto" if
# all the databases are using the same network domain).
#
TORONTOHOST=`hostname`
export TORONTOHOST
NEWYORKHOST=`hostname`
export NEWYORKHOST
BROOKLYNHOST=`hostname`
export BROOKLYNHOST
TOKYOHOST=`hostname`
export TOKYOHOST
# __Replication Master Servers___________
# Name of the Replication Master Servers
#
TORONTOREPSERVER=TorontoRepServer
export TORONTOREPSERVER
NEWYORKREPSERVER=NewYorkRepServer
export NEWYORKREPSERVER
# ___Others____________________________
#
SERVERTYPE=replication_master
export SERVERTYPE
NETSERVER="${HOME}/.empress/netserver.cfg"
export NETSERVER
# __DB Names________________________________________________
TORONTODB="${TORONTOPWD}/TorontoDB"
export TORONTODB
NEWYORKDB="${NEWYORKPWD}/NewYorkDB"
export NEWYORKDB
BROOKLYNDB="${BROOKLYNPWD}/BrooklynDB"
export BROOKLYNDB
TOKYODB="${TOKYOPWD}/TokyoDB"
export TOKYODB
# __Table Names______________________________________________
TORONTOPLIST=TorontoPList
export TORONTOPLIST
NEWYORKPLIST=NewYorkPList
export NEWYORKPLIST
BROOKLYNPLIST=BrooklynPList
export BROOKLYNPLIST
TOKYOPLIST=TokyoPList
export TOKYOPLIST
# __Access Information__________________________________________
# These variables are to simplify typing the access information to
# Replication Maste and Replication Replicates.
#
TORONTO_RM_INFO="'${TORONTOREPSERVER}':'${TORONTODB}':${TORONTOPLIST}"
export TORONTO_RM_INFO
NEWYORK_RR_INFO="'${NEWYORKHOST}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RR_INFO
NEWYORK_RM_INFO="'${NEWYORKREPSERVER}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RM_INFO
BROOKLYN_RR_INFO="'${BROOKLYNHOST}':'${BROOKLYNDB}':${BROOKLYNPLIST}"
export BROOKLYN_RR_INFO
TOKYO_RR_INFO="'${TOKYOHOST}':'${TOKYODB}':${TOKYOPLIST}"
export TOKYO_RR_INFO
# --------------------------------------------------
# Scenario F
# --------------------------------------------------
#
# Presteps:
#
# " ${TORONTOHOST}: OpB1.1. Create Database ${TORONTODB}"
empmkdb ${TORONTODB}
# "$TORONTODB: OpB1.2. create table ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
create ${TORONTOPLIST} (\
prod_id integer not null, \
prod_name character(30,1) not null, \
prod_price float,\
prod_lang character(15,1));
@
# "$TORONTODB: OpB1.3. insert data into ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
insert into ${TORONTOPLIST} values (1, 'DB1', 4000, 'english');
insert into ${TORONTOPLIST} values (3, 'DB2', 7000, 'english');
@
# "$NEWYORKHOST: OpB1.4. Create database ${NEWYORKDB}"
empmkdb ${NEWYORKDB}
# "------------------- OpB1 ------------------------------------"
# "${TORONTODB}: OpB1. Define master table [${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
alter ${TORONTOPLIST} change table type to MASTER;
@
# "------------------- OpB2 ------------------------------------"
# "${TORONTOHOST}: OpB2. Configure Network Server on RMT Side [${TORONTOREPSERVER}] "
# "OpB2.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB3 ------------------------------------"
# "OpB3. Start Replication Master Server ${TORONTOREPSERVER}"
empsvadm ${TORONTOREPSERVER} start
# "------------------- OpB4 ------------------------------------"
# "${TORONTODB}: OpB4.
# Create Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${TORONTODB} << @
create replication replicate \
${NEWYORK_RR_INFO} \
ON ${TORONTOPLIST};
@
# "------------------- OpB5 ------------------------------------"
# Steps of OpB5 are to be executed if ${NEWYORKHOST} and ${TORONTOHOST} are
# different. Otherwise, these is no need to create the files once more.
# "${NEWYORKHOST}: OpB5. Configure Network Server on RRT Side [${NEWYORKPLIST}] "
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB6 ------------------------------------"
# "${NEWYORKDB}: OpB6. Create Replicate Table and Load Data [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${NEWYORKDB} << @
create and insert into replicate table \
${NEWYORKPLIST} \
FROM ${TORONTO_RM_INFO};
@
# "------------------- OpB7 ------------------------------------"
#
# ${NEWYORKHOST}: OpB7. Configure Network Server on RMT Side (NewYorkRepServer)
# "OpB7.1 Network Server Config File"
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat >> ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpB8 ------------------------------------"
#
# ${NEWYORKHOST}: OpB8. Start Replication Master Server (NewYorkRepServer)
empsvadm ${NEWYORKREPSERVER} start
# "------------------- OpB9 ------------------------------------"
# ${NEWYORKDB}: OpB9. Create Replication Replicate (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${NEWYORKDB} << @
create replication replicate \
${BROOKLYN_RR_INFO} \
ON ${NEWYORKPLIST};
@
# "------------------- OpB10 ------------------------------------"
# ${BROOKLYNHOST}: OpB10. Configure Network Server on RRT Side [${BROOKLYNPLIST}]
# ******************* ATTENTION: **********************************
# Execute OpB10 only if ${NEWYORKHOST} is different from ${BROOKLYNHOST}
# ******************************************************************
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${NEWYORKREPSERVER}
TYPE=${SERVERTYPE}
HOST=${NEWYORKHOST}
PORT_ADMIN=12350
PORT_SERVICE=12355
MSNETSERVEREND
@
# Pre-step 11.1: Create database ${BROOKLYNDB}
empmkdb ${BROOKLYNDB}
# "------------------- OpB11 ------------------------------------"
# ${BROOKLYNDB}: OpB11. Create Replicate Table (${BROOKLYNPLIST}, ${NEWYORKPLIST})
empbatch ${BROOKLYNDB} << @
create and insert into replicate table \
${BROOKLYNPLIST} \
FROM ${NEWYORK_RM_INFO};
@
# "------------------- OpF1 ------------------------------------"
#
# "${NEWYORKDB}: OpF1. Define master table [${NEWYORKPLIST}] "
empbatch ${NEWYORKDB} << @
alter ${NEWYORKPLIST} change table type to MASTER;
@
B.7.2 Other possible operations in scenario F
# "------------------- OpF2 ------------------------------------"
#
# NewYorkDB: OpF2. Create Replication Replicate (TorontoPList, NewYorkPList)
empcmd ${NEWYORKDB} "CREATE REPLICATION REPLICATE ${TORONTO_RR_INFO} ON ${NEWYORKPLIST};"
# TorontoDB: OpF3. Create Replication Master (TorontoPList, BrooklynPList)
empcmd ${TORONTODB} "CREATE REPLICATION MASTER ${NEWYORK_RM_INFO} ON ${TORONTOPLIST};"
# TorontoDB: OpF4. Change Table type to Replicate (NewYorkPList)
empbatch ${TORONTODB} << @
ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO REPLICATE;
@
# TorontoHost: OpF5. Perform a Synchronization (TorontoPList)
emprepsync ${TORONTODB} ${TORONTOPLIST}
# TorontoDB: OpF6. Change Table type to Master (TorontoPList)
empcmd ${TORONTODB} "ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO MASTER;"
# NewYorkDB: OpF7. Change Table type to Replicate (NewYorkPList)
empcmd ${NEWYORKDB} "ALTER TABLE ${NEWYORKPLIST} CHANGE TABLE TYPE TO REPLICATE;
# "${BROOKLYNDB}: Drop Replicate Table [${BROOKLYNPLIST}] "
# empcmd ${BROOKLYNDB} "DROP TABLE ${BROOKLYNPLIST};"
# "${TORONTODB}: Unauthorize Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
# empcmd ${TORONTODB} "DROP REPLICATION REPLICATE \
# ${NEWYORK_RR_INFO} \
# ON ${TORONTOPLIST};"
# "${TORONTOHOST}: Stop Replication Master Server [${TORONTOREPSERVER}]"
# empsvadm ${TORONTOREPSERVER} stop
# "${TORONTODB}: Undefine Master Table [${TORONTOPLIST}]"
# empcmd ${TORONTODB} "ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO NORMAL;"
#---------------------------------------------------------------
# "Post Steps to completely clear the effects"
# "Remove database ${NEWYORKDB}"
# emprmdb ${NEWYORKDB}
# "Remove database ${TORONTODB}"
# emprmdb ${TORONTODB}
# "Remove database ${BROOKLYNDB}
# emprmdb ${BROOKLYNDB}
# "remove server log file"
# rm ${TORONTOREPSERVER}.log
B.8 Scenario G
B.8.1 Operations for Creating the Scenario G
#!/bin/sh
# Set the following variables to their appropriate values:
# Directories, Host Names, Replication Master Server Names
# ___Directories_______________________
# Set these variables to the path of the database directory
# Their default value is the current directory.
# For example if Database directory for TorontoDB is
# "/usr/empress/data/TorontoDB", then TORONTOPWD must be set to
# "/usr/empress/data"
#
TORONTOPWD=`pwd`
export TORONTOPWD
NEWYORKPWD=`pwd`
export NEWYORKPWD
BROOKLYNPWD=`pwd`
export BROOKLYNPWD
TOKYOPWD=`pwd`
export TOKYOPWD
# __Host Names_____________________________________________
# These will contain the network address and host names of their corresponding
# hosts. Their default is localhost
# For example if the host that TorontoDB will reside is "toronto.empress.com",
# then TORONTOHOST must be set to "toronto.empress.com" (or to "toronto" if
# all the databases are using the same network domain).
#
TORONTOHOST=`hostname`
export TORONTOHOST
NEWYORKHOST=`hostname`
export NEWYORKHOST
BROOKLYNHOST=`hostname`
export BROOKLYNHOST
TOKYOHOST=`hostname`
export TOKYOHOST
# __Replication Master Servers___________
# Name of the Replication Master Servers
#
TORONTOREPSERVER=TorontoRepServer
export TORONTOREPSERVER
NEWYORKREPSERVER=NewYorkRepServer
export NEWYORKREPSERVER
# ___Others____________________________
#
SERVERTYPE=replication_master
export SERVERTYPE
NETSERVER="${HOME}/.empress/netserver.cfg"
export NETSERVER
# __DB Names________________________________________________
TORONTODB="${TORONTOPWD}/TorontoDB"
export TORONTODB
NEWYORKDB="${NEWYORKPWD}/NewYorkDB"
export NEWYORKDB
BROOKLYNDB="${BROOKLYNPWD}/BrooklynDB"
export BROOKLYNDB
TOKYODB="${TOKYOPWD}/TokyoDB"
export TOKYODB
# __Table Names______________________________________________
TORONTOPLIST=TorontoPList
export TORONTOPLIST
NEWYORKPLIST=NewYorkPList
export NEWYORKPLIST
BROOKLYNPLIST=BrooklynPList
export BROOKLYNPLIST
TOKYOPLIST=TokyoPList
export TOKYOPLIST
# __Access Information__________________________________________
# These variables are to simplify typing the access information to
# Replication Maste and Replication Replicates.
#
TORONTO_RM_INFO="'${TORONTOREPSERVER}':'${TORONTODB}':${TORONTOPLIST}"
export TORONTO_RM_INFO
NEWYORK_RR_INFO="'${NEWYORKHOST}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RR_INFO
NEWYORK_RM_INFO="'${NEWYORKREPSERVER}':'${NEWYORKDB}':${NEWYORKPLIST}"
export NEWYORK_RM_INFO
BROOKLYN_RR_INFO="'${BROOKLYNHOST}':'${BROOKLYNDB}':${BROOKLYNPLIST}"
export BROOKLYN_RR_INFO
TOKYO_RR_INFO="'${TOKYOHOST}':'${TOKYODB}':${TOKYOPLIST}"
export TOKYO_RR_INFO
# --------------------------------------------------
# Scenario G
# --------------------------------------------------
# Pre-Steps:
#
# " ${TORONTOHOST}: OpG1.1: Create Database ${TORONTODB}"
empmkdb ${TORONTODB}
# "$TORONTODB: OpG1.2: create table ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
create ${TORONTOPLIST} (\
prod_id integer not null, \
prod_name character(30,1) not null, \
prod_price float,\
prod_lang character(15,1));
@
# "$TORONTODB: OpG1.3: Create Primary Key for ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
alter table ${TORONTOPLIST} add primary key on (prod_id);
@
# "$TORONTODB: OpG1.4: insert data into ${TORONTOPLIST}"
empbatch ${TORONTODB} << @
insert into ${TORONTOPLIST} values (1, 'DB1', 4000, 'english');
insert into ${TORONTOPLIST} values (3, 'DB2', 7000, 'english');
insert into ${TORONTOPLIST} values (2, 'DB1', 5000, 'japanese');
insert into ${TORONTOPLIST} values (4, 'DB2', 7500, 'japanese');
@
# "$NEWYORKHOST: OpG1.5 Create database ${NEWYORKDB}"
empmkdb ${NEWYORKDB}
# "$TOKYOHOST: OpG1.6 Create database ${TOKYODB}"
empmkdb ${TOKYODB}
# "------------------- OpG1 ------------------------------------"
# $TorontoDB: OpG1. Establish Master Table with Subset attribute Group (TorontoPList, SAG)
empbatch ${TORONTODB} << @
ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO MASTER FOR SUBSET ON (prod_lang);
@
# "------------------- OpG2 ------------------------------------"
#
# $TORONTOHOST}: OpG2. Configure Network Server on RMT Side [${TORONTOREPSERVER}]
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > $NETSERVER << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpG3 ------------------------------------"
#
# "OpG3. Start Replication Master Server ${TORONTOREPSERVER}"
empsvadm ${TORONTOREPSERVER} start
# "------------------- OpG4 ------------------------------------"
#TorontoDB: OpG4. Create Replication Replicate with Selected Rows
# (TorontoPList, NewYorkPList, "RSWC_english_products")
empbatch ${TORONTODB} << @
CREATE REPLICATION REPLICATE
${NEWYORK_RR_INFO}
ON ${TORONTOPLIST} WHERE prod_lang = 'english';
@
# "------------------- OpG5 ------------------------------------"
#
# TorontoDB: OpG5. Create Replication Replicate with Selected Rows
# (TorontoPList, TokyoPList, "RSWC_japanese_products")
empcmd TorontoDB "CREATE REPLICATION REPLICATE
${TOKYO_RR_INFO}
ON ${TORONTOPLIST} WHERE prod_lang = 'japanese';"
# "------------------- OpG6 ------------------------------------"
#
# "${NEWYORKHOST}: OpG6. Configure Network Server on RRT Side [${NEWYORKPLIST}] "
# Steps of OpG6 are to be executed if ${NEWYORKHOST} and ${TORONTOHOST} are
# different. Otherwise, these is no need to create the files once more.
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVER} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpG7 ------------------------------------"
#
# "${NEWYORKDB}: OpG7. Create Replicate Table [${NEWYORKPLIST}, ${TORONTOPLIST}] "
empbatch ${NEWYORKDB} << @
create and insert into replicate table \
${NEWYORKPLIST} \
FROM ${TORONTO_RM_INFO};
@
# "------------------- OpG8 ------------------------------------"
#
# "${TOKYOHOST}: OpG8. Configure Network Server on RRT Side [${TOKYOPLIST}] "
# Steps of OpG8 are to be executed if ${TOKYOHOST} and ${TORONTOHOST} are
# different. Otherwise, these is no need to create the files once more.
if [ ! -d ${HOME}/.empress ]
then
mkdir ${HOME}/.empress
fi
cat > ${NETSERVERTOKYO} << @
MSNETSERVER
NAME=${TORONTOREPSERVER}
TYPE=${SERVERTYPE}
HOST=${TORONTOHOST}
PORT_ADMIN=12340
PORT_SERVICE=12345
ADMINISTRATOR=${USER}
MSNETSERVEREND
@
# "------------------- OpG9 ------------------------------------"
#
# "${TOKYODB}: OpG9. Create Replicate Table [{TOKYOPLIST}, ${TORONTOPLIST}] "
empbatch ${TOKYODB} << @
create and insert into replicate table \
${TOKYOPLIST} \
FROM ${TORONTO_RM_INFO};
@
# "------------------- OpG10 ------------------------------------"
#
# "${NEWYORKHOST}: OpG10. Perform a Synchronization [${NEWYORKPLIST}]"
emprepsync -v ${NEWYORKDB} ${NEWYORKPLIST}
# "------------------- OpG11 ------------------------------------"
#
# "${TOKYOHOST}: OpG11. Perform a Synchronization [${TOKYOPLIST}]"
emprepsync -v ${TOKYODB} ${TOKYOPLIST}
# "------------------- OpG12 ------------------------------------"
#
# "NewYorkDB: OpG12. View Replication Table and Synchronization Status [NewYorkPList] "
empbatch ${NEWYORKDB} << @
display table ${NEWYORKPLIST} all;
@
# "Check the contents of the Replication Replicate Table NewYorkPList"
empcmd ${NEWYORKDB} "select * from ${NEWYORKPLIST};"
# "------------------- OpG13 ------------------------------------"
#
# "TokyoDB: OpG13. View Replication Table and Synchronization Status [TokyoPList] "
empbatch ${TOKYODB} << @
display table ${TOKYOPLIST} all;
@
# "Check the contents of the Replication Replicate Table NewYorkPList"
empcmd ${TOKYODB} "select * from ${TOKYOPLIST};"
B.8.2 Other possible operations in scenario G
# "------------------------------------------------------------"
# "the rest of the commands undo the effects of Scenario 1"
# "------------------------------------------------------------"
# "${NEWYORKDB}: Drop Replicate Table [${NEWYORKPLIST}] "
# empcmd ${NEWYORKDB} "DROP TABLE ${NEWYORKPLIST};"
# "${TOKYODB}: Drop Replicate Table [${TOKYOPLIST}] "
# empcmd ${NEWYORKDB} "DROP TABLE ${NEWYORKPLIST};"
# "${TORONTODB}: Unauthorize Replication Replicate [${NEWYORKPLIST}, ${TORONTOPLIST}] "
# empcmd ${TORONTODB} "DROP REPLICATION REPLICATE \
# ${NEWYORK_RR_INFO} \
# ON ${TORONTOPLIST};"
# "${TORONTOHOST}: Stop Replication Master Server [${TORONTOREPSERVER}]"
empsvadm ${TORONTOREPSERVER} stop
# "${TORONTODB}: Undefine Master Table [${TORONTOPLIST}]"
# empcmd ${TORONTODB} "ALTER TABLE ${TORONTOPLIST} CHANGE TABLE TYPE TO NORMAL;"
#---------------------------------------------------------------
# "Post Steps to completely clear the effects"
# "Remove database ${NEWYORKDB}"
# emprmdb ${NEWYORKDB}
# "Remove database ${TORONTODB}"
# emprmdb ${TORONTODB}
# "Remove database ${TOKYODB}"
# emprmdb ${TOKYODB}
# "remove server log file"
# rm ${TORONTOREPSERVER}.log