Si vous utilisez SQL Server en IaasS sur une VM Azure vous allez sûrement effectuer vos sauvegardes dans Azure et pourquoi pas directement dans un container Azure ce qui vous offrira les meilleurs performances.
Vous utiliserez sûrement une de ces 3 méthodes :
- un script de backup custo comme celui que vous avez déjà mi en place on premise :
BACKUP DATABASE[AdventureWorks2012] TO URL = 'https://mystorageaccount.blob.core.windows.net/privatecontainertest/AdventureWorks2012.bak' /* URL includes the endpoint for the BLOB service, followed by the container name, and the name of the backup file*/ WITH CREDENTIAL = 'mycredential'; /* name of the credential you created in the previous step */
- L’excellent script de Ola Hallengren qui vous permet maintenant de réaliser vos backups directement dans Azure (mais aussi de défragmenter vos indexes lorsqu’ils dépassent une certaine fragmentation …)
EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @URL = 'https://myaccount.blob.core.windows.net/mycontainer', @Credential = 'mycredential', @BackupType = 'FULL', @Compress = 'Y', @Verify = 'Y'
- La nouveauté de 2014, les « Managed Backup », même si je ne vous les conseille pas pour l’heure, je trouve que cela manque un peu de maturité pour l’instant (et d’option de configuration), je vous conseille l’article plutôt complet d’Emilie Beau sur le sujet http://blogs.technet.com/b/bi_france/archive/2014/06/30/gestion-automatique-des-sauvegardes-avec-sql-server-2014-sql-server-managed-backups.aspx
Le problème avec ces méthodes c’est que seuls les « Managed Backup » gèrent pour l’instant la suppression des anciens backups. Il va donc falloir scripter en powershell cette suppression (heureusement depuis SQL 2012 il est possible de lancer du powershell directement depuis l’agent) ou le faire à la main.
Etape 1 – Installer Azure Powershell
Afin de pouvoir utiliser Powershell pour gérer simplement notre suppression sur un container Azure nous allons avoir besoin de la librairie Azure Powershell, vous trouverez les étapes d’installation ici.
Etape 2 – Le script Powershell
Attention, je vous conseille de mettre vos sauvegardes dans un container dédié afin d’éviter qu’une erreur de configuration supprime l’intégralité de vos fichiers.
Import-Module Azure #Le nom de votre Azure Container $Container = ("bkp") #Le délais de rétention 72 heures dans l'exemple ci-dessous $CleanupTime = [DateTime]::UtcNow.AddHours(72) #Le nom de votre compte de stockage $StorageAccountName = "scopit" #La clé principale ou secondaire $StorageAccountKey = "25KadcWE9FEXRC+gYtMNBQ9Hz0rlJHfjRIfyvDLYWmpxKqdqUX2HW2OZx956+2pHk14tJVd1fNS9VU0S+GakGXg==" #Le type de fichier que vous voulez supprimer (ceux qui terminent par .bak dans notre exemple) $FilePattern = "*.bak" $array |foreach { $context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey Get-AzureStorageBlob -Container $Container -Context $context | Where-Object { $_.LastModified.UtcDateTime -lt $CleanupTime -and $_.BlobType -eq "PageBlob" -and $_.Name -like $FilePattern} | Remove-AzureStorageBlob #Write-output # Personnellement je fais toujours un petit test en remplaçant Remove-AzureStorageBlob # par Write-output afin de voir si j'ai bien configurer le délais et le Filepattern }
Voilà plus qu’à planifier cela dans une étape d’agent et votre dossier de sauvegarde gardera une taille raisonnable.