In dit artikel wil ik het hebben over een heel andere vorm van veiligheid, namelijk in welke mate mijn data beschermd is tegen hardware failures, datacorruptie en andere rampen.
Wanneer je in Windows Azure SQL Database een database aanmaakt, worden er eigenlijk drie databases aangemaakt. Eén is de primaire replica. Dit is de database waarop jij jouw werkzaamheden uitvoert. Daarnaast zijn er twee secundaire replica's waar je verder niets mee doet. Wanneer de primaire replica eruit vliegt, zal onmiddelijk een secundaire replica worden ingeschakeld. Zo'n secundaire replica is een exacte kopie van de primaire. Wanneer er een transactie plaatsvindt op de primaire replica, zal die transactie pas slagen als de transactie op één secundaire replica ook gelukt is (Quorum Based Commit). Daarnaast houdt Windows Azure SQL Database ook nog eens kopieën van de afgelopen veertien dagen bij. Helaas heb jij aan die duplicaten niet zoveel, ze worden alleen intern gebruikt mocht het eens helemaal uit de klauwen lopen.
Het komt er dus op neer dat je zelf moet zorgen voor backups, maar hoe doe je dat eigenlijk in Windows Azure SQL Database? Daar zijn een aantal strategieën voor bedacht:
- Een kopie maken van de database
- Een Backup Package (BACPAC) maken
- Het wonderbaarlijke tooltje SQL Database Migration Wizard
- Een kopie naar een database op dezelfde server
- Een kopie naar een database op een andere server.
Een kopie maken naar dezelfde server is één statement in Sql Azure
CREATE DATABASE DatabaseB AS COPY OF DatabaseA;
Daarvoor moet je wel eerst op de master database inloggen (afbeelding 1)
CREATE DATABASE DatabaseB AS COPY OF DatabaseA;
Daarvoor moet je wel eerst op de master database inloggen (afbeelding 1)
![]() |
Afbeelding 1. Inloggen op de master database |
CREATE DATABASE DatabaseB AS COPY OF servernaam.DatabaseA
Bijvoorbeeld:
CREATE DATABASE DatabaseB AS COPY of diid89wef.DatabaseA
Je kunt er ook voor kiezen om de backup via een backup package (BACPAC) te laten verlopen. Hiervoor kun je het beste eerst een kopie van de database maken zoals hierboven beschreven. Op deze manier krijg je een consistente backup. Daarna ga je naar de Azure Portal en selecteer je de gekopieerde database waarvan je de BACPAC maakt. Vervolgens klik je op de "Export" knop onderin het beeld. Dat tovert het schem in afbeelding 2 tevoorschijn.
![]() |
Afbeelding 2. Het export scherm om de BACPAC te genereren. |
De laatste methode om backups te maken gaat via SQL Database Migration Wizard, of liever gezegd met de tools SqlAzureMWBatchBackup en SqlAzureMWBatchUpload. Dit zijn twee command-line tooltjes die je dus ook in een batch programma kunt laten draaien. De commando's zijn vrij eenvoudig:
SQLAzureMWBatchBackup -S SERVER.database.windows.net -U "username"
-P "password" -D Database
[-S target server name]
[-U username]
[-P password]
[-D source database name]
[-o output process results file]
[-O output directory for all files]
[-T trusted connection]
Het mooie is dat alles ook in de configuratiefile kan worden opgenomen waardoor het starten nog eenvoudiger wordt. Om de database weer te herstellen gebruik je SqlAzureMWBatchUpload.exe. Het commando ziet er als volgt uit:
SQLAzureMWBatchUpload -S SERVER.database.windows.net -U "username"
-P password -D Northwind -d -s 1
[-S target server name]
[-U username]
[-P password]
[-D target database name]
[-i TSQL input file]
[-o output file]
[-e database edition (web or business)]
[-s database size (1, 5, 10, 20, 30, 40 or 50)]
[-T trusted connection]
[-d drop existing database]
Ook deze schakelopties kunnen in een configuratiebestand worden opgenomen.
Ofschoon een backup maken vanuit Windows Azure SQL Database (nog) niet mogelijk is, zijn er tal van alternatieven. Een kopie maken van de database is een veilige methode die ook wijzigingen tijdens het backup proces nog meeneemt. Nadeel is dat je hiervoor wel een extra database in de cloud krijgt en dat kost geld. Wel kun je van zo'n kopie een BACPAC maken die je vervolgens downloadt. Het vergt wel wat gepeuter om die BACPAC van uit de storage te krijgen. SqlAzureMW blijkt wederom een veelzijdig tooltje te zijn dat ook backups kan maken. Het uitvoeren vanaf de command-line is een groot voordeel waardoor de backupscommando's in een script kunnen worden ondergebracht om vervolgens, via de scheduler, op gezette tijden te worden uitgevoerd.
Update: Eindelijk is een automatische exportfunctionaliteit aan Windows Azure toegevoegd: http://blog.pasit.nl/2013/08/windows-azure-sql-database-backup.html.
Geen opmerkingen:
Een reactie posten