Mantenimiento del registro de transacciones en la base de datos Mirror


10

Versión de SQL Server: 2008 R2 Enterprise SP2

Estoy tratando de manejar nuestro mantenimiento de SQL Server y me encontré con algo que creo que es incorrecto. Tenemos una única instancia de producción con 3 bases de datos cada una reflejada fuera del sitio a una instancia de DR.

Mientras miraba la instancia de DR, noté que los archivos LDF eran enormes, más de 35 GB para las bases de datos muy utilizadas.

Entiendo que esto probablemente se deba a que las bases de datos espejo están en modo de recuperación completa y que los registros nunca se han respaldado, simplemente continuarán creciendo hasta quedarse sin espacio en el disco.

Estamos haciendo copias de seguridad de registros en la base de datos principal, y mi pregunta es ¿cuáles son los problemas con hacer una copia de seguridad de registros en un espejo?

Al menos una copia de seguridad completa de la base de datos desde el espejo debe completarse antes de hacer una copia de seguridad del registro, en ese caso, ¿hay opciones especiales que deben usarse porque es un espejo?

Nuevamente, se trata de recomendaciones de mantenimiento del registro de transacciones en la base de datos MIRROR .

Gracias por cualquier entrada

Respuestas:


5

Estamos haciendo copias de seguridad de registros en la base de datos principal, y mi pregunta es ¿cuáles son los problemas con hacer una copia de seguridad de registros en un espejo?

No puede hacer una copia de seguridad del registro en la base de datos reflejada.

Al menos una copia de seguridad completa de la base de datos desde el espejo debe completarse antes de hacer una copia de seguridad del registro, en ese caso, ¿hay opciones especiales que deben usarse porque es un espejo?

Tampoco puede hacer una copia de seguridad completa de la base de datos en la base de datos reflejada.

Tome esto por ejemplo: tengo el Server1que contiene la base de datos principal AdventureWorks2012y tengo el Server2que contiene el espejo. Esto es lo que sucede cuando intento ejecutar copias de seguridad en la base de datos reflejada (activada Server2):

use master;
go

backup database AdventureWorks2012
to disk = 'c:\sqlserver\AW_mirror.bak';
go

Msg 954, Nivel 14, Estado 1, Línea 2
La base de datos "AdventureWorks2012" no se puede abrir. Está actuando como una base de datos espejo .
El mensaje 3013, Nivel 16, Estado 1, Línea 2
BASE DE DATOS DE RESPALDO está finalizando de manera anormal.

backup log AdventureWorks2012
to disk = 'c:\sqlserver\AW_mirror.trn';
go

Mensaje 954, Nivel 14, Estado 1, Línea 1
La base de datos "AdventureWorks2012" no se puede abrir. Está actuando como una base de datos espejo .
Msg 3013, Nivel 16, Estado 1, Línea 1
BACKUP LOG está terminando anormalmente.

Eche un vistazo a estas Preguntas frecuentes sobre la creación de reflejo de la base de datos de Robert Davis . Lo citaré con respecto a esta operación y el mantenimiento del registro de transacciones de la base de datos espejo:

Cuando realiza una copia de seguridad del registro en el principal, los archivos de registro virtuales (unidades individuales dentro del archivo de registro) se marcan como regrabables. Los mismos VLF están marcados como regrabables en el archivo de registro espejo también. El estado de VLF se refleja en la base de datos .

Entonces ahí lo tienes. Si tiene copias de seguridad del registro de transacciones en el principal, entonces un comportamiento similar de reutilización de registros se reflejará en su base de datos asociada.


Odio cuando hay un artículo que responde mi pregunta exacta y no lo encuentro. Esto tiene mucho sentido, cuando me hice cargo de los registros no estaban siendo respaldados y crecí mucho en el director, así que después de comenzar las copias de seguridad regulares, reduje los registros pero no pensé hacer esto en el espejo. ¡Gracias!
Jeremie Grund

1
Una pregunta adicional sería: ¿es posible reducir el registro de transacciones duplicado cubierto ahora que tenemos copias de seguridad regulares del registro de transacciones en el principal?
Jeremie Grund

@JeremieGrund Una forma de hacer esto sería realizar una conmutación por error a la base de datos reflejada y hacer la reducción allí. Pruebe esto a fondo en un entorno que no sea de producción para asegurarse de que tenga el comportamiento que desea / espera.
Thomas Stringer

0

@JeremieGrund: si la arquitectura del archivo físico de la base de datos es la misma (nombres y ubicaciones de unidades de archivos de datos y de registro), si reduce el archivo de registro en el principal, el comando de reducción se enviará al espejo y hará lo mismo en el espejo. De esta manera, su archivo de registro espejo puede mantenerse. Si la arquitectura de los archivos no es idéntica, entonces debe seguir la sugerencia de Thomas Stringer.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.