Guía rápida de iniciación de DB2 Data Links Manager
------------------------- Inicio del Script 'online.sh' ----------------------
#!/bin/ksh
# Archivo script de ejemplo para realizar una copia de seguridad de archivos
# del sistema sin tener que ponerlo fuera de línea durante la mayor parte de
# la copia. Algunas secciones del Script tiene que modificarlas el usuario
# para adaptarlas a sus necesidades incluyendo la sustitución de algunos de
# los parámetros por los suyos propios.
# Uso: onlineb <nombre sistemaarchivos>
#El sistema de archivos dlfs del que se va a realizar una copia de seguridad
#permanecerá accesible en modalidad de solo lectura durante la mayor parte
#del tiempo que tarda en realizarse la copia de seguridad.
#Durante un corto espacio de tiempo del proceso será necesario que los usuarios
#abandonen los archivos del sistema. Esto será necesario en dos momentos: al
#conmutar los archivos del sistema a modalidad de solo lectura (desmontar y
#luego volver a montar en modalidad de solo lectura), y al volver a conmutar
#a la modalidad de lectura-escritura (desmontar de nuevo y seguidamente volver
#a montar en modalidad de lectura-escritura)
# Variables dependientes del entorno ...
# A cambiar según necesidades ...
DLFM_INST=sharada
PATH_OF_EXEC=/home/sharada/amit
# Variables de entorno locales.
EXEC=quiesce
DLFM_DB_NAME=dlfm_db
# Función para comprobar si es root
check_id() {
if [ `id -u` -ne 0 ]
then
echo "You need to be root to run this"
exit 1
fi}
#
# Función para inmovilizar las tablas con valores Datalinks en bases de datos
# registradas con DLFM_DB
#
quiesce_tables()
{
echo "Starting DB2 ..."
su - $DLFM_INST "-c db2start | tail -n 1" # Imprimir justo la última línea
su - $DLFM_INST "-c $PATH_OF_EXEC/$EXEC -q $DLFM_DB_NAME"
}
#
# Función para poner el sistema de archivos dlfs en modalidad de solo lectura
#
# [El sistema de archivos no debería estar en uso durante este periodo;
# ningún usuario debería ni tan siquiera hacer 'cd' al directorio del sistema
# de archivos ]
# - Si el sistema de archivos es Exportado NFS, deshaga la exportación.
#
unexport_fs() {
if exportfs | grep -w $filesystem_name
then
echo $filesystem_name " is NFS exported"
nfs_export_existed=1
echo "Unexporting " $filesystem_name
exportfs -u $filesystem_name
result=$?
if [ $result -ne 0 ]
then
echo "Failed to unexport " $filesystem_name
reset_tables
exit 1
fi else
echo $filesystem_name " is not NFS exported"
fi}
#
# Función para realizar el desmontaje del sistema de archivos
#
umount_fs() {
echo "Unmounting " $filesystem_name
umount $filesystem_name
result=$?
if [ $result -ne 0 ]
then
echo "Unable to unmount " $filesystem_name
echo "Filesystem " $filesystem_name " may be in use"
echo "Please make sure that no one is using the filesystem and"
echo "and then press a key"
read $ans
umount $filesystem_name
result=$?
fi
if [ $result -ne 0 ]
then
echo "Unable to unmount " $filesystem_name
echo "Aborting ..."
echo "Resetting the quiesced tables ..."
reset_tables
exit 1
fi
echo "Successfully unmounted " $filesystem_name
}
#
# Función para volver a montar el mismo sistema de archivos en modalidad de
# solo lectura o en modalidad de lectura-escritura en función de los valores
# de la variable "RO".
#
remount_fs()
{
if [ $RO -eq 1 ]
then
echo "Now re-mounting " $filesystem_name " as read-only"
mount -v dlfs -r $filesystem_name
else
echo "Now re-mounting " $filesystem_name " as read-write"
mount -v dlfs $filesystem_name
fi result=$?
if [ $result -ne 0 ]
then
echo "Failed to remount " $filesystem_name
echo "Aborting ..."
reset_tables
exit 1
fi echo "Successfully re-mounted " $filesystem_name " as read-only"
}
#
# Función: Si es Exportado NFS, entonces exportarlo en modalidad de solo
# lectura ahora
#
make_fs_ro() {
if [ $nfs_export_existed ]
then
echo "Re-exporting for NFS as read-only"
chnfsexp -d $filesystem_name -N -t ro
result=$?
if [ $result -ne 0 ]
then
echo "Warning: Unable to NFS export " $filesystem_name
# No se cancela aquí - continúa con un aviso
# al menos el sistema de archivos está disponible localmente
## TBD: O tal vez sería mejor salir
else
echo "Successfully exported " $filesystem_name " as read-only"
fifi}
#
# Función para realizar la copia de seguridad
# Actualizar esta función con el mandato de copia de seguridad que
# desea utilizar.
#
do_backup() {
echo "Initiating backup of " $filesystem_name
# [ Añadir líneas aquí para emitir el mandato de copia de seguridad
# preferido del usuario con los parámetros adecuados o descomentar algunas
# de las líneas siguientes ]
# Para invocar la copia de seguridad via smit, descomente la siguiente
# línea:
# smit fs # Seleccionar Hacer copia de segur. de un sistema de archivos
# O
# Para emitir el mandato de copia de seguridad directamente, descomentar y
# modificar la siguiente línea con opciones propias (por ejemplo Completo/
# Incremental) y con parámetros adecuados (tal vez debería sustituir
# /dev/rmt0 por el nombre del dispositivo de copia de seguridad)
# /usr/sbin/backup -f'/dev/rmt0' -'0' $filesystem_name
# result=$?
# if [ $result -ne 0 ]
# then
# echo "Backup failed"
# # Do we exit here ? Or cleanup ?
# else
# echo "Successful backup"
# fi
# O
# Colocar aquí un script de copia de seguridad propio
#
}
#
# Función para volver a montar el sistema de archivos en modalidad de lectura
# -escritura. A continuación, Exportar como NFS, si inicialmente fue exportado
# como NFS
export_fs() {
if [ $nfs_export_existed ]
then
echo "Exporting back for NFS as read-write"
chnfsexp -d $filesystem_name -N -t rw
result=$?
if [ $result -ne 0 ]
then
echo "Warning: Unable to NFS export " $filesystem_name
# No se cancela aquí - continúa con un aviso
# al menos el sistema de archivos está disponible localmente
# TBD: O tal vez sería mejor salir
else
echo "Successfully exported " $filesystem_name " as read-write"
fifi}
# Función para restaurar tablas inmovilizadas
reset_tables() {
su - $DLFM_INST "-c $PATH_OF_EXEC/$EXEC -r $DLFM_DB_NAME"
}
#***************** Parte principal comienza aquí ... ************
#Comprobar argumentos
#
if [ $# -lt 1 ]
then
echo "Usage: " $0 " <filesystem_name>"
exit 1
fi
check_id
# Inmovilizar tablas (después de esperar que hayan terminado todas
# las transacciones ...)
quiesce_tables
# (i) desmontar y volver a montar el sistema de archivos en modalidad
# de solo lectura
filesystem_name=$1
unexport_fs
umount_fs
RO=1
remount_fs # SOLO_LECTURA
make_fs_ro
# (ii) Iniciar la copia de seguridad
do_backup
# (iii) desmontar y volver a montar el sistema de archivos en modalidad
# de lectura-escritura
umount_fs
RO=0
remount_fs # LECTURA_ESCRITURA
export_fs
# Restaurar todas las tablas Inmovilizadas ...
reset_tables
# Ahora el sistema de archivos está preparado para operaciones normales
# de Datalinks
echo "Done"
exit 0
------------------------- end of 'online.sh' script ------------------------
[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]