Uso de la copia de seguridad de snapshots de T-SQL: Instantáneas de bases de datos de múltiples matrices

Este cuarto artículo de una serie sobre la copia de seguridad de snapshots de T-SQL analiza el uso de la función en un escenario en el que una base de datos abarca varias matrices de almacenamiento.

Multi-array Database Snapshots

Resumen

If you have a multi-array environment, you can freeze database write I/O to take coordinated snapshots across volumes on two FlashArray systems using the T-SQL snapshot backup feature in SQL Server 2022.

image_pdfimage_print

Este artículo apareció por primera vez en el blog de Anthony Nocentino. Se ha vuelto a publicar con el crédito y consentimiento del autor.

En esta publicación, la cuarta de la serie, quiero compartir un ejemplo que demuestra la función de copia de seguridad de snapshots T-SQL de SQL Server 2022 en un escenario en el que una base de datos abarca varias matrices de almacenamiento. Si está lidiando con entornos multiarreglo, apreciará cómo esta técnica congela la I/O de escritura de la base de datos para tomar snapshots coordinadas en volúmenes en dos sistemas FlashArray™. En esta publicación, lo guiaré a través del proceso, señalaré algunos de los elementos clave del guión y le mostraré cuánto tarda la pausa de I/O de escritura.

El escenario

Imagine que tiene una base de datos llamada MultiArraySnapshot que se distribuye en dos volúmenes separados, cada uno ubicado en su propio sistema FlashArray de Pure Storage®. Esta configuración puede ser beneficiosa para administrar entornos grandes de misión crítica donde el rendimiento y la consistencia de datos son esenciales. El desafío radica en coordinar una copia de seguridad instantánea que permita que ambas matrices capturen una vista uniforme de los datos simultáneamente. Y con la función de copia de seguridad de snapshots T-SQL de SQL Server 2022, podemos hacer precisamente eso… profundicemos.

Una base de datos con archivos en dos FlashArray
Figura 1: Una base de datos con archivos en dos sistemas FlashArray.

Descripción general del proceso

El proceso es directo: Congele la base de datos usando la snapshot T-SQL, tome snapshots de cada arreglo y luego ejecute una copia de seguridad solo de metadatos para documentar los detalles de la snapshot. Esta copia de seguridad de metadatos descongela automáticamente la base de datos.

Configuración del entorno

En primer lugar, importamos los módulos necesarios y definimos las variables de conexión para nuestra instancia de SQL Server, los dos sistemas FlashArray y varios volúmenes. Observe cómo especificamos detalles como los números de serie del disco objetivo y la ruta de copia de seguridad compartida:

Establecemos una sesión de remoción de PowerShell utilizando la nueva sesión y creamos una conexión SMO persistente con Connect-DbaInstance. Esta conexión es esencial, ya que permanece abierta hasta que se escriben los metadatos de la copia de seguridad.

Examine el diseño del archivo de la base de datos

A continuación, utilicemos Get-DbaDbFile para obtener información detallada sobre los archivos de la base de datos para la base de datos especificada. En nuestro ejemplo aquí, P:\SQLDATA1\MultiArraySnapshot.mdf se encuentra en FlashArray1 y Q:\SQLLOG1\MultiArraySnapshot_log.ldf en FlashArray2.

Conexión a los sistemas FlashArray

Ahora, nos autenticamos con las API REST de nuestros sistemas FlashArray utilizando credenciales almacenadas localmente. Esto nos permite realizar operaciones de snapshots en las matrices.

Congelación de la base de datos

Para crear una instantánea en un momento determinado en los dos sistemas FlashArray, primero suspendemos temporalmente la I/O escritura ejecutando el comando ALTER DATABASE [MultiArraySnapshot] SET SUSPEND_FOR_SNAPSHOT_BACKUP = ON. Esta acción coloca la base de datos en un estado estable, preparándola para las snapshots de ambos sistemas FlashArray. Durante este proceso, aún puede leer desde la base de datos.

Tomar las instantáneas

Con la base de datos congelada para I/O escritura, ahora tomamos snapshots en ambas matrices usando New-Pfa2ProtectionGroupSnapshot. Estas snapshots capturan el estado del grupo de protección.

Copia de seguridad y descongelación de Metadata

Luego, se crea una copia de seguridad de metadatos. Este es el paso crucial para generar un archivo de copia de seguridad (lo usaremos más adelante al restaurar esta base de datos), descongelar automáticamente la base de datos y registrar esa instantánea en el historial de copia de seguridad de la base de datos.

Puede verificar el estado de la copia de seguridad de snapshots revisando el historial de copias de seguridad de la instancia usando Get-DbaDbBackupHistory.

Hagamos algo que no es tan grande…

Ahora, con fines de demostración, vamos a dejar una tabla.

Realización de una restauración desde una copia de seguridad de snapshot en dos matrices

Después de soltar la tabla, restablezcamos toda la base de datos desde una instantánea. Lo primero que debemos hacer es desconectar la base de datos.

A continuación, desconectamos los volúmenes que contienen nuestros archivos de base de datos usando Set-Disk, que se dirige a los discos por sus números de serie a través de una conexión de remoción de PowerShell. Si bien puede ejecutar esto localmente en la instancia de SQL Server, estoy ejecutando este código desde mi jumpbox.

Con la base de datos y sus volúmenes fuera de línea, ahora usamos las snapshots en cada FlashArray para restaurar los volúmenes a su estado. Antes de eliminar la tabla de la base de datos, usaremos New-Pfa2Volume para esto.

Después de revertir los volúmenes de cada uno de los sistemas FlashArray a su estado anterior a través de las snapshots, pongamos los discos de la base de datos en línea en Windows.

Después de volver a poner los discos en línea, restauramos la base de datos con nuestra copia de seguridad de metadatos, usando RESTORE DATABASE $DbName FROM DISK = ‘$BackupFile’ WITH METADATA_ONLY, REPLACE.

Una vez restaurado, verificamos el estado de la base de datos MultiArraySnapshot y vemos que está EN LÍNEA.

Y, por último, verificamos que nuestra mesa caída vuelva a estar en su lugar gracias al proceso de restauración casi instantáneo.

¿Por qué estoy haciendo esto?

Este guión es importante porque muestra una forma de realizar snapshots y restaurar una base de datos a partir de snapshots en varias matrices de almacenamiento en un entorno de SQL Server. Aquí le mostramos por qué es importante:

  • Instantáneas consistentes en todas las matrices: Este ejemplo anterior utiliza la copia de seguridad de snapshots T-SQL de SQL Server 2022 para pausar la I/O escritura en una base de datos con archivos en dos volúmenes en dos sistemas FlashArray diferentes. Al hacer esto, las snapshots tomadas en dos sistemas FlashArray separados capturan la base de datos en un estado estable, lo que garantiza que la base de datos se restablezca de manera confiable.
  • Pausa de I/O de escritura minimizada: Al coordinar una copia de seguridad solo de metadatos que descongele automáticamente la base de datos, este proceso minimiza la ventana de tiempo de inactividad, que es un factor crítico en entornos de alta disponibilidad/alto rendimiento.
  • Capacidades modernas de SQL Server: Esta sección muestra nuevas capacidades en SQL Server 2022 y proporciona un ejemplo del mundo real de cómo usar estas funciones para mejorar las estrategias de copia de seguridad y los planes de recuperación ante desastres en escenarios de implementación complejos, como una base de datos que abarca dos o más matrices.

¿Cuánto tiempo lleva esto?

Esta demostración ejecuta el código desde la congelación hasta que la descongelación es de alrededor de 200 ms para todo el proceso de snapshot en ambas matrices.

Resumen de las cosas

En esta publicación, la cuarta de nuestra serie, utilizamos la función de copia de seguridad de snapshots T-SQL en un entorno de múltiples matrices.

Vio cómo puede:

  • Recupere rápidamente con copias de seguridad solo de metadatos
  • Congele I/O de escritura en una base de datos
  • Coordinar snapshots en varias matrices de almacenamiento

Puede obtener todo el guión para esta publicación de blog en GitHub.