Registro de transacciones y duplicación: buscando la explicación más tonta posible

8

En primer lugar, debo admitir que lucho con el concepto de Registro de transacciones. Quiero decir, entiendo que es el registro de todas las transacciones que ocurren en la base de datos, pero cuando se trata de ponerlo en contexto adecuadamente dentro de alguna tarea, obviamente me falta algo. Entonces, para cualquiera que responda la pregunta, no dude en ampliar la teoría detrás del Registro de transacciones.

La pregunta principal es: tengo SQL Server 2008 y una base de datos de 2 GB que necesito duplicada (tiene un registro de transacciones de 12 GB). Si no estaba reflejando esa base de datos, supongo que podría cambiar al modo Simple o truncar el registro después de la copia de seguridad. Pero en este caso, ¿qué debo hacer si deseo mantener ese registro de transacciones bajo control? Según tengo entendido, necesito mantener todo el registro de transacciones si deseo poder duplicar fácilmente la base de datos (solo haga una copia de seguridad completa).

¿Hay alguna forma de evitar esto? Idealmente, desearía que fuera posible hacer una copia de seguridad que mantenga tanto MDF como LDF en 1 archivo cada vez y después de que se realice la copia de seguridad. El Registro de transacciones (LDF) en la base de datos se reduce a 0. El problema con este escenario son las copias de seguridad incrementales, si mi primera copia de seguridad registro truncado, supongo que la segunda copia de seguridad necesitaría hacer referencia a la primera si quiero hacer un reflejo más tarde (es decir, estaría atascado en mantener un montón de archivos en lugar de solo uno).

Entonces, ¿alguien puede iluminarme sobre este tema? Entiendo que estoy tratando de llenar muchos huecos aquí y que mis "soluciones" propuestas pueden no ser las mejores, pero agradecería sinceramente que alguien pueda empujarme en la dirección correcta en los Registros de transacciones, cómo afectan el reflejo y lo mejor practica con esos dos.

nikib3ro
fuente

Respuestas:

5

El registro de transacciones es un método importante para restaurar su base de datos en un momento específico. Si tiene una base de datos grande> 500 GB y debe restaurar su base de datos desde una copia de seguridad completa, esto le costará mucho tiempo. Además, si realiza una copia de seguridad completa de su base de datos cada vez, piense en cuánto tiempo podría llevar esta copia de seguridad.

Un concepto muy fácil para SQL Server puede ser: Establecer el modelo de recuperación de su base de datos completa

Cree un plan de mantenimiento (1) en SQL Server:

  • Realice FullBackup todas las semanas tal vez en D: \ yourbackup \ FullDBBackup.bak
  • Haga una copia de seguridad diferencial cada dos días en D: \ yourbackup \ DiffBackup.bak
  • Haga una copia de seguridad cada 2 horas de su registro de transacciones en D: \ Yourbackup \ Tranlogbackup.trn

Cree un plan de mantenimiento (2) en SQL Server:

  • Elimine todos los archivos anteriores de 8 días de D: \ yourBackup * .bak
  • Elimine todos los archivos anteriores 3 días de D: \ yourBackup * .trn

En este caso, puede recuperar su base de datos en un tiempo específico, muy rápido, muy fácil. SQL Server administrará automáticamente sus archivos de "Copia de seguridad", los archivos más antiguos se eliminarán después de su rango de tiempo específico.

Le sugiero que lea sobre el registro de transacciones de SQL Server aquí:

http://www.sqlservercentral.com/articles/Design+and+Theory/63350/

Para usar los planes de mantenimiento en SQL Server, solo pregunte a BING / google: D

deberías construir un pequeño db de prueba y probarlo antes de comenzar la producción

Shanky
fuente
No tengo ningún problema con las copias de seguridad completas y el tiempo, ya que puedo detener todo el sistema hasta que finalicen. Una pregunta sobre su respuesta: ¿trunco ​​el registro de transacciones en este escenario? Si no es así, ¿entiendo que solo necesito la última versión de FullDBBackup.bak para recuperar la base de datos? No me importan los puntos de tiempo específicos: lo único que me importa es la última versión de DB que obtengo cuando hago una copia de seguridad. Significado: no necesito registros de transacciones; Solo los mantengo solo por el reflejo. ¿Hay alguna manera de evitar eso?
nikib3ro
2
1. no puede truncar su registro: D 2. Si realiza una copia de seguridad de su registro de transferencia, SQL Server le dará este espacio libre para su reutilización en su archivo de registro. simplemente pruebe dbcc sqlperf ('logpsace') bevore la copia de seguridad y luego haga lo mismo después de su copia de seguridad. y al final, necesita un registro de transacciones ... solo pruebe mi ejemplo
Finalmente pude implementar sus sugerencias en el entorno de prueba y hasta ahora me gusta lo que estoy viendo. Solo avíseme si lo entiendo bien: si ahora necesito restaurar la base de datos, primero usaría la copia de seguridad COMPLETA que hice, y luego usando una combinación de copias de seguridad diferenciales y registros de transacciones, podría restaurar mi base de datos a cierto punto de tiempo? Estoy en lo cierto? ¿Y también supongo que para duplicar, solo necesitaría detener el servidor y hacer una copia de seguridad completa? ¿O necesitaré los registros de transacciones para configurar la duplicación? Gracias de nuevo por toda su ayuda y respuestas!
nikib3ro
3

Para aprovechar la duplicación, debe tener la base de datos en modo de recuperación COMPLETA y deberá realizar copias de seguridad del registro de transacciones para evitar que el archivo de registro crezca. Si no necesita las copias de seguridad del registro, simplemente purgue después de x cantidad de horas con un plan de mantenimiento, pero debe tomarlas.

Para limpiar el entorno, debe eliminar la duplicación, cambiar el modo de recuperación a simple, reducir el tamaño del archivo de registro a través de Paul Randal Way recomendado , volver al modo de recuperación completa, configurar copias de seguridad completas y registrar, luego reinicializar su espejo. Puede intentar reducir el tamaño del registro mientras el reflejo está en su lugar, pero será mucho más fácil eliminarlo primero. 1 GB no debería ser una base de datos demasiado mala para reinicializar.

Jason Cumberland
fuente