Guía rápida de iniciación de DB2 Data Links Manager

online.sh

------------------------- 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 ]