24
Comment sauvegarder une base de données SQL Server dans le nuage 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. 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 :

[Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

Embed Size (px)

DESCRIPTION

Vous allez voir une version simple de cloud hybride. SQL Server à demeure, son backup dans le nuage. Le cloud hybride, ce n’est pas si compliqué !

Citation preview

Page 1: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

Comment sauvegarder une base de données SQL Server dans le nuage

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.

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 :

Page 2: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

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.

Page 3: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

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

On télécharge et installe ce module.

Puis on exécute Windows PowerShell

Page 4: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

Et l’on tape les commandes suivantes :

Import-module azure

Get-command -module azure

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.

NB : 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 :

Add-AzureAccount

Page 5: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

Puis laissez-vous guider

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

Get-AzureSubscription

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

La suite des opération dans PowerShell se fera dans l’IDE de PowerShell appelé ISE. On le démarre de la

façon suivante :

Page 6: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

Le bouton (ou F5) permet d’exécuter tout le script saisi

Le bouton (ou F8) permet d’exécuter uniquement le code sélectionné

Page 7: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

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 :

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 :

get-command -module azure | where name -match 'storage'

Ici, nous allons utiliser New-AzureStorageAccount

Page 8: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

Pour savoir quels sont les paramètres :

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 :

New-AzureStorageAccount -Location "North Europe" -StorageAccountName sqlnuagebackup

Pour verifier qu’on a bien la géo-réplication, comme dans le schema vu plus haut

Page 9: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

On tape la commande suivante :

Get-AzureStorageAccount -StorageAccountName sqlnuagebackup

Page 10: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

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’un des deux pendant qu’on continue d’utiliser l’autre dans des

applications).

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

$key = (Get-AzureStorageKey -StorageAccountName sqlnuagebackup).Primary

echo $key

Page 11: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

dans mon cas, c’est

KKUuBbak3ClXHG4MqFKnca8aTdXRFzSbtDaAxyaaOI6fbM5X5DprJTtqMc1TUm1lXfOyf9NHO74yFAhmJRURR

w==

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

Set-AzureSubscription -SubscriptionName (Get-AzureSubscription -

Default).SubscriptionName `

-CurrentStorageAccountName sqlnuagebackup

New-AzureStorageContainer -Name backup

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

NB : pour lancer SQL Server Management Studio, une possibilité est d’appuyer sur la touche Windows et

de taper SQL Server Management Studio

Page 12: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

Là, on peut taper le script suivant :

create credential AzureCredential with identity = 'sqlnuagebackup',

secret =

'KKUuBbak3ClXHG4MqFKnca8aTdXRFzSbtDaAxyaaOI6fbM5X5DprJTtqMc1TUm1lXfOyf9NHO74yFAhmJRUR

Rw=='

go

select * from sys.credentials

go

backup database AdventureWorksLT

to url = 'http://sqlnuagebackup.blob.core.windows.net/backup/AdventureWorksLT.bak'

with credential = 'AzureCredential'

go

Page 13: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

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

Get-AzureStorageBlob -Container backup

Test de restauration Supprimons la base de données et restaurons-là depuis le cloud.

Page 14: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

Cette fois-ci, faisons-le en interactif.

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

Page 15: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage
Page 16: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage
Page 17: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage
Page 18: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

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 :

- Stockage : http://www.windowsazure.com/fr-fr/pricing/details/storage/

- Réseau : http://www.windowsazure.com/fr-fr/pricing/details/data-transfers/

- Assistance : http://www.windowsazure.com/fr-fr/support/plans/

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

Page 19: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

développeur, cela donne dans la calculatrice (http://www.windowsazure.com/fr-

fr/pricing/calculator/?scenario=data-management) :

NB : 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é !

Page 20: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage
Page 21: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

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.

Page 22: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

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

Page 23: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage
Page 24: [Tuto] Sql backup : Comment sauvegarder une base de données SQL Server dans le nuage

En collant, on a la ligne de commande suivante :

New-AzureStorageAccount -Location "North Europe" -StorageAccountName sqlnuagebackup