Tutoriel Windows Azure - Comment sauvegarder une base de données SQL Server dans le nuage

Image non disponible

L'équipe de Windows Azure, la plateforme Cloud de Microsoft, a préparé beaucoup de contenu intéressant, en exclusivité pour les lecteurs de Developpez.com. Chaque semaine, on va partager ce contenu avec vous. Regardez les vidéos, rejoignez des Web Events, étudiez les tutoriels. À la fin de chaque semaine, il y aura des questions, et chaque personne qui répondra correctement à 80 % de ces questions recevra un t-shirt sympa. Le 23 décembre, un tirage au sort sera effectué entre tous les gagnants, et le vainqueur recevra un Nokia Lumia - un cadeau sympa de Noël ! Tous ceux qui auront au moins une fois trouvé 80 % de bonnes réponses à une série de questions - et donc, gagné un t-shirt - seront sélectionnés pour participer à ce tirage. En d'autres mots, un seul challenge réussi suffira pour participer au tirage.

Dans ce tutoriel nous allons voir comment faire pour sauvegarder une base de données SQL Server dans le nuage.

L'équipe Windows Azure de Developpez.com tient à remercier « L'équipe Azure de Microsoft » pour la mise à disposition de ce tutoriel aux membres de Developpez.com.

Vous pouvez essayer gratuitement Windows Azure pendant une période d'un mois et obtenir une réduction de 150 euros.

Pour réagir au contenu de ce tutoriel, un espace de dialogue vous est proposé sur le forum :
Commentez Donner une note à l'article (3.5).

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Scénario

On dispose d'un serveur SQL Server à demeure non redondé, sur un serveur que nous appelons ici « dans-mes-murs ». Il peut s'agir par exemple d'un des serveurs de la plateforme de tests d'intégration. Dans cet exemple il est installé en SQL Server 2014 CTP2 sur un Windows Server 2012 R2, mais ce qui est expliqué ici fonctionne également en SQL Server 2012.

Image non disponible

On souhaite faire en sorte que la base de données soit sauvegardée dans le nuage de façon à disposer des données si la machine « dans-mes-murs » tombe en panne.

Dans l'exemple, la base de données est AdventureWorksLT.

Choix de la solution

En SQL Server 2012, l'article suivant indique comment on peut faire cela :

http://technet.microsoft.com/fr-fr/library/jj919148.aspx

On s'inspirera librement de cet article.

La solution mise en place aura pour principe le schéma suivant :

Image non disponible

Le serveur à demeure effectue une sauvegarde sur un compte de stockage qui est dans le datacenter d'Europe du Nord (North Europe, NE) de Windows Azure. Ce compte de stockage est répliqué sur un autre datacenter. Pour l'Europe du Nord (NE), la réplication est en Europe de l'Ouest (West Europe, WE). Ainsi, même dans le cas où le datacenter NE serait inaccessible durablement, les équipes Windows Azure rendraient les données du blob storage disponible dans le datacenter de l'Europe de l'Ouest où l'on pourrait récupérer les données sauvegardées.

Mise en œuvre de la solution

Comme les développeurs aiment le code, la mise en place de la solution s'appuie sur du code !

Les copies d'écrans seront ici principalement pour montrer le résultat de ce que le code a généré, mais en général les modifications sont faites par le code. Donc du code, du code, du code.

Avertissement

Dans les exemples de code donnés ci-dessous, les noms de compte de stockage, les mots de passe, etc. doivent être changés. Vous êtes encouragés à relire le code et le modifier avant de l'utiliser dans votre environnement.

Téléchargement et installation du module PowerShell pour gérer Windows Azure

Pour manipuler l'environnement Windows Azure depuis du code et depuis une machine Windows, PowerShell est un excellent environnement. PowerShell lui-même fait partie de Windows depuis déjà un certain nombre d'années. En revanche, le module de gestion de Windows Azure doit être téléchargé. Depuis la machine « dans-mes-murs », on se rend donc à l'adresse suivante :

http://www.windowsazure.com/fr-fr/downloads/#cmd-line-tools

Image non disponible

On télécharge et installe ce module.

Image non disponible

Puis on exécute Windows PowerShell

Image non disponible

Et l'on tape les commandes suivantes :

 
Sélectionnez
Import-module azure
Get-command -module azure
Image non disponible

Ensuite, on ajoute le compte avec lequel on peut se connecter au portail Windows Azure (http://manage.windowsazure.com) de façon à pouvoir disposer des mêmes ressources depuis PowerShell.

N.B. Si vous n'avez pas de compte Windows Azure, vous pouvez vous en procurer un avec l'offre d'essai gratuite. Rendez-vous par exemple à http://aka.ms/tester-mon-azure.

Tapez en PowerShell :

 
Sélectionnez
Add-AzureAccount

Puis laissez-vous guider

Image non disponible

Une façon de vérifier que tout est correct est de taper :

 
Sélectionnez
Get-AzureSubscription

Cela doit vous donner la liste des abonnements auxquels votre compte entré ci-dessus a droit.

La suite des opérations dans PowerShell se fera dans l'IDE de PowerShell appelé ISE. On le démarre de la façon suivante :

Image non disponible
Image non disponible

Le bouton Image non disponible (ou F5) permet d'exécuter tout le script saisi.

Le bouton Image non disponible (ou F8) permet d'exécuter uniquement le code sélectionné.

Si on dispose de plusieurs abonnements Azure, comme c'est mon cas, on peut choisir l'abonnement par défaut de la façon suivante :

 
Sélectionnez
Select-AzureSubscription -Default "Azdem169A44055X"

Dans votre cas, remplacez Azdem169A44055X par le nom de votre propre abonnement.

Création d'un compte de stockage redondé, et récupération de ses crédentités

Pour retrouver les commandes liées au stockage Windows Azure, vous pouvez taper la commande suivante par exemple :

 
Sélectionnez
get-command -module azure | where name -match 'storage'
Image non disponible

Ici, nous allons utiliser New-AzureStorageAccount

Pour savoir quels sont les paramètres :

 
Sélectionnez
help New-AzureStorageAccount

On trouvera également en annexes comment s'aider de PowerShell ISE pour ce genre de tâche.

On finit donc par taper la commande suivante :

 
Sélectionnez
New-AzureStorageAccount -Location "North Europe" -StorageAccountName sqlnuagebackup
Image non disponible

Pour vérifier qu'on a bien la géoréplication, comme dans le schéma vu plus haut

Image non disponible

On tape la commande suivante :

 
Sélectionnez
Get-AzureStorageAccount -StorageAccountName sqlnuagebackup
Image non disponible

Pour effectuer la sauvegarde depuis SQL Server, on dispose du nom du compte : « sqlnuagebackup », mais il nous faut la clef (primaire ou secondaire, cela n'a pas d'importance ; les deux sont valables. Il y en a deux pour qu'on puisse modifier l'une des deux pendant qu'on continue d'utiliser l'autre dans des applications).

Par exemple, le code suivant récupère la clef primaire :

 
Sélectionnez
$key = (Get-AzureStorageKey -StorageAccountName sqlnuagebackup).Primary
echo $key
Image non disponible

dans mon cas, c'est

 
Sélectionnez
KKUuBbak3ClXHG4MqFKnca8aTdXRFzSbtDaAxyaaOI6fbM5X5DprJTtqMc1TUm1lXfOyf9NHO74yFAhmJRURRw==

On crée un conteneur backup dans le compte de stockage :

 
Sélectionnez
Set-AzureSubscription -SubscriptionName (Get-AzureSubscription -Default).SubscriptionName `
    -CurrentStorageAccountName sqlnuagebackup

New-AzureStorageContainer -Name backup
Image non disponible

Il reste ensuite à l'utiliser depuis SQL Server Management Studio.

N.B. Pour lancer SQL Server Management Studio, une possibilité est d'appuyer sur la touche Windows et de taper SQL Server Management Studio

Image non disponible

Là, on peut taper le script suivant :

 
Sélectionnez
create credential AzureCredential with identity = 'sqlnuagebackup',
secret = 'KKUuBbak3ClXHG4MqFKnca8aTdXRFzSbtDaAxyaaOI6fbM5X5DprJTtqMc1TUm1lXfOyf9NHO74yFAhmJRURRw=='
go

select * from sys.credentials
go

backup database AdventureWorksLT  
to url = 'http://sqlnuagebackup.blob.core.windows.net/backup/AdventureWorksLT.bak'  
with credential = 'AzureCredential'  
go
Image non disponible

On voit le résultat de la façon suivante :

 
Sélectionnez
Get-AzureStorageBlob -Container backup
Image non disponible

Test de restauration

Supprimons la base de données et restaurons-la depuis le Cloud.

Cette fois-ci, faisons-le en interactif.

On n'a plus de base de données :

Image non disponible
Image non disponible
Image non disponible
Image non disponible
Image non disponible
Image non disponible
Image non disponible
Image non disponible
Image non disponible

Combien ça coûte ?

Avant de terminer cet article, voyons combien une telle solution peut coûter. La page de référence sur le sujet est http://www.windowsazure.com/pricing. On y trouve principalement deux types de ressources pour calculer le prix :

  • une calculatrice ;
  • des pages de référence qui expliquent dans le détail sous quelles conditions et à quels prix sont facturés les différents composants.

Dans notre cas, on utilise les ressources suivantes :

Le stockage est facturé en fonction des IO (transactions) et de la quantité de données stockées. Dans la pratique, les transactions mesurent surtout un « fair use » du compte de stockage. Le réseau mesure ce qui entre et sort du datacenter. Ce qui entre est gratuit, seules les données sortantes sont payantes. Dans un scénario de backup, c'est plutôt intéressant ! Enfin, pour pouvoir soumettre un incident technique au-delà des forums, il faut souscrire une offre de support.

Si l'on prend pour exemple un backup de 1 Go tous les jours, en gardant 50 j, qu'on ne récupère qu'une fois par mois (pour illustration, parce que cela paraît beaucoup !), et que l'on prend un support développeur, cela donne dans la calculatrice (http://www.windowsazure.com/fr-fr/pricing/calculator/?scenario=data-management) :

Image non disponible
Image non disponible

N.B. Sans le support, cela fait 3,62 €. La bande passante est à 0 €, car les 5 premiers Go sortants sont gratuits. Pour 10 Go, cela ferait 0,45 €.

Conclusion

Vous venez de voir une version simple de Cloud hybride. SQL Server à demeure, son backup dans le nuage.

Le Cloud hybride, ce n'est pas si compliqué !

Annexes

Comment générer des commandes avec PowerShell ISE

Avec PowerShell ISE, l'aide sur les cmdlets est visuelle. Voici un exemple, lorsqu'on cherche à créer un compte de stockage Windows Azure.

Image non disponible
Image non disponible
Image non disponible

On voit qu'il y a deux jeux de paramètres possibles. Ici, on n'utilise pas le groupe d'affinité :

Image non disponible
Image non disponible

En collant, on a la ligne de commande suivante :

 
Sélectionnez
New-AzureStorageAccount -Location "North Europe" -StorageAccountName sqlnuagebackup

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2013 Microsoft. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.