La mejor manera de mantener el tamaño de los archivos de registro SQL

13

Soy algo así como un nuevo DBA y estoy administrando una instancia de SQL Server 2012 que tiene una buena cantidad de actividad. Estoy corriendo en modo de recuperación completa porque necesitamos un punto de recuperación en el tiempo.

En este momento, estoy haciendo una copia de seguridad completa de las bases de datos y registros todos los días a las 5 am. Algunos de los archivos de registro se han disparado hasta 300 gb e incluso después de tomar una copia de seguridad, no reducen su tamaño. Puedo hacer que reduzcan su tamaño ejecutando algo similar a:

BACKUP LOG db1 TO DISK = '\\server\share\db1_log1.trn';
DBCC ShrinkFile([db1_log], 0);

BACKUP LOG db1 TO DISK = '\\server\share\db1_log2.trn';
DBCC ShrinkFile([db1_log], 0);

BACKUP LOG db1 TO DISK = '\\server\share\db1_log3.trn';
DBCC ShrinkFile([db1_log], 0);

Cuando reviso los LSN de los archivos de respaldo, veo algo como:

RESTORE headeronly FROM DISK = N'\\server\share\db1_log1.trn'
FirstLSN:  15781000014686200001
SecondLSN: 15802000000665000001

RESTORE headeronly FROM DISK = N'\\server\share\db1_log2.trn'
FirstLSN:  15802000000665000001
SecondLSN: 15805000000004100001

RESTORE headeronly FROM DISK = N'\\server\share\db1_log3.trn'
FirstLSN:  15805000000004100001
SecondLSN: 15808000000004200001

No creo que esté rompiendo mi cadena de registro al reducir los archivos de registro. Al leer esto, creo que estoy perjudicando mi rendimiento porque esos archivos de registro reducidos tienen que volver a crecer.

Preguntas:

  1. ¿Por qué el archivo de registro no se reduce después de mis copias de seguridad? ¿Es porque hay transacciones no comprometidas?
  2. Al principio estaba pensando que debería reducir los archivos de registro después de cada copia de seguridad de las 5:00 a.m. Después de leer sobre cómo eso es malo para el rendimiento, ahora creo que necesito hacer copias de seguridad de registros cada dos horas durante el día. ¿Es eso correcto?
  3. Mi copia de seguridad completa normal de la base de datos / registros ocurre todos los días a las 5:00 a.m. y a veces toma 3 horas. Si programo que las copias de seguridad del registro se realicen cada hora, ¿qué sucederá cuando la copia de seguridad del registro colisione con la copia de seguridad de las 5:00 a.m.
Elijah W. Gagne
fuente

Respuestas:

10
  1. ¿Por qué el archivo de registro no se reduce después de mis copias de seguridad? ¿Es porque hay transacciones no comprometidas?

El archivo de registro NTFS real no se "encoge" de una copia de seguridad del registro de transacciones, pero los VLF (archivos de registro virtuales) dentro del registro de transacciones están marcados para su reutilización (porque ahora están respaldados y persisten en los medios) permitiendo el ajuste de el registro de transacciones solía ocurrir. Si no está haciendo una copia de seguridad del registro de transacciones, o si no tiene la frecuencia suficiente, no habrá VLF disponibles y eso hará que el registro de transacciones crezca (siempre que se establezca el crecimiento automático) para acomodar entradas de registro de transacciones adicionales.

2.Al principio pensé que debería reducir los archivos de registro después de cada copia de seguridad de las 5:00 a.m. Después de leer sobre cómo eso es malo para el rendimiento, ahora creo que necesito hacer copias de seguridad de registros cada dos horas durante el día. ¿Es eso correcto?

La reducción de archivos de rutina y programada no es una buena idea. Solo cuando necesite recuperar el espacio que tanto necesita debería considerar a DBCC SHINKFILE. Además, cuando crece continuamente su registro de transacciones, podría estar obstaculizando otras cosas, como la recuperación de la base de datos. Con demasiados VLF en el registro de transacciones (un problema común cuando el registro de transacciones solo crece por un pequeño incremento de almacenamiento), la cantidad de tiempo para recuperar la base de datos podría ser más larga de lo deseado.

3.Mi copia de seguridad completa normal de la base de datos / registros ocurre todos los días a las 5:00 a.m. y a veces toma 3 horas. Si programo que las copias de seguridad del registro se realicen cada hora, ¿qué sucederá cuando la copia de seguridad del registro colisione con la copia de seguridad de las 5:00 a.m.

No pasará nada, esa es una operación completamente legal. Vea este gráfico a continuación de MSDN . Donde hay un punto negro, esas dos operaciones no pueden ocurrir al mismo tiempo. Como puede ver, una copia de seguridad de la base de datos y un registro de transacciones se permiten simultáneamente.

ingrese la descripción de la imagen aquí

La conclusión aquí es que debe hacer una copia de seguridad de su registro de transacciones con más frecuencia. El crecimiento de archivos NTFS no es el único problema con el que podría encontrarse al no hacer una copia de seguridad de su registro de transacciones con más frecuencia. Si tuviera una falla de almacenamiento y se perdiera su registro de transacciones, entonces solo puede restaurar hasta el momento de su última copia de seguridad del registro de transacciones. Si se pierde el registro de transacciones, no podrá hacer una copia de seguridad de la cola del registro y restaurarlo en el momento de la falla. En su caso, podría perder 24 horas de datos. Pero si realiza una copia de seguridad de sus registros de transacciones cada, por ejemplo, 30 minutos, su pérdida máxima de datos sería de 30 minutos. En ese caso, si su registro de transacciones se ha ido y tiene su copia de seguridad completa y su cadena de registro intacta, podría restaurar a esa última copia de seguridad de registro.

Documentación de TechNet sobre truncamiento del registro de transacciones

Thomas Stringer
fuente
5

El problema principal con el que está lidiando es que está haciendo una copia de seguridad de sus registros una vez al día. El comportamiento del motor es que los registros de registro (espacio utilizado) dentro de un archivo de registro solo se eliminarán después de una copia de seguridad de registro exitosa. Este espacio se recupera cuando se produce un punto de control , pero si su base de datos está en recuperación completa / masiva registrada, los registros solo se eliminarán si se realizó una copia de seguridad exitosa.

Las copias de seguridad de registro están destinadas a utilizarse junto con las copias de seguridad completas y deben ejecutarse a intervalos regulares entre las copias de seguridad completas. Este intervalo puede ser cualquier período, aunque generalmente ejecuté copias de seguridad de registros cada 15 minutos. Su intervalo depende de su Objetivo de punto de recuperación (RPO) y de la cantidad de datos que puede perder en caso de una recuperación.

Si realiza copias de seguridad de registros regulares, no debería tener que realizar reducciones de archivos regulares porque administrará el espacio del archivo de registro antes de que se vea obligado a crecer.

Mike Fal
fuente
-1

Tengo el mismo problema que tú antes. Mi archivo de registro siempre aumenta; en cambio, uso una copia de seguridad completa de la base de datos todas las noches. Así que aquí está mi solución:

  1. copia de seguridad de su archivo de registro actual.

  2. Establezca su base de datos en recuperación simple

    • Debido a la Recuperación completa -> El archivo de registro no elimina la transacción confirmada, solo reorganiza sus datos -> El archivo Shink no afecta mucho -> y viceversa para la Recuperación simple.
  3. Reduzca su archivo de registro a 1 MB o menos (depende de usted)

  4. Establezca su Base de datos nuevamente en Recuperación completa.

Espero que sea de ayuda

Phong Tran

Phong Tran
fuente