T-SQL Snapshot Backup gebruiken: Databasesnapshots met meerdere arrays

Dit vierde artikel in een serie over T-SQL snapshotback-up kijkt naar het gebruik van de functie in een scenario waarin een database meerdere opslagarrays omvat.

Multi-array Database Snapshots

Samenvatting

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

Dit artikel verscheen voor het eerst op de blog van Anthony Nocentino. Het is opnieuw gepubliceerd met het krediet en de toestemming van de auteur.

In dit bericht, het vierde in de serie, wil ik een voorbeeld delen van de T-SQL snapshot back-upfunctie van SQL Server 2022 in een scenario waarin een database meerdere opslagarrays omvat. Als u te maken hebt met multi-array omgevingen, zult u waarderen hoe deze techniek database write I/O bevriest om gecoördineerde snapshots te maken over volumes op twee FlashArray™-systemen. In dit bericht begeleid ik u door het proces, wijs ik u op enkele van de belangrijkste elementen van het script en laat ik u zien hoe lang de schrijf-I/O-pauze duurt.

Het scenario

Stelt u zich eens voor dat u een database hebt met de naam MultiArraySnapshot die over twee afzonderlijke volumes wordt gedistribueerd, elk op zijn eigen Pure Storage® FlashArray-systeem. Deze installatie kan nuttig zijn voor het beheer van grote, bedrijfskritische omgevingen waar prestaties en dataconsistentie essentieel zijn. De uitdaging ligt in het coördineren van een snapshotback-up waarmee beide arrays tegelijkertijd een consistent beeld van de data kunnen vastleggen. En met de T-SQL snapshot back-upfunctie van SQL Server 2022 kunnen we dat doen… laten we eens ingraven.

Een database met bestanden op twee FlashArrays
Afbeelding 1: Een database met bestanden op twee FlashArray-systemen.

Overzicht van het proces

Het proces is eenvoudig: Bevries de database met behulp van T-SQL snapshot, neem snapshots van elke array en voer vervolgens een Metadata-only back-up uit om de snapshotdetails te documenteren. Deze Metadataback-up ontdooit de database automatisch.

De omgeving opzetten

Ten eerste importeren we de benodigde modules en definiëren we verbindingsvariabelen voor onze SQL Server-instantie, de twee FlashArray-systemen en verschillende volumes. Merk op hoe we details specificeren zoals de serienummers van de doelschijf en het pad voor het delen van back-ups:

We zetten een PowerShell-remotingsessie op met behulp van New-Session en creëren een permanente SMO-verbinding met Connect-DbaInstance. Deze verbinding is essentieel omdat deze open blijft totdat de back-upMetadata is geschreven.

Bekijk de bestandsindeling van de database

Laten we nu Get-DbaDbFile gebruiken om gedetailleerde informatie te krijgen over de databasebestanden voor de gespecificeerde database. In ons voorbeeld hier bevindt P:\SQLDATA1\MultiArraySnapshot.mdf zich op FlashArray1 en Q:\SQLLOG1\MultiArraySnapshot_log.ldf op FlashArray2.

Verbinding maken met de FlashArray-systemen

Nu authenticeren we ons met de REST API’s van onze FlashArray-systemen met behulp van lokaal opgeslagen inloggegevens. Dit stelt ons in staat snapshotbewerkingen uit te voeren op de arrays.

De database bevriezen

Om een point-in-time snapshot te creëren over de twee FlashArray-systemen, schorten we eerst tijdelijk write I/O op door de opdracht ALTER DATABASE [MultiArraySnapshot] SET SUSPEND_FOR_SNAPSHOT_BACKUP = ON uit te voeren. Deze actie brengt de database in een stabiele toestand en bereidt deze voor op de snapshots van beide FlashArray-systemen. Tijdens dit proces kunt u nog steeds uit de database lezen.

De snapshots maken

Nu de database is bevroren voor write I/O, nemen we snapshots op beide arrays met behulp van New-Pfa2ProtectionGroupSnapshot. Deze snapshots leggen de status van de beschermingsgroep vast.

Metadataback-up en -defreeze

Vervolgens wordt een Metadataback-up gemaakt. Dit is de cruciale stap bij het genereren van een back-upbestand (we gebruiken dit later bij het herstellen van deze database), het automatisch ontvriezen van de database en het opnemen van die snapshot in de back-upgeschiedenis van de database.

U kunt de status van de snapshotback-up controleren door de back-upgeschiedenis van de instantie te bekijken met behulp van Get-DbaDbBackupHistory.

Laten we iets doen dat niet zo geweldig is…

Laten we voor demonstratiedoeleinden een tafel neerleggen.

Een herstel uitvoeren vanuit een snapshotback-up op twee arrays

Nadat we de tabel hebben neergezet, gaan we de hele database herstellen vanaf een snapshot. Het eerste wat we moeten doen is de database offline zetten.

Vervolgens nemen we de volumes die onze databasebestanden bevatten offline met behulp van Set-Disk, die zich richt op de schijven op hun serienummers via een PowerShell-remotingverbinding. Hoewel u dit lokaal op de SQL Server-instantie kunt uitvoeren, voer ik deze code uit vanuit mijn jumpbox.

Met de database en de volumes offline gebruiken we nu de snapshots op elke FlashArray om de volumes in hun staat te herstellen. Voordat ik de tabel uit de database verwijder, gebruiken we hiervoor New-Pfa2Volume.

Nadat de volumes op elk van de FlashArray-systemen via de snapshots zijn teruggezet naar hun vorige staat, laten we de schijven van de database online brengen in Windows.

Nadat we de schijven weer online hebben gebracht, herstellen we de database met behulp van onze Metadataback-up, met behulp van RESTORE DATABASE $DbName FROM DISK = ‘$BackupFile’ WITH METADATA_ONLY, REPLACE.

Eenmaal hersteld, controleren we de status van de database MultiArraySnapshot en zien we dat het ONLINE is.

En tot slot controleren we of onze gevallen tafel weer op zijn plaats zit dankzij het bijna onmiddellijke herstelproces.

Waarom doe ik dit?

Dit script is belangrijk omdat het een manier toont om een database te snapshoten en te herstellen vanaf snapshot over meerdere opslagarrays in een SQL Server-omgeving. Dit is waarom het belangrijk is:

  • Consistente snapshots over arrays: Dit bovenstaande voorbeeld maakt gebruik van de T-SQL snapshotback-up van SQL Server 2022 om schrijf-I/O op een database met bestanden over twee volumes op twee verschillende FlashArray-systemen te pauzeren. Door dit te doen, leggen snapshots van twee afzonderlijke FlashArray-systemen de database in een stabiele toestand vast, zodat de database betrouwbaar wordt hersteld.
  • Geminimaliseerde schrijf-I/O-pauze: Door een alleen-Metadata-back-up te coördineren die de database automatisch deblokkeert, minimaliseert dit proces de downtime, wat een cruciale factor is in omgevingen met hoge beschikbaarheid/hoge prestaties.
  • Moderne SQL Server-mogelijkheden: Dit gedeelte toont nieuwe mogelijkheden in SQL Server 2022 en biedt een praktijkvoorbeeld van hoe deze functies kunnen worden gebruikt om back-upstrategieën en disaster recovery-plannen te verbeteren in complexe implementatiescenario’s, zoals een database die twee of meer arrays omvat.

Hoe lang duurt dit?

Deze demo voert de code uit vanaf de freeze tot het ontdooien ongeveer 200 ms is voor het gehele snapshotproces over beide arrays.

Dingen afronden

In dit bericht, het vierde in onze serie, hebben we de T-SQL snapshot back-upfunctie gebruikt in een multi-array omgeving.

U zag hoe u:

  • Herstel snel met alleen Metadata back-ups
  • Freeze write I/O op een database
  • Coördineer snapshots over meerdere opslagarrays

U kunt het hele script voor dit blogbericht op GitHub pakken.