Recuperacion-Eq3

Anuncio
Universidad Veracruzana.
Lic. En Sistemas Computacionales Administrativos.
Asignatura:
Bases de Datos
Profesor:
Luis Alberto López Cámara
Tema:
Técnicas de recuperación de bases de datos
Numero de equipo:
3
Integrantes de equipo:
Gisela Padilla Bautista
Miguel Ángel García Pimentel
Marcos Alberto Díaz Rosas
Roberto Estrada Orozco
Gerson García Mora
1 de Abril del 2011
Introducción. ................................................................................................................................. 2
Técnicas de recuperación de bases de datos. ............................................................................... 2
Recuperación basada en el registro histórico. .............................................................................. 3
Modificación diferida de la base de datos. ................................................................................... 3
Modificación inmediata de la base de datos. ............................................................................... 6
Puntos de revisión. ........................................................................................................................ 7
Técnicas de recuperación en sistemas de multibases de datos.................................................... 8
Interacción con el control de concurrencia .............................................................................. 8
Retroceso de transacciones ...................................................................................................... 9
Puntos de revisión. .................................................................................................................... 9
Recuperación al reiniciar. .......................................................................................................... 9
Conclusión. .................................................................................................................................. 13
Bibliografía. ................................................................................................................................. 14
Introducción.
Este trabajo abordara que es una recuperación de bases de datos, así como
cuáles son las técnicas más usadas. Para lo cual analizaremos los pros y los
contras de cada una de ellas. Y por último se analizaran la forma de hacer
respaldos remotos de una base de datos, en caso de fallas catastróficas.
Técnicas de recuperación de bases de datos.
Una computadora, al igual que cualquier otro dispositivo eléctrico o mecánico,
está sujeta a fallos. Éstos se producen por diferentes motivos como: fallos de
disco, cortes de corriente, errores en el software, un incendio en la habitación
de la computadora o incluso sabotaje. En cada uno de estos casos puede
perderse información. Por tanto, el sistema de bases de datos debe realizar
con anticipación acciones que garanticen que las propiedades de atomicidad y
durabilidad de las transacciones, se preservan a pesar de tales fallos. Una
parte integral de un sistema de bases de datos es un esquema de
recuperación, el cual es responsable de la restauración de la base de datos al
estado consistente previo al fallo. El esquema de recuperación también debe
proporcionar alta disponibilidad; esto es, debe minimizar el tiempo durante el
que la base de datos no se puede usar después de un fallo.
Una recuperación de bases de datos consisten en devolver a la base de datos
a un estado consistente y con la menor pérdida de información y tiempo
posible, en la cual se incluyen acciones durante el proceso normal de
transacciones, y acciones después de un fallo.
Recuperación basada en el registro histórico.
La estructura más ampliamente utilizada para guardar las modificaciones de
una base de datos es el registro histórico. El registro histórico es una
secuencia de registros que mantiene un registro de todas las actividades
de actualización de la base de datos. Existen varios tipos de registros del
registro histórico. Un registro de actualización del registro histórico
describe una única escritura en la base de datos y tiene los siguientes campos:
• El identificador de la transacción es un identificador único de la transacción
que realiza la operación escribir.
• El identificador del elemento de datos es un identificador único del
elemento de datos que se escribe. Normalmente suele coincidir con la
ubicación del elemento de datos en el disco.
• El valor anterior es el valor que tenía el elemento de datos antes de la
escritura.
• El valor nuevo es el valor que tendrá el elemento de datos después de la
escritura.
Existen otros registros del registro histórico especiales para registrar sucesos
significativos durante el procesamiento de una transacción, tales como el
comienzo de una transacción y el éxito o aborto de la misma. Denotaremos
como sigue los diferentes tipos de registros del registro histórico:
• <Ti iniciada>. La transacción Ti ha comenzado.
• <Ti, Xj, V1, V2>. La transacción Ti ha realizado una escritura sobre el
elemento de datos Xj. Xj tenía el valor V1 antes de la escritura y tendrá el valor
V2 después de la escritura.
• <Ti comprometida>. La transacción Ti se ha comprometido.
• <Ti abortada>. La transacción Ti ha sido abortada.
Cuando una transacción realiza una escritura es fundamental que se cree el
registro del registro histórico correspondiente a esa escritura antes de modificar
la base de datos. Una vez que el registro del registro histórico existe, se puede
realizar la salida de la modificación a la base de datos si se desea. Además, es
posible deshacer una modificación que ya haya salido a la base de datos. Se
deshará utilizando el campo valor-anterior de los registros del registro histórico.
Para que los registros del registro histórico sean útiles para recuperarse frente
a errores del disco o del sistema, el registro histórico debe residir en
almacenamiento estable.
Obsérvese que en el registro histórico se tiene constancia de todas las
actividades de la base de datos. Como consecuencia, el tamaño de los datos
almacenados en el registro histórico puede llegar a ser extremadamente
grande.
Modificación diferida de la base de datos.
La técnica de la modificación diferida garantiza la atomicidad de las
transacciones mediante el almacenamiento de todas las modificaciones de la
base de datos en el registro histórico, pero retardando la ejecución de todas las
operaciones escribir de una transacción hasta que la transacción se
compromete parcialmente. Recuérdese que se dice que una transacción se
compromete parcialmente una vez que se ejecuta la acción final de la
transacción. En la versión de la técnica de modificación diferida que se
describe en este apartado se supone que las transacciones se ejecutan
secuencialmente.
Cuando una transacción se compromete parcialmente, la información del
registro histórico asociada a esa transacción se utiliza para la ejecución de las
escrituras diferidas. Si el sistema cae antes de que la transacción complete su
ejecución o si la transacción aborta, la información del registro histórico
simplemente se ignora.
La ejecución de una transacción Ti opera de esta manera: antes de que Ti
comience su ejecución se escribe en el registro histórico un registro <Ti
iniciada>. Una operación escribir(X) realizada por Ti se traduce en la escritura
de un nuevo registro en el registro histórico. Finalmente, cuando Ti se ha
comprometido parcialmente, se escribe en el registro histórico un registro
<Ti comprometida>.
Cuando Ti se compromete parcialmente, los registros asociados a ella en el
registro histórico se utilizan para la ejecución de las escrituras diferidas. Como
puede ocurrir un fallo mientras se lleva a cabo esta actualización, hay que
asegurarse de que, antes del comienzo de estas actualizaciones, todos los
registros del registro histórico se guardan en almacenamiento estable. Una vez
que se ha hecho esto, la actualización real tiene lugar y la transacción pasa al
estado comprometido. Obsérvese que la técnica de modificación diferida sólo
requiere el nuevo valor de los elementos de datos.
Para ilustrar esto considere un sistema bancario simple. Sea T0 una
transacción que transfiere 50 € desde la cuenta A a la cuenta B. Esta
transacción se define de la manera siguiente:
T0 : leer(A)
A := A – 50
escribir(A)
leer(B)
B := B + 50
Escribir(B)
Sea T1 una transacción que retira 100 € de la cuenta C.
Esta transacción se define como
T1 : leer(C)
C := C – 100
Escribir(C)
Supongamos que estas transacciones se ejecutan secuencialmente, primero T0
y después T1, y que los saldos de las cuentas A, B y C antes de producirse la
ejecución eran 1.000, 2.000 y 700 € respectivamente. El fragmento del registro
histórico que contiene la información relevante sobre estas dos transacciones
se muestra a continuación.
<T0 iniciada>
<T0, A, 950>
<T0, B, 450>
<T0 comprometida>
<T1 iniciada>
<T1, C, 1100>
<T1 comprometida>
Las salidas reales que se producen en el sistema de bases de datos y en el
registro histórico como consecuencia de la ejecución de T0 y T1 pueden seguir
distintas ordenaciones. Una ordenación posible es la siguiente.
Registro histórico
Base de datos
<T0 iniciada>
<T0, A, 950>
<T0, B, 2050>
<T0 comprometida>
A = 950
B = 2050
<T1 iniciada>
<T1, C, 600>
<T1 comprometida>
C = 600
Nótese que el valor de A se cambia en la base de datos sólo después de que el
registro <T0, A, 950> se haya introducido en el registro histórico.
Mediante la utilización del registro histórico, el sistema puede manejar cualquier
fallo que conduzca a la pérdida de información en el almacenamiento volátil.
El esquema de recuperación usa el siguiente procedimiento de recuperación:
• Rehacer (Ti) fija el valor de todos los elementos de datos actualizados por la
transacción Ti a los valores nuevos.
El conjunto de elementos de datos actualizados por Ti y sus respectivos
nuevos valores se encuentran en el registro histórico.
La operación rehacer debe ser idempotente, esto es, el resultado de ejecutarla
varias veces debe ser equivalente al resultado de ejecutarla una sola vez. Esta
característica es fundamental para garantizar un correcto comportamiento
incluso si el fallo se produce durante el proceso de recuperación.
Después de ocurrir un fallo, el subsistema de recuperación consulta el registro
histórico para determinar las transacciones que deben rehacerse. Una
transacción Ti debe rehacerse si y sólo si el registro histórico contiene los
registros <Ti iniciada> y <Ti comprometida>.
Así, si el sistema cae después de que la transacción complete su ejecución, la
información en el registro histórico se utiliza para restituir el sistema a un
estado consistente anterior.
Modificación inmediata de la base de datos.
La técnica de modificación inmediata permite realizar la salida de las
modificaciones de la base de datos a la propia base de datos mientras que la
transacción está todavía en estado activo. Las modificaciones de datos escritas
por transacciones activas se denominan modificaciones no comprometidas. En
caso de una caída o de un fallo en la transacción, el sistema debe utilizar el
campo para el valor anterior de los registros del registro histórico para restaurar
los elementos de datos modificados a los valores que tuvieran antes de
comenzar la transacción. Esta restauración se lleva a cabo mediante la
operación deshacer descrita a continuación.
Antes de comenzar la ejecución de una transacción Ti, se escribe en el registro
histórico el registro <Ti iniciada>.
Durante su ejecución, cualquier operación escribir (X) realizada por Ti, es
precedida por la escritura en el registro histórico de un registro actualizado
apropiado. Cuando Ti se compromete parcialmente se escribe en el registro
histórico el registro <Ti comprometida>.
Como la información del registro histórico se utiliza para reconstruir el estado
de la base de datos, la actualización real de la base de datos no puede
permitirse antes de que el registro del registro histórico correspondiente se
haya escrito en almacenamiento estable. Por lo tanto, es necesario que antes
de la ejecución de una operación de salida (B), se escriban en almacenamiento
estable los registros del registro histórico correspondientes a B.
Para ilustrarlo considérese de nuevo el sistema bancario simple con la
ejecución ordenada de las transacciones T0 y T1, primero T0 y después T1.
Las líneas del registro histórico que contienen la información relevante
concerniente a estas dos transacciones se muestran a continuación.
<T0 iniciada>
<T0, A, 1000, 950>
<T0, B, 2000, 2050>
<T0 comprometida>
<T1 iniciada>
<T1, C, 700, 600>
<T1 comprometida>
En la siguiente figura se describe una posible ordenación de las salidas reales
que se producen en el sistema de bases de datos y en el registro histórico
como consecuencia de la ejecución de T0 y T1. Nótese que esta ordenación no
podría obtenerse con la técnica de modificación diferida.
Mediante la utilización del registro histórico, el sistema puede manejar cualquier
fallo que no genere una pérdida de información en el almacenamiento no
volátil.
El esquema de recuperación usa dos procedimientos de recuperación:
• deshacer (Ti) restaura el valor de todos los elementos de datos actualizados
por la transacción Ti a los valores anteriores.
• rehacer (Ti) fija el valor de todos los elementos de datos actualizados por la
transacción Ti a los nuevos valores.
El conjunto de elementos de datos actualizados por Ti y sus respectivos
anteriores y nuevos valores se encuentran en el registro histórico.
Las operaciones deshacer y rehacer deben ser idempotentes para garantizar
un comportamiento correcto incluso en el caso de que el fallo se produzca
durante el proceso de recuperación.
Después de haberse producido un fallo, el esquema de recuperación consulta
el registro histórico para determinar las transacciones que deben rehacerse y
las que deben deshacerse.
• Una transacción Ti debe deshacerse si el registro histórico contiene el registro
<Ti iniciada>, pero no contiene el registro <Ti comprometida>.
• Una transacción Ti debe rehacerse si el registro histórico contiene los
registros <Ti iniciada> y <Ti comprometida>.
Puntos de revisión.
El registro histórico para determinar las transacciones que deben rehacerse y
las que deben deshacerse. En principio es necesario recorrer completamente el
registro histórico para hallar esta información. En este enfoque hay dos
inconvenientes principales:
1. El proceso de búsqueda consume tiempo.
2. La mayoría de las transacciones que deben rehacerse de acuerdo con el
algoritmo ya tienen escritas sus actualizaciones en la base de datos. Aunque el
hecho de volver a ejecutar estas transacciones no produzca resultados
erróneos, sí repercutirá en un aumento del tiempo de ejecución del proceso de
recuperación.
Para reducir este tipo de sobrecarga se introducen los puntos de revisión.
Durante la ejecución, el sistema actualiza el registro histórico utilizando una de
dos técnicas. Además, el sistema realiza periódicamente puntos de revisión, en
los cuales tiene lugar la siguiente secuencia de acciones:
1. Escritura en almacenamiento estable de todos los registros del registro
histórico que residan en ese momento en memoria principal.
2. Escritura en disco de todos los bloques de memoria intermedia que se hayan
modificado.
3. Escritura en almacenamiento estable de un registro del registro histórico
<revisión>.
Mientras se lleva a cabo un punto de revisión no se permite que ninguna
transacción realice acciones de actualización, tales como escribir en un bloque
de memoria intermedia o escribir un registro del registro histórico.
La presencia de un registro <revisión> en el registro histórico permite que el
sistema pueda hacer más eficiente su procedimiento de recuperación.
Considérese una transacción Ti que se comprometió antes del punto de
revisión. Para esa transacción el registro <Ti comprometida> aparece en el
registro histórico antes que el registro <revisión>. Todas las modificaciones
sobre la base de datos hechas por Ti se deben haber escrito en la base de
datos antes del punto de revisión o formando parte del propio punto de revisión.
Así, en el momento de la recuperación, no es necesario ejecutar una operación
rehacer sobre Ti. Esta observación permite perfeccionar los esquemas
anteriores de recuperación (sigue siendo válido el supuesto de que las
transacciones se ejecutan secuencialmente).
Cuando se produce un fallo, el esquema de recuperación examina el registro
histórico para determinar la última transacción Ti que comenzó su ejecución
antes de que tuviera lugar el último punto de revisión. Para encontrar una
transacción de este tipo se recorre el registro histórico hacia atrás, esto es, se
empieza a buscar por el final del registro histórico hasta que se encuentra el
primer registro <revisión> (como se va recorriendo el registro histórico hacia
atrás, el registro encontrado corresponde al último registro <revisión> del
registro histórico); después se continúa la búsqueda hacia atrás hasta que se
encuentra el siguiente registro <Ti iniciada>. Este registro identifica a la
transacción Ti.
Una vez que ha sido identificada la transacción Ti sólo es necesario aplicar las
operaciones rehacer y deshacer a la transacción Ti y a las transacciones Tj que
comenzaron su ejecución después que Ti. Sea T este conjunto de
transacciones. Puede ignorarse el resto del registro histórico (la parte del
principio) y puede borrarse cuando se desee. El conjunto exacto de
operaciones de recuperación que han de llevarse a cabo depende de si se está
usando la técnica de modificación inmediata o la de modificación diferida.
Si se emplea la técnica de modificación inmediata, las operaciones de
recuperación deben ser las siguientes:
• Ejecutar deshacer (Tk) para todas las transacciones Tk de T para las que no
exista un registro <Tk comprometida> en el registro histórico.
• Ejecutar rehacer (Tk) para todas las transacciones Tk de T para las que
aparece un registro <Tk comprometida> en el registro histórico.
Obviamente no es necesario aplicar la operación rehacer cuando se está
utilizando la técnica de modificación diferida.
Técnicas de recuperación en sistemas de multibases de datos.
Interacción con el control de concurrencia
El esquema recuperación depende en gran medida del esquema de control de
concurrencia que se use. Para retroceder los efectos de una transacción fallida
deben deshacerse las modificaciones realizadas por esa transacción.
Supóngase que se debe retroceder una transacción T0 y que un dato Q, que
fue modificado por T0, tiene que recuperar su antiguo valor. Si se está usando
un esquema basado en registro histórico para la recuperación, es posible
restablecer el valor de Q utilizando la información contenida en el registro
histórico.
Supóngase ahora que una segunda transacción T1 realiza una nueva
modificación sobre Q antes de retroceder T0. En este caso, al retroceder T0, se
perdería la modificación realizada por T1.
Es necesario, por tanto, que si una transacción T modifica el valor de un
elemento de datos Q, ninguna otra transacción pueda modificar el mismo
elemento de datos hasta que T se haya comprometido o se haya retrocedido.
Este requisito puede satisfacerse fácilmente utilizando bloqueo estricto de dos
fases, esto es, bloqueo de dos fases manteniendo bloqueos exclusivos hasta el
final de la transacción.
Retroceso de transacciones
Se utiliza el registro histórico para retroceder una transacción Ti fallida. El
registro histórico se explora hacia atrás; para cada registro del registro histórico
de la forma <Ti, Xj, V1, V2>, se restablece el valor del elemento de datos Xj
con su valor anterior: V1. La exploración del registro histórico termina cuando
se encuentra el registro <Ti iniciada>.
Es importante el hecho de recorrer el registro histórico empezando por el final,
ya que una transacción puede haber actualizado más de una vez el valor de un
elemento de datos. Como ejemplo, considérese este par de registros:
<Ti, A, 10, 20>
<Ti, A, 20, 30>
Estos registros del registro histórico representan una modificación del elemento
de datos A por parte de la transacción Ti, seguida de otra modificación de A
hecha también por Ti. Al recorrer el registro histórico al revés se establece
correctamente el valor de A como 10. Si el registro histórico se recorriera hacia
delante, A tomaría como valor 20, lo cual es incorrecto. Si para el control de
concurrencia se utiliza el bloqueo estricto de dos fases, los bloqueos llevados a
cabo por una transacción T sólo pueden ser desbloqueados después de que la
transacción se haya retrocedido según se acaba de describir. Una vez que T
(que se está retrocediendo) haya actualizado un elemento de datos, ninguna
otra transacción podría haber actualizado el mismo elemento de datos debido a
los requisitos del control de. Así pues, la restitución del valor anterior de un
elemento de datos no borrará los efectos de otra transacción.
Puntos de revisión.
Cuando las transacciones pueden ejecutarse concurrentemente, la situación se
torna más complicada ya que varias transacciones pueden estar activas en el
momento en que se produce el último punto de revisión.
En un sistema de procesamiento de transacciones concurrente es necesario
que el registro del registro histórico correspondiente a un punto de revisión sea
de la forma <revisión L>, donde L es una lista con las transacciones activas en
el momento del punto de revisión. De nuevo se supone que, mientras que se
realiza el punto de revisión, las transacciones no efectúan modificaciones ni
sobre los bloques de la memoria intermedia ni sobre el registro histórico.
El requisito de que las transacciones no puedan realizar modificaciones sobre
los bloques de la memoria intermedia ni sobre el registro histórico durante un
punto de revisión puede resultar molesto, ya que el procesamiento de
transacciones tendrá que parar durante la ejecución de un punto de revisión.
Un punto de revisión durante el cual se permite que las transacciones realicen
modificaciones incluso mientras los bloques de memoria intermedia se están
guardando en disco, se denomina punto de revisión difuso.
Recuperación al reiniciar.
El sistema construye dos listas cuando se recupera de una caída: la listadeshacer, que consta de las transacciones que han de deshacerse, y la listarehacer, que está formada por las transacciones que deben rehacerse.
Estas dos listas se construyen durante la recuperación de la siguiente manera.
Al principio ambas están vacías. Luego se recorre el registro histórico hacia
atrás examinando cada registro hasta que se encuentra el primer registro
<revisión>:
• Para cada registro encontrado de la forma <Ti comprometida>, se añade Ti a
la lista-rehacer.
• Para cada registro encontrado de la forma <Ti iniciada>, si Ti no está en la
lista-rehacer, entonces se añade Ti a la lista-deshacer.
Una vez que se han examinado los registros apropiados del registro histórico,
se atiende al contenido de la lista L en el registro punto de revisión. Para cada
transacción Ti en L, si Ti no está en la lista-rehacer, entonces se añade Ti a la
lista-deshacer.
Cuando se terminan la lista-rehacer y la lista-deshacer, el proceso de
recuperación procede de la siguiente manera:
1. Se recorre de nuevo el registro histórico hacia atrás comenzando en el último
registro y se realiza una operación deshacer por cada registro del registro
histórico que pertenezca a una transacción Ti de la lista-deshacer. En esta fase
se ignoran los registros del registro histórico concernientes a transacciones de
la lista-rehacer. El recorrido del registro histórico termina cuando se encuentran
registros <Ti iniciada> para cada transacción Ti de la lista-deshacer.
2. Se localiza el último registro <revisión L> del registro histórico. Nótese que
este paso puede necesitar de un recorrido del registro histórico hacia delante si
el registro punto de revisión quedó atrás en el paso 1.
3. Se recorre el registro histórico hacia delante desde el último registro
<revisión L> y se realiza una operación rehacer por cada registro del registro
histórico que pertenezca a una transacción Ti de la lista-rehacer. En esta fase
se ignoran los registros del registro histórico concernientes a transacciones de
la lista-deshacer.
Es importante procesar el registro histórico hacia atrás en el paso 1 para
garantizar que el estado resultante de la base de datos sea correcto. Después
de haber deshecho todas las transacciones de la lista-deshacer se rehacen
aquellas transacciones que pertenezcan a la lista-rehacer. En este caso es
importante procesar el registro histórico hacia delante.
Cuando se ha completado el proceso de recuperación, se continúa con el
procesamiento normal de las transacciones. Es importante el hecho de
deshacer las transacciones de la lista-deshacer antes de rehacer las
transacciones de la lista-rehacer al utilizar los pasos 1 a 3 del algoritmo
anterior. El siguiente problema podría ocurrir de no hacerse así. Supóngase
que el elemento de datos A vale inicialmente 10. Supóngase también que una
transacción Ti modifica el valor de A situándolo en 20 y aborta a continuación;
el retroceso de la transacción devolvería a A el valor 10. Supóngase que otra
transacción Tj cambia entonces a 30 el valor de A, se compromete y,
seguidamente, el sistema cae. El estado del registro histórico en el momento
de la caída es:
<Ti, A, 10, 20>
<Tj, A, 10, 30>
<Tj comprometida>
Si se rehace primero, A tomará el valor 30; y luego, al deshacer, A acabará
valiendo 10, lo cual es incorrecto. El valor final de A debe ser 30, lo que puede
garantizarse si se deshace antes de rehacer.
Sistemas remotos de copias de seguridad.
Los sistemas tradicionales de procesamiento de transacciones son sistemas
centralizados o sistemas cliente-servidor. Esos sistemas son vulnerables frente
a desastres ambientales como el fuego, las inundaciones o los terremotos. Hay
una necesidad creciente de sistemas de procesamiento de transacciones que
ofrezcan una disponibilidad elevada y que puedan funcionar pese a los
desastres ambientales. Estos sistemas deben proporcionar una disponibilidad
elevada, es decir, el tiempo en que el sistema no es utilizable debe ser
extremadamente pequeño.
Se puede obtener una disponibilidad elevada realizando el procesamiento de
transacciones en un solo sitio, denominado sitio principal, pero tener un sitio
remoto copia de seguridad, en el que se repliquen todos los datos del sitio
principal. El sitio remoto copia de seguridad se denomina también a veces sitio
secundario. El sitio remoto debe mantenerse sincronizado con el sitio principal,
ya que las actualizaciones se realizan en el sitio principal. La sincronización se
obtiene enviando todos los registros del registro histórico desde el sitio principal
al sitio remoto copia de seguridad. El sitio remoto copia de seguridad debe
hallarse físicamente separado del principal —por ejemplo, se puede ubicar en
otra provincia— para que una catástrofe en el sitio principal no afecte al sitio
remoto copia de seguridad.
Cuando falla el sitio principal, el sitio remoto copia de seguridad asume el
procesamiento. En primer lugar, sin embargo, lleva a cabo la recuperación
utilizando su copia (tal vez anticuada) de los datos del sitio principal y los
registros del registro histórico recibidos del mismo. En realidad, el sitio remoto
copia de seguridad lleva a cabo acciones de recuperación que se hubieran
llevado a cabo en el sitio principal cuando éste se hubiera recuperado. Se
pueden utilizar los algoritmos estándar de recuperación para la recuperación en
el sitio remoto copia de seguridad con pocas modificaciones. Una vez realizada
la recuperación, el sitio remoto copia de seguridad comienza a procesar
transacciones. La disponibilidad aumenta mucho en comparación con los
sistemas con un solo sitio, dado que el sistema puede recuperarse aunque se
pierdan todos los datos del sitio principal. El rendimiento de los sistemas
remotos para copias de seguridad es mejor que el de los sistemas distribuidos
con compromiso de dos fases.
Varios aspectos que deben abordarse al diseñar sistemas remotos para copias
de seguridad son los siguientes:
• Detección de fallos. Al igual que en los protocolos para el manejo de fallos en
sistemas distribuidos, es importante que el sistema remoto de copia de
seguridad detecte que el sitio principal ha fallado. El fallo de las líneas de
comunicación puede hacer creer al sitio remoto copia de seguridad que el sitio
principal ha fallado. Para evitar este problema hay que mantener varios enlaces
de comunicaciones con modos de fallo independientes entre el sitio principal y
el sitio remoto copia de seguridad. Por ejemplo, además de la conexión de red
puede haber otra conexión mediante módem por línea telefónica con servicio
suministrado por diferentes compañías de telecomunicaciones. Estas
conexiones pueden complementarse con la intervención manual de
operadores, que se pueden comunicar por sistema telefónico.
• Transferencia del control. Cuando el sitio principal falla, el sitio copia de
seguridad asume el procesamiento y se transforma en el nuevo sitio principal.
Cuando el sitio principal original se recupera puede desempeñar el papel de
sitio remoto copia de seguridad o volver a asumir el papel de sitio principal. En
cualquiera de los casos, el sitio principal antiguo debe recibir un registro
histórico de actualizaciones realizado por el sitio copia de seguridad mientras el
sitio principal antiguo estaba fuera de servicio.
La manera más sencilla de transferir el control es que el sitio principal antiguo
reciba el registro histórico de operaciones rehacer del sitio copia de seguridad
antiguo y se ponga al día con las actualizaciones aplicándolas de manera local.
El sitio principal antiguo puede entonces actuar como sitio remoto copia de
seguridad. Si hay que devolver el control, el sitio remoto copia de seguridad
antiguo puede simular que ha fallado, lo que da lugar a que el sitio principal
antiguo asuma el control.
• Tiempo de recuperación. Si el registro histórico del sitio remoto copia de
seguridad se hace grande, la recuperación puede tardar mucho. El sitio remoto
copia de seguridad puede procesar de manera periódica los registros rehacer
del registro histórico que haya recibido y realizar un punto de revisión de
manera que se puedan borrar las partes más antiguas del registro histórico.
Como consecuencia se puede reducir el retraso antes de que el sitio remoto
copia de seguridad asuma el control. Una configuración de relevo en caliente
puede hacer la toma del control por el sitio copia de seguridad casi instantáneo.
En esta configuración el sitio remoto copia de seguridad procesa los registros
rehacer del registro histórico según llegan, y aplica las actualizaciones de
manera local. Tan pronto como se detecta el fallo del sitio principal, el sitio
copia de seguridad completa la recuperación retrocediendo las transacciones
incompletas y queda preparado para procesar las nuevas.
• Tiempo de compromiso. Para asegurar que las actualizaciones de una
transacción comprometida sean duraderas no se debe declarar comprometida
una transacción hasta que sus registros del registro histórico hayan alcanzado
el sitio copia de seguridad. Este retraso puede dar lugar a una espera más
prolongada para comprometer la transacción y, en consecuencia, algunos
sistemas permiten grados inferiores de durabilidad. Los grados de durabilidad
pueden clasificarse de la manera siguiente.
– Uno seguro. Las transacciones se comprometen tan pronto como sus
registros de compromiso del registro histórico se escriben en un
almacenamiento estable en el sitio principal. El problema de este esquema es
que puede que las actualizaciones de una transacción comprometida no hayan
alcanzado el sitio copia de seguridad cuando éste asuma el control del
procesamiento.
Por tanto, puede parecer que las actualizaciones se han perdido. Cuando se
recupere el sitio principal, las actualizaciones perdidas no se pueden mezclar
directamente, dado que pueden entrar en conflicto con actualizaciones
posteriores llevadas a cabo en el sitio copia de seguridad. Por tanto, puede que
se necesite la intervención humana para devolver a la base de datos a un
estado consistente.
– Dos muy seguro. Las transacciones se comprometen tan pronto como sus
registros de compromiso del registro histórico se escriben en un
almacenamiento estable en el sitio principal y en el sitio copia de seguridad.
El problema de este esquema es que el procesamiento de transacciones no
puede continuar si alguno de los puntos no está operativo. Por tanto, la
disponibilidad es realmente menor que en el caso de un solo sitio, aunque la
posibilidad de la pérdida de datos es mucho más reducida.
– Dos seguro. Este esquema es idéntico al esquema dos muy seguro si tanto el
sitio principal como el sitio copia de seguridad están activos. Si sólo está activo
el sitio principal se permite que la transacción se comprometa tan pronto como
su registro de compromiso del registro histórico se escriba en un
almacenamiento estable en el sitio principal.
Este esquema proporciona mejor disponibilidad que el esquema dos muy
seguro al tiempo que evita el problema de las transacciones perdidas afrontado
por el esquema uno seguro. Da lugar a un compromiso más lento que el
esquema uno seguro pero las ventajas generalmente superan los
inconvenientes.
Varios sistemas comerciales de disco compartido proporcionan un nivel de
tolerancia de fallos intermedio entre el de los sistemas centralizados y el de los
sistemas remotos para copias de seguridad. En estos sistemas el fallo de una
UCP no da lugar al fallo del sistema. En lugar de ello, otra UCP asume el
control y lleva a cabo la recuperación. Las acciones de recuperación incluyen el
retroceso de las transacciones que se ejecutaban en la UCP que falló y la
recuperación de los bloqueos mantenidos por dichas transacciones. Dado que
los datos se hallan en un disco compartido, no hace falta transferir registros del
registro histórico. Sin embargo, se deberían proteger los datos contra el fallo
del disco utilizando, por ejemplo, una organización de discos RAID.
Una forma alternativa de conseguir alta disponibilidad es usar una base de
datos distribuida con los datos replicados en más de un sitio. Son necesarias
transacciones para actualizar todas las réplicas de cualquier elemento de datos
que actualicen.
Conclusión.
El esquema de recuperación es una parte integrante del sistema de base de
datos el cual es responsable de la detección de fallos y del restablecimiento de
un estado de la base de datos anterior al momento de producirse el fallo.
En los esquemas basados en registro histórico todas las modificaciones se
escriben en el registro histórico, el cual debe estar guardado en
almacenamiento estable.
— En el esquema de modificación diferida, durante la ejecución de una
transacción, se difieren todas las operaciones escribir hasta que la transacción
se compromete parcialmente, momento en el que se utiliza la información del
registro histórico asociada con la transacción para ejecutar las escrituras
diferidas.
— Con la técnica de modificación inmediata, todas las modificaciones se
aplican directamente sobre la base de datos. Si ocurre una caída se utiliza la
información del registro histórico para conducir a la base de datos a un estado
estable previo.
Puede usarse la técnica de los puntos de revisión para reducir la sobrecarga
que conlleva la búsqueda en el registro histórico y rehacer las transacciones.
También debemos recordad que para recuperarse de los fallos que resultan en
la pérdida de almacenamiento no volátil debe realizarse un volcado
periódicamente (por ejemplo, una vez al día) del contenido entero de la base de
datos en almacenamiento estable. Se usará el último volcado para devolver a
la base de datos a un estado consistente previo cuando ocurra un fallo que
conduzca a la pérdida de algún bloque físico de la base de datos. Una vez
realizada esta operación se utilizará el registro histórico para llevar a la base de
datos al estado consistente más reciente.
Y finalmente con las nuevas tecnologías se han creado sistemas remotos de
copia de seguridad que proporcionan un alto nivel de disponibilidad,
permitiendo que continúe el procesamiento de transacciones incluso si se
destruye el sitio primario por fuego, inundación o terremoto.
Bibliografía.
Fundamentos de bases de datos.
Silberschatz, Abraham
Editorial Mc Graw Hill
Cuarta edición
Descargar