Saltar al contenido

Diario de un DBA

Problemas y soluciones para SQL Server

Menú
  • Inicio
  • Consultoria gratuita
  • tempdb
  • Curso Azure DP-300
  • Rendimiento
  • Seguridad
  • Sobre Mi
Menú

Configurar mirroring en SQL Server

Publicada el agosto 14, 2022abril 15, 2023 por solracamo

Contenido del post:

Toggle
  • Pre  requisitos para configurar un mirroring en SQL Server
  • Configurar mirroring SQL Server
    • Servidor primario
      • Tomar un backup full de la base de datos
      • Tomar un backup de los logs de la base de datos
    • Servidor secundario
      • Restaurar el backup full de la base de datos en modo NORECOVERY
      • Restaurar el backup de los logs de la base de datos
    • Efectuar el mirror entre los servidores
    • Soluciona bug mirroring SQL Server 2016
      • Server secundario
      • Server primario

Hace un par de semanas escribí un post sobre las preguntas que os podían hacer en una entrevista de trabajo para ser DBA de SQL Server, y en ese post os dije que en el futuro os iba a explicar como configurar un mirroring en SQL Server.

El futuro ha llegado, así que aquí os dejo los pre requisitos y los pasos necesarios para configurarlo.

Pre  requisitos para configurar un mirroring en SQL Server

Para poder configurar un mirroring en SQL Server necesitamos al menos 2 servidores y 2 bases de datos (una en cada servidor) en FULL Recovery model.

Para este ejemplo usaremos los siguientes nombres, esta información os ayudará a poder seguir el articulo de forma correcta.

  • Servidor principal: DB-1A
  • Servidor secundario: DB-2A
  • Base de datos: DataMigration

En caso de que se hagan backups de log de forma muy frecuente es muy recomendable parar el job de los backups de log ya que si antes de hacer el mirror se hace otro backup de log tendremos que volver a hacer los backups y los restores.

Si la versión es Standard Edition sólo puede ser High Safety mirror, sólo se puede cambiar a High Performance en Enterprise edition.

Configurar mirroring SQL Server

Servidor primario

Empezaremos tomando un backup full y un backup de los logs de la base de datos DataMigration en el servidor principal. Usaré una ubicación en red a la que los 2 servidores tengan acceso.

Tomar un backup full de la base de datos

BACKUP DATABASE [DataMigration] 
TO  DISK = N'\\db-backups\DataMigration.bak' 
WITH NOFORMAT, 
NOINIT,  
NAME = N'DatabaseMigration Database Backup', 
SKIP, NOREWIND, NOUNLOAD,  
STATS = 10
GO

Tomar un backup de los logs de la base de datos

BACKUP LOG [DataMigration] TO  DISK = N'\\db-backups\DataMigration.trn' 
WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

En caso de que se muestre un error diciendo que no es posible realizar esta operación porque la base de datos está en SIMPLE recovery model primero debéis aseguraros que esto no es verdad y luego cambiar a simple y volver a cambiar a FULL. Esto se puede deber a algún bug de la versión.

Servidor secundario

Ahora tendremos que efectuar los procesos de restauración de esta base de datos en el servidores secundario, en este caso restauraremos la base de datos dejándola en modo norecovery.

Restaurar el backup full de la base de datos en modo NORECOVERY

RESTORE DATABASE [DataMigration] FROM  DISK = N'\\db-backups\DataMigration.bak' 
WITH  FILE = 1,  
MOVE N'DataMigration' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\DataMigration.mdf',  
MOVE N'DataMigration_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\DataMigration_log.ldf',  
NORECOVERY,  
NOUNLOAD,  
REPLACE,  
STATS = 5
GO

Restaurar el backup de los logs de la base de datos

Una vez que la base de datos se encuentra en modo «restoring» efectuaremos el restore de los logs

RESTORE LOG [DataMigration] FROM  DISK = N'\\db-backups\DataMigration.trn'
WITH  FILE = 1,  
NORECOVERY,  
NOUNLOAD,  STATS = 10
GO

Efectuar el mirror entre los servidores

Una vez hayamos completado el proceso de backup y restore anterior sólo nos queda efectuar el mirror.

Para esto haremos click con el botón derecho sobre la base de datos «DataMigration» en el servidor primario, haremos click en «task» y luego en «mirror», ahora sólo queda presionar «iniciar el mirror» y ya todo estará funcionando.

Soluciona bug mirroring SQL Server 2016

Existe un bug en la versión 2016 de SQL Server que muestra el siguiente fallo al hacer esto «Database ‘DatabaseName’ cannot be open. It is in the middle of a restore. (Microsoft SQL Server, Error:927)».

No existe una solución real a esto, por lo que tendremos que realizar el proceso de usando un par de scripts.

Server secundario

ALTER DATABASE DataMigration 
    SET PARTNER =   'TCP://DB-1A:7022'  
GO

Server primario

ALTER DATABASE DataMigration   
    SET PARTNER = 'TCP://DB-1B:7022:7022'  
GO

 

Espero que este pequeño tutorial os haya servido para poder empezar a introduciros en el mundo de la alta disponibilidad.

 

1 comentario en «Configurar mirroring en SQL Server»

  1. Pingback: 💻SQL Server - Preguntas y respuestas para una entrevista de trabajo de DBA - Diario de un DBA

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Consultoria Gratis

¿Tienes un problema o una consulta sobre tu servidor SQL Server? ¿Necesitas hacer algún tipo de mantenimiento o tarea en tu instancia, pero no tienes claro cómo hacerlo?

Envíame un email con tu caso y te contestaré lo antes posible de forma totalmente gratuita.

Puedes utilizar el formulario que encontrarás haciendo click aquí.

Sobre mi

Efectivamente, soy un muñeco de slack con la camiseta de Fernando Alonso en Renault, pero también soy una DBA mid level que vive y trabaja en inglaterra como consultor SQL Server.

El objetivo de este blog es escribir los problemas con los que me he ido encontrando y cómo los solucioné. Si estas soluciones han servido para mí, es posible que también lo hagan para ti, ¿no?

Otras soluciones

  • Recuperar la password de la cuenta SA en SQL Serveroctubre 5, 2024
  • Always On en SQL Server. Todo lo que necesitas saberagosto 24, 2024
  • Recuperar una tabla borrada en SQL Serveragosto 18, 2024
  • Mover bases de datos a otro disco en SQL Serveragosto 11, 2024
  • Comprobar los últimos backups tomados en una instancia SQL Serverjunio 29, 2024
  • Comprobar fragmentación en SQL Serverjunio 23, 2024

Curso Azure DP-300 Gratis

  • Azure DP-300 curso en Español – Parte 1noviembre 17, 2022
  • Crear una máquina virtual con SQL server en Azurenoviembre 17, 2022
  • Crear un servidor SQL Server en Azure.noviembre 22, 2022
  • Azure DP-300 curso en Español – Parte 2noviembre 24, 2022
  • Azure DP-300 curso en Español – Parte 3diciembre 1, 2022
  • Azure DP-300 curso en Español – Parte 4diciembre 14, 2022

Consulta las páginas que nadie consulta:
Privacidad
Cookies

Escríbeme!
Contacto

© 2025 Diario de un DBA
x