Sistema de Recuperación Carlos A. Olarte ([email protected]) BDII Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Contenido 1 Introducción 2 Medios de Almacenamiento 3 Registro Histórico 4 Paginación en la sombra 5 Pérdida de Almacenamiento Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Propiedades ACID Atomicidad Consistencia Aislamiento Durabilidad Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Tipos de Fallo Fallos en la transacción: Tanto lógicos (violación de restricciones, tipos incompatibles, etc) como del sistema (interbloqueos, espacio insuficiente, etc) Caı́das del Sistema: Mal funcionamiento del DBMS y/o del Sistema Operativo Fallos Fı́sicos: Errores de I/O o destrucción fı́sica del medio (desastres) Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Soluciones Almacenar estructuras de datos adicionales mientras se procesan las transacciones Implementar mecanismos de recuperación y ejecutarlos cuando sea necesario para retornar a un estado consistente Backups (única forma de recuperarse de los errores fı́sicos) Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Medios de Almacenamiento Almacenamiento Volátil: RAM Almacenamiento No Volátil: Memoria secundaria Almacenamiento Estable: Perdura en el tiempo Diferencias En Costos?, velocidad de Acceso?, Capacidad? Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Almacenamiento Estable Se debe replicar la información en varios medios no volátiles. Posibles mecanismos: Arreglos de Discos Imágenes de Discos Copias Remotas Procedimiento: 1 2 3 Escribir el primer bloque Escribir el segundo bloque Salida OK (completa) si ambas escrituras son exitosas Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Esquema de Almacenamiento Administración del buffer Administración de los archivos Bloque: Unidad básica de transferencia Bloques Fı́sicos: Bloques que residen en disco Bloques de mem intermedia: Bloques que residen en memoria principal Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Acceso a los datos Entrada(B): Transferencia de bloques hacia MPpal (Operaciones de Lectura) Salida(B): Transferencia de bloques hacia disco (Operaciones de Escritura) No necesariamente al efectuar Escribir(X) se efectúa inmediatamente la salida del bloque (no necesariamente esta lleno). El gestor de memoria intermedia puede también forzar la salida de un bloque (requiere el espacio) Que problemas puede traer forzar la salida? o no escribir inmediatamente el bloque? Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Esquemas de Recuperación Registro histórico Escritura Difereida Escritura Inmediata Puntos de Revisión Paginación en la sombra Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Registro Histórico Se mantiene un rastro de las operaciones que han realizado las transacciones. Por Ej: <Ti inicia> <Ti,Q,1,4> <Tj inicia> <Tj,M,5,3> <Tj commit> <Ti,M,5,3> <Ti commit> Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Modificación Diferida Los cambios no se reflejan directamente en disco hasta que se compromete la transacción. Se utiliza el R.H para ejecutar las escrituras Estrategia: 1 Registrar en el RH el inicio de la transacción 2 Por cada escritura registrar el valor modificado 3 Registrar el compromiso de la transacción 4 Antes de realizar las escrituras, el R.H debe estar en almacenamiento estable. Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Continuación Recuperación ante fallas: Encontrar en el R.H las transacciones Iniciadas y Comprometidas Realizar rehacer(Ti ) para reflejar los cambios en disco La operación rehacer debe ser Idempotente (por qué?) Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Modificación Inmediata Se pueden presentar escrituras fı́sicas cuando la transacción aun se encuentra en estado activa. 1 Registrar el inicio de la transacción 2 Por cada modificación escribir el valor anterior y el valor nuevo 3 Registrar el compromiso de la transacción Mecanismo de recuperación 1 Realizar rehacer(Ti ) sobre las transacciones comprometidas 2 Realizar deshacer(Ti ) (también idempotente) sobre las transacciones no comprometidas Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Puntos de Revisión Evitan recorrer totalmente el registro histórico en cada recuperación Evitan rehacer transacciones que ya se han reflejado en el disco Pasos para la revisión 1 2 3 Escritura fı́sica de los registros del R.H Escritura de los bloques en memoria intermedia que hayan sido modificados Escribir < revisado > en el R.H Mientras se efectúa la revisión no se permite la actualización de datos ni escrituras en el R.H Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Continuación Estrategia de recuperación: 1 Encontrar la última transacción Ti que comenzó su ejecución antes del último punto de revisión 2 Encontrar las transacciones que iniciaron su ejecución después de Ti 3 Aplicar la operación deshacer(Tj ) a las transacciones no comprometidas 4 Aplicar la operación rehacer(Tj ) a las transacciones comprometidas Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Continuación Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Transacciones Concurrentes y Recuperación Adicionar una lista de las transacciones activas en el momento de la revisión (< revisionL >) Por cada Ti comprometida adicionarla a la lista de rehacer Por cada Ti iniciada adicionarla a la lista de deshacer si no se encuentra en la lista de rehacer Por cada Ti en la lista de revisión, adicionarla a la lista de deshacer si no se encuentra en la lista de rehacer Deshacer las transacciones de la lista de deshacer de atrás hacia adelante Rehacer las transacciones de la lista de rehacer desde el punto de revisión hacia adelante Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Consideraciones de Eficiencia Los registros del R.H no se pueden escribir en almacenamiento estable inmediatamente. Por eficiencia se mantienen en mem ppal (bloques) . Sin embargo para evitar pérdidas de consistencia de debe tener en cuenta: La transacción se encuentra comprometida solamente si todos sus registros se encuentran en almacenamiento estable Antes de transferir un bloque de datos, los registros del R.H que afecten dicho bloque deben estar en almacenamiento estable Lo anterior se denomina Registro de Escritura Anticipada (RAE). En ocasiones el administrador del buffer forza la escritura del registro histórico (esto puede conducir a un estado inconsistente?) Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Paginación en la sombra Página: Conjunto de bloques de longitud fija Tabla de Páginas: Tabla que contiene apuntadores a las páginas en disco (permite localizar las páginas) Se utiliza una tabla de páginas sombra que mantiene el estado anterior (consistente) de la BD y los cambios se reflejan en la tabla actual. Cuando se compromete la transacción se modifica la tabla sombra Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Continuación Procedimiento de Escritura 1 Ejecutar Entrada(X) si la página no se encuentra en mem ppal 2 Si es la primera escritura sobre la página, encontrar una página libre y hacer que la página actual apunte a dicha página 3 Realizar la modificación sobre la nueva página Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Continuación Procedimiento para el compromiso Escribir las páginas de memoria principal al disco Escribir en disco la tabla actual de páginas Modificar el “apuntador” de la base de datos para que la tabla sombra sea la nueva tabla escrita La recuperación no es necesaria (es inmediata). La tabla sombra siempre debe estar en almacenamiento estable. La tabla actual puede estar en memoria principal Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Registro Histórico Vs Páginación en la sombra Ventajas No hay necesidad de mantener un registro histórico La recuperación es inmediata Desventajas Sobrecarga en el compromiso: Se requiere la escritura de los bloques de datos y la tabla actual de páginas Fragmentación de datos: Las páginas no quedan continuas después de varias modificaciones Recolección de Basura: Se deben recuperar las páginas que contenı́an los datos antes de ser modificados Difı́cil extender este esquema para ejecuciones concurrentes de transacciones Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación Gestión de Memoria Intermedia Mem Virtual del S.O Implementar la memoria intermedia en la memoria virtual del S.O El S.O es quien controla la memoria virtual Provoca doble escritura: Intercambio → Principal → Disco Carlos A. Olarte ([email protected]) BDII Mem Principal Reservar parte de la memoria principal para su utilización exclusiva por parte de la B.D Disminuye los recursos para otras aplicaciones Memoria ociosa en algunos instantes Sistema de Recuperación Pérdida de Almacenamiento Las técnicas anteriores solo son útiles si no hay pérdida del almacenamiento no volátil. Si esto sucede, se debe recurrir a un backup para recuperar nuevamente un estado consistente de la base de datos. Ejemplos Exports / Imports (Oracle, MySql, etc) Backups Incrementales Uso de Crontabs Copias Remotas Carlos A. Olarte ([email protected]) BDII Sistema de Recuperación