Backup SQL dans Windows Azure
Avec le Cumulative Update 2 de SQL Server 2012 SP1, il est maintenant possible de realiser des sauvegardes directement sur du stockage Azure.
Cet article décrit, pas à pas, comment réaliser ce type de sauvegarde et tirer parti du stockage dans Azure.
Les pre requis sont les suivants :
- SQL Server 2012 SP1 CU2 (SP1 CU2 Disponible ici)
- Un compte Azure
Création du stockage Windows Azure.
Afin de stocker des données dans Azure, il est nécessaire de créer un compte de stockage puis les containers qui vont contenir les blobs.
Connectez vous sur votre portail azure. En bas de la page, cliquez sur « NEW », puis « Data Services », « Storage » puis « Quick Create ».
Remplissez le champ URL. Pour cet article, j’ai saisi “franmerbackup” (Pas de majuscule possible !)
Après 1 ou 2 minutes, vous devez voir votre nouveau compte de stockage. Ci-dessous une copie d’écran du compte de stockage:
Cliquez sur le nom du compte afin de visualiser le détail :
Afin de pouvoir se connecter via SQL Server Management Studio (SSMS), il est nécessaire de récupérer les clefs de connexions. Pour se faire, en bas de la page cliquez sur « Manage Keys ».
Les informations nécessaires pour la connexion apparaissent dans la fenêtre « Manage Access Keys » :
Fermez cette fenêtre afin de revenir sur la page Dashboard du compte de stockage et cliquez sur « Containers »
La fenêtre ci-dessous apparaît alors, et permet la création de notre container. Cliquez sur « ADD CONTAINER » puis saisissez les informations de votre nouveau container
Après validation, voici une vue de votre compte de stockage avec le nouveau container:
Si vous cliquez sur le nom de votre container, vous pourrez y voir les blobs présents. Pour le moment, c’est vide !
Avant de passer sur SQL, faisons un rapide résumé de ce que nous venons de créer.
Afin de stocker nos sauvegardes, nous avons successivement créé :
- Un compte de stockage
- Un container
C’est le container qui va contenir vos blobs (vos fichier de backup dans ce cas précis). Ci-dessous un schéma qui résume l’architecture du stockage :
Backup SQL dans Windows Azure
Après avoir créé notre espace de stockage, l’idée est de l’utiliser pour stocker nos backups SQL. Cette solution s’avère être flexible et nous affranchi de la gestion du matériel et des supports de sauvegardes. Cependant, il existe des limitations, comme la taille maximale du backup à 1 TB. Pour plus de détails sur les limitations, vous pouvez consulter cet article.
Nous allons suivre les étapes suivantes dans SSMS:
- Créations d’un nouveau « credential » en utilisant le « Storage Account Name » et les « Access Keys » créés précédemment
- Sauvegarde de notre base dans Azure
Création d’un « Credential »
Dans SSMS, connectez-vous sur l’instance à partir de laquelle vous souhaitez realizer votre sauvegarde.
Dans l’explorateur d’objets, faîtes un clic droit sur « Credentials », puis cliquez sur « New Credential »
Dans la fenêtre qui apparait, donnez un nom à votre « credential ». Dans le champ « Identity » renseignez les informations venant du « Storage Account Name ».
Dans le Champ « Password », renseignez les informations venant du « Primary access Key ».
Bien entendu, il est possible de faire la même chose en T-SQL :
CREATE Credential AzureBackup
WITH IDENTITY ='franmerbackup',SECRET = <'Votre Primary Access Key'>
Backup SQL dans Azure
Maintenant, nous allons procéder au backup de notre base dans le stockage Azure. Pour ce faire, il est d’abord nécessaire de récupérer l’adresse de notre container. Il s’agit de l’URL disponible sur la page du container.
Ce type de backup n’est pas encore faisable via l’interface graphique de SSMS (sûrement du fait que l’option URL, dans la fenêtre du backup, n’est pas encore disponible).
Ci-dessous, le script utilisé pour réaliser le backup de ma base dans Azure. N’oubliez pas de rajouter le nom de votre backup (avec le .bak) à la fin de l’URL de votre container.
BACKUP DATABASE[franmer]
TO URL = 'https://franmerbackup.blob.core.windows.net/sqlbackup/franmer.bak'
WITH CREDENTIAL = 'AzureBackup'
Et voilà ! Maintenant, dans Azure, si vous cliquez sur votre container, il contient le blob correspondant à votre backup
Restaurer à partir du blob Azure
La restauration du backup se fait aussi en ligne de commande :
- RESTORE DATABASE franmerRestore
- FROM URL = 'https://franmerbackup.blob.core.windows.net/sqlbackup/franmer.bak' With credential = 'AzureBackup',
- Move N'franmer' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\franmer_Data2.mdf',
- Move N'franmer_Log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\franmer_Log2.ldf',
- STATS = 5
J’ai rajouté les lignes avec les “MOVE TO” afin de pouvoir faire un RESTORE de ma base tout en conservant ma base d’origine dans mon instance. Sinon, les 2 premières lignes suffisent pour faire le restore si la base n’est pas déjà présente dans l’instance.