sql >> Base de Datos >  >> RDS >> Sqlserver

Automatice la restauración de prueba de base de datos en SQL Server

Este artículo habla sobre la automatización del proceso de restauración de la base de datos, que a menudo lo realiza manualmente el DBA o el equipo de infraestructura responsable de la administración de los servidores de la base de datos y las bases de datos.

Este artículo también destaca la importancia de automatizar las tareas de administración de la base de datos, como la copia de seguridad y la restauración de la base de datos, para garantizar que la coherencia y la confiabilidad de las bases de datos de producción estén intactas.

Además, habrá algunos consejos sobre cómo planificar e implementar la automatización de tareas de restauración de bases de datos en un escenario de la vida real.

Restauración de prueba de base de datos y CheckDB (perspectiva DBA)

La importancia del respaldo y la restauración de la base de datos de SQL Server desde el punto de vista del administrador de la base de datos o del equipo de infraestructura (responsable de la administración del servidor de la base de datos) es mucho más que simplemente ejecutar el respaldo y la restauración, ya que esta es una de las formas de garantizar que el la estrategia de recuperación ante desastres (DR) está bien implementada.

Esto también significa que las operaciones de copia de seguridad y restauración de la base de datos son más efectivas si son compatibles con cualquier otro mecanismo de verificación de coherencia.

Uso del comando DBCC CHECKDB

SQL Server presenta un comando útil para verificar la consistencia de una base de datos.

De acuerdo con la documentación de Microsoft, el comando DBCC CHECKDB se usa para verificar la integridad lógica y física de todos los objetos en la base de datos mediante la realización de una serie de operaciones diferentes.

La ejecución exitosa del comando sin ningún error indica que la base de datos se encuentra en un estado estable y consistente.

Este comando se puede ejecutar simplemente de la siguiente manera siempre que la base de datos deseada esté conectada:

Escenario de restauración de prueba de base de datos

Consideremos un escenario del mundo real en el que un DBA crea constantemente copias de seguridad de la base de datos de producción.

Sin embargo, la creación de copias de seguridad no garantiza que la recuperación de desastres de la base de datos, también conocida como DR, esté en su lugar a menos que la base de datos se restaure correctamente.

Por lo tanto, la base de datos debe restaurarse desde la copia de seguridad para garantizar que, en caso de cualquier incidente en la base de datos, los datos puedan restaurarse correctamente.

La copia de seguridad de la base de datos de producción nunca debe restaurarse en el servidor de producción con fines de prueba.

Entonces, ¿cómo se asegura un DBA de que la copia de seguridad esté bien? Simplemente restaurando la última copia de seguridad de la base de datos en otro servidor de prueba.

Una vez que la copia de seguridad de la base de datos se haya restaurado correctamente, se debe ejecutar el comando DBCC CHECKDB para asegurarse de que la base de datos restaurada sea consistente y estable.

Esta es una tarea importante pero que consume mucho tiempo y que también requiere mucho cuidado. Idealmente, debería estar automatizado, a menos que las reglas y regulaciones de su organización restrinjan la automatización de esta tarea en particular.

Automatización de la restauración de pruebas de bases de datos

Veamos ahora cómo automatizar la restauración de prueba de base de datos en detalle.

Restauración de prueba de base de datos de planificación

Es muy importante planificar tus pasos para que puedas automatizarlos con facilidad. La planificación también requiere que cumpla con las condiciones previas de la automatización de tareas de SQL.

Precondiciones

Asegúrese de que se cumplan las siguientes condiciones previas antes de automatizar las tareas de restauración de la base de datos en el servidor SQL utilizando la forma tradicional:

  1. Su automatización no entra en conflicto con las normas y reglamentos de la organización
  2. Está autorizado para automatizar esta tarea
  3. El Agente SQL se está ejecutando
  4. El servidor de la base de datos en el que se realizará la restauración debe estar en funcionamiento
  5. El proceso de copia de seguridad de la base de datos ya está automatizado y la copia de seguridad se envía a una unidad de copia de seguridad
  6. El servidor de prueba puede acceder a la unidad de copia de seguridad

Resumen de pasos

  1. La copia de seguridad de la base de datos se ejecuta en un servidor
  2. Esta copia de seguridad se guarda en una unidad de copia de seguridad a la que puede acceder otro servidor de prueba
  3. Se programó un trabajo de SQL en el servidor de prueba para ejecutar la restauración de la copia de seguridad
  4. Una vez que se ejecuta el trabajo de SQL, se puede seguir ejecutando manualmente DBCC CheckDB en la base de datos restaurada, pero también se puede automatizar

Artículo de referencia

Consulte el artículo Conceptos básicos de la automatización de tareas de SQL Server para automatizar la tarea de copia de seguridad de la base de datos, ya que este artículo asume que la tarea de copia de seguridad de la base de datos ya se ha automatizado y guarda la copia de seguridad en una unidad de copia de seguridad a la que puede acceder un servidor de prueba.

Replicar la tarea de copia de seguridad de la base de datos

Supongamos que se ha ejecutado la tarea de copia de seguridad y se ha creado una copia de seguridad en una unidad de copia de seguridad.

Para replicar esta tarea, vamos a crear una base de datos de muestra llamada UniversityV7 de la siguiente manera:

-- (1) Create the UniversityV7 sample database
CREATE DATABASE UniversityV7;
GO

USE UniversityV7

CREATE TABLE [dbo].[Student] (
    [StudentId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]      VARCHAR (30)  NULL,
    [Course]    VARCHAR (30)  NULL,
    [Marks]     INT           NULL,
    [ExamDate]  DATETIME2 (7) NULL,
    CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC)
);
GO

INSERT INTO [dbo].[Student]
           ([Name]
           ,[Course]
           ,[Marks]
           ,[ExamDate])
     VALUES
           ('Asif'
           ,'Power BI Fundamentals'
           ,85
           ,'01 Jan 2019'),
		   ('Mike'
           ,'Power BI Fundamentals'
           ,80
           ,'01 Jan 2019'),
		   ('Sadaf'
           ,'Power BI Fundamentals'
           ,75
           ,'01 Jan 2019')
		   
GO

La ejecución de este script crea y completa la base de datos de muestra.

Verifique la base de datos ejecutando el siguiente script:

SELECT [StudentId]
      ,[Name]
      ,[Course]
      ,[Marks]
      ,[ExamDate]
  FROM [UniversityV7].[dbo].[Student]

La salida debe ser la siguiente:

Supongamos que la tarea de copia de seguridad está automatizada. Sin embargo, para omitir este paso, todavía tenemos que crear manualmente la copia de seguridad de la base de datos y guardarla en una unidad de copia de seguridad a la que pueda acceder el servidor de prueba.

Replique la tarea de copia de seguridad de la base de datos ejecutando el siguiente script T-SQL:

-- Backup the UniversityV7 sample database using the date stamp
DECLARE @BackupName VARCHAR(100)
SET @BackupName=CONCAT('C:\Backup\UniversityV7-',FORMAT(GETDATE(),'yyyy-MM-dd'),'.bak')
BACKUP DATABASE UniversityV7 TO [email protected] WITH COMPRESSION, INIT;
GO

Comprobación de la copia de seguridad de la base de datos

Verifique la copia de seguridad de la base de datos navegando a la carpeta donde acabamos de crear la copia de seguridad y vea el archivo de copia de seguridad:

Conectarse a otra instancia de SQL

Ahora, conectémonos a otra instancia de SQL para emular un servidor de prueba. Lo primero que hay que comprobar es si el Agente SQL se está ejecutando o no.

Iniciar el Agente SQL (si no se está ejecutando)

Haga clic derecho en Agente SQL Server y haga clic en Iniciar como se muestra a continuación:

Crear un nuevo trabajo

A continuación, haga clic con el botón derecho en Empleos , haga clic en Nuevo trabajo... y luego escriba el nombre del trabajo como "Restauración de prueba de base de datos ”:

A continuación, seleccione Pasos. en el menú de navegación izquierdo, haga clic en Nuevo , y luego escriba "Restauración de prueba de base de datos ” como el nombre del paso:

Escriba el siguiente script T-SQL en el cuadro de entrada Comando después de asegurarse de que el tipo T-SQL esté seleccionado en la lista desplegable correspondiente.

-- Restore the UniversityV7 sample database 
RESTORE DATABASE UniversityV7 FROM DISK=N'C:\Backup\UniversityV7-2019-08-27.bak'
WITH
MOVE 'UniversityV7' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLTAB\MSSQL\DATA\UniversityV7_Data.mdf',
MOVE 'UniversityV7_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLTAB\MSSQL\DATA\UniversityV7_Log.ldf'
,RECOVERY,REPLACE,STATS=10;
GO

Tenga en cuenta que la ruta C:\Program Files\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf proporcionada en este guión es solo para fines de demostración. Y Tienes que reemplazar esto con real ruta de su instancia de servidor SQL de prueba.

Finalmente, haga clic en Aceptar.

Programe el trabajo para que se ejecute en 2 minutos

Haga clic con el botón derecho en Restauración de prueba de base de datos trabajo en Empleos y haga clic en Propiedades:

Haga clic en Nuevo , escriba "Cada 2 minutos (prueba) ”, y configure el programa para que se ejecute después de dos minutos:

Después de unos minutos, conéctese al servidor de prueba y expanda las Bases de datos para ver que el UniversityV7 la base de datos se ha restaurado con éxito mediante una tarea (trabajo) de SQL Server automatizada.

No dude en ejecutar DBCC CheckDB para asegurarse de que el proceso de restauración de la base de datos esté bien.

¡Felicidades! Has automatizado con éxito el proceso de restauración de la prueba de la base de datos.

Cosas que hacer

Ahora que puede automatizar la copia de seguridad de la base de datos y la restauración de prueba, intente completar las siguientes tareas para mejorar sus habilidades:

  1. Agregar DBCC CheckDB como parte del proceso de restauración de base de datos automatizado
  2. Automatizar la copia de seguridad en un servidor y restaurarla en otro servidor de prueba
  3. Automatice la copia de seguridad de la base de datos y pruebe las tareas de restauración para múltiples bases de datos