Modelo de recuperación en SQL Server (recovery model)

Existen dos modos de recuperación:

  • Simple
  • Completa (o Full). Es el que se activa por defecto.

El modo de recuperacion Simple
Configura SQL Server para que escriba lo minimo en el log de transacciones. De esta forma, el Log no crece mucho y las transacciones que van al disco se eliminan automaticamente del Log.
El modo de recuperacion Completa
Escribe todas las transacciones en el log, y estas no se eliminan automaticamente. El log crece indefinidamente hasta que alcanza su tamano limite (si un tamano limite ha sido especificado en el servidor) o hasta que se llene el disco.  Como todas las transacciones estan escritas en el log de transacciones, se pueden hacer backups del log para que en caso de desastre, se pueda recuperar la base de datos hasta el momento del fallo. Cuando hace un backup del log, SQL Server elimina las transaccinoes innecesarias (que ya han sido movidas al disco) y libera el espacio del log.
Por eso, si tienes un db en modo de recuperacion Completa, es importante que hagas backups del log para asi prevenir que crezca innecesariamente, colapsando el disco y rovocando la parada del servicio por falta de recursos.

Ambos modelos tienen sus ventajas.

El modelo simple es ideal para bases de datos que no reciben muchos cambios y cuya recuperacion completa no es critica. Cuando se recupera la base de datos, solo se puede recuperar datos hasta el momento del ultimo backup. La ventaja es la simplicidad y el ahorro de recursos.
En el modelo Completo, la recuperacion es posible hasta el momento del error, si se tienen backups del log, y lo primero que se hace despues de error es hacer un ultimo backup del log para capturar las ultimas transacciones. La desventaja, consumo de recursos y de espacio en disco. Este modelo es imperativo si la base de datos es critica.

Truncar LOG y reducir su tamaño

Si el LOG se descontrola en BD en modo FULL sobre las que no se hace backup del LOG, por ejemplo, para truncar el log y reducir su tamaño se usan los comandos:

“CHECKPOINT”: para hacer commit de las transacciones pendientes que puedan quedar en el LOG sin grabar a disco aún.

“TRUNCATE LOG” o “BACKUP LOG minombredebasededatos WITH TRUNCATE_ONLY”: para eliminar la información del LOG, sin hacer backup de ella.

“DBCC SHRINKFILE (minombredebasededatos_Log, 100)”: para reducir el tamaño del dispositivo de LOG a 100 MB.

Crear alertas en SQL Server con automatización del procedimiento:

Se pueden crear alertas en el SQL Server para que cuando se dé el caso de que el dispositivo LOG de una cierta BD supere lox X kb de tamaño, se ejecute un script de mantenimiento que haga las operaciones ateriores por nosotros y envíe un email de aviso al operador del sistema.

Fuentes:

BACKUP LOG MiBase WITH TRUNCATE_ONLY
Anuncios

One response to “Modelo de recuperación en SQL Server (recovery model)

Debes haber iniciado sesión para comentar.

A %d blogueros les gusta esto: