Sincronizando bases de datos usando el registro de transacciones – Transvase del Registro de SQL Server

No importa cuán bien administrados están sus sistemas, los accidentes pueden ocurrir y potencialmente conducir a consecuencias desastrosas. Para asegurar que una solución de recuperación de desastres está disponible, siempre es bueno tener una copia de la base de datos primaria en otra instancia de SQL Server.

La primera manera de lograr esto es utilizar el transvase de Registros de SQL Server.

El transvase de Registros de SQL Server le permite enviar automáticamente las copias de seguridad del registro de transacciones desde una base de datos original localizada en una instancia primaria del servidor a otras bases de datos en diferentes instancias del servidor. Las copias de seguridad del registro de transacciones necesitan ser aplicadas a cada base de datos secundaria individualmente.

Cómo funciona esto:

  1. La copia de seguridad del registro de transacciones en la instancia primaria del servidor es creada.
  2. El archivo de la copia de seguridad es copiado a otra instancia del servidor.
  3. La copia de seguridad del registro de transacciones es restaurado en la segunda instancia del servidor.

Prerrequisitos:

  • La base de datos primaria debe usar el modelo de recuperación completo o por medio de registros de operaciones masivas (si el modelo de recuperación de la base de datos es cambiado a simple, el transvase de registros de SQL Server dejará de funcionar).
  • Antes de que pueda configurar el transvase de registros en SQL Server, las copias de seguridad del registro debe estar disponible para un servidor secundario compartiendo el directorio donde son generadas las copias de seguridad del registro.

Para configurar el transvase de registro de SQL Server:

  1. Navegue a la base de datos que desea usar como su base de datos primaria en Object Explorer en SMSS, haga clic derecho y seleccione Properties.

  2. En el panel Select a page, haga clic en Transaction Log Shipping y seleccione la casilla de Enable this as a primary database in a log shipping configuration.

  3. Haga clic en Backup Settings
  4. En el diálogo Transaction Log Backup Settings:
    • Especifique la ruta de red a la carpeta de la copia de seguridad del registro de transacciones.
    • Si la carpeta de la copia de seguridad está en el servidor primario, especifique la ruta local a la carpeta de copias de seguridad en el campo If the backup folder is located on the primary server, type a local path to the folder. Si la carpeta de copias de seguridad no está en el servidor primario, este campo debería permanecer vacío.
    • Especifique los parámetros para las opciones Delete files older than y Alert if no backup occurs within.
    • Haga clic en el botón Schedule y personalice los parámetros en el programa de copias de seguridad, y provea un nombre para el trabajo en el campo Job name.
    • En el menú desplegable Set backup compression seleccione uno de los ajustes de compresión: Use the default server setting, Compress backup, o Do not compress backup.
  5. Después de todas las opciones en el diálogo Transaction Log Backup Settings hayan sido configuradas, haga clic en el botón OK para cerrar el diálogo.

  6. De vuelta en el diálogo Database properties, en el diálogo Secondary server instances and databases, haga clic en el botón Add para abrir el diálogo Secondary Database Settings, y haga lo siguiente:
    1. Haga clic en Connect y conéctese a la instancia de SQL Server que será usada como un servidor secundario.
    2. En el diálogo Secondary Database field, especifique el nombre de la base de datos que será creada o elija una base de datos existente desde la lista del menú desplegable.
    3. En las pestañas Initialize Secondary database, Copy files y Restore, elija los ajustes/opciones apropiados para la base de datos secundaria y haga clic en OK.
  7. Para monitorear esta configuración de transvase del registro en SQL Server, el servidor monitor debe ser añadido en este punto (no puede ser añadido después sin reemplazar toda la configuración). La instancia del servidor monitor puede ser añadida eligiendo la casilla Use a monitor server instance y especificando los parámetros del servidor en el diálogo Log shipping monitor settings, que se accede vía el botón Settings.
  8. Haga clic en OK para finalizar el proceso.

Esto asegura que hay una copia de la base de datos primaria en otra instancia de SQL Server que puede ser usada como una precaución de seguridad en caso de un desastre, o usado para cualquier otro propósito.

Incuso así, hay muchos contras con este método:

  • No es posible elegir sólo parte de la base de datos y excluir partes de los datos desde el registro de transacciones.
  • No es posible usar el transvase de registro de SQL Server con una base de datos con un nivel de compatibilidad más bajo, incluso cuando las características de un nivel más nuevo no son utilizadas.
  • No es posible ver las transacciones que han ocurrido previamente a transvasarlas, o después de que han sido aplicadas.

La segunda manera de lograr esto, que evitará los contras previamente descritos, es usar ApexSQL Log, un lector de registros de transacciones de SQL Server..

El aseguramiento de que hay una copia de seguridad de la base de datos primaria en otra instancia de SQL Server puede ser logrado con ApexSQL Log creando un script para Rehacer, el cual reproducirá los cambios exactos que han ocurrido:

  1. Inicie ApexSQL Log.
  2. Conéctese a SQL Server y elija la base de datos ‘original’ desde la lista desplegable de bases de datos.

  3. Haga clic en Next para avanzar.
  4. El registro de transacciones en línea para la base de datos seleccionada será automáticamente seleccionado. Añada todas las copias de seguridad de registros de transacciones para asegurar que la cadena completa de copias de seguridad de registros existe haciendo clic en el botón Add y seleccionando las copias de seguridad apropiadas desde el diálogo Open.

    Selecting SQL logs to analyze

  5. En el siguiente paso del asistente, elija la opción Undo/Redo.

  6. En la característica Filter setup, especifique filtros de tiempo/fecha, filtros de Operaciones, filtros de Tablas o las opciones avanzadas apropiadas para su caso, por ejemplo, si el tiempo entre dos sincronizaciones fue una semana, use el filtro Custom para especificar el rango de tiempo/fecha.


  7. En el diálogo Undo/Redo, elija la opción Redo (Reconstruct) Script.

  8. Haga clic en Save batch script y especifique la ruta de salida para crear el archivo .bat conteniendo el script para rehacer.
  9. El único trabajo restante es automatizar este proceso. Para este propósito, usted puede usar Windows Task Scheduler (Windows Scheduler). Aquí está una solución detallada en How to automate daily reports with ApexSQL Log

Traductor: Daniel Calbimonte

 

Febrero 23, 2017