Synchroniser une Azure SQL Database avec une base de données locale
Dans cet article, nous allons découvrir comment synchroniser une Azure SQL Database avec une base de données locale. Vous allez aussi savoir comment créer une base de données Azure.
La base de données locale
Tout d’abord on va jeter un coup d’œil sur la base de données locale. On a créer la base de données « TO_SYNC_LOCAL » sur une instance SQL EXPRESS sur notre machine locale. Cette contient une seule table pour l’exemple « dbo.Table_1 » avec deux colonnes comme illustré ci-dessous :
Créer une Azure SQL Database
Sur votre portail Azure, créez une nouvelle ressource SQL Database.
Puis saisissez les informations de votre nouvelle base de données comme suite :
Entrez un nom de votre base de données. Ensuite si vous n’avez pas déjà un serveur de base de données sur Azure vous pouvez en créer un nouveau pour héberger votre nouvelle base de données.
Cliquez sur « Créer un nouveau serveur ».
Ici, y a pas de magie. Même sur Azure on a besoin d’un serveur pour héberger et faire tourner notre base de données.
A droite de l’écran une nouvelle fenêtre s’affiche. On est invité à saisir les informations du nouveau serveur.
- Nom du serveur : Nom de votre serveur de base de données, doit être unique.
- Utilisateur Admin : définissez un administrateur pour votre serveur.
- Mot de passe : mot de passe, fort bien sûr. N’oubliez que votre instance est publique à ce niveau.
- Location : la région où votre serveur sera hébergé.
Si votre base de données contiendra des données personnelles de vos clients français, le serveur doit obligatoirement être localisé en Europe. Loi RGPD.
A la fin configurez la taille de votre serveur suivant votre besoin. Ici par exemple 2Go de stockage est estimée à environ 5$.
Créer un groupe de Synchronisation Azure
Afin d’initier la synchronisation des base de données, faut créer un groupe de synchronisation. Pour faire sur la base de données cliquez sur « Synchroniser avec une autre base de données » , puis « Nouveau groupe de synchronisation ».
- Donner un nom au groupe.
- Choisir la base de données Azure à synchroniser.
- Sync Automatique: désigne si vous voulez automatiser ou pas la synchronisation, vous pouvez ainsi planifier la synchronisation selon une fréquence définie.
- Résolution de conflit: spécifie en cas de conflit (modification en même temps sur la base source (base locale) et la base destination (la base Azure), la quelles des deux modifications doit-on appliquée. La valeur « Hub win » désigne que c’est les modifications de la base de données Azure qui seront appliquées. Avec la valeur « Member win » c’est la base locale qui sera prime, c’est cette valeur qu’on choisir pour notre cas.
- Validez, puis cliquez sur le groupe de synchronisation créé.
Ajouter une base de données locale pour la synchronisation Azure
Dans la fenêtre de groupe de synchronisation, cliquez sur « Base de données ».
A ce moment une fenêtre s’affiche vous invitant à sélectionner la base de données membre : base à synchroniser.
Choisir « Ajouter une base de données locale ».
Pour pouvoir accéder à votre base de données locale, vous devez créer l’agent de synchronisation. Il s’agit de télécharger et installer sur votre machine un agent permettant de jouer le rôle d’un proxy afin de permettre la communication entre Azure et votre base de données locale.
Cliquez sur « Choisir l’agent de synchronisation ».
- Télécharger l’agent de synchronisation ici.
- Donnez un nom à votre agent.
- Cliquer le bouton « Générer une clé« , gardez là, on aura besoin juste après.
Commencez par installer l’agent sur votre machine après téléchargement.
Saisissez un compte dotant des droits d’exécuter l’agent dans les services Windows.
Une fois installé, lancer l’agent depuis le menu « Démarrer ».
Cliquez sur le bouton « Submit Agent Key Configuration » afin d’enregistrer l’agent de synchronisation Azure.
La fenêtre vous invite à saisir la clé généré lors de la création de l’agent sur le portail Azure.
Puis saisir le login et le mot de passe associé à votre serveur de base de données créé plus loin.
Cliquez sur « Test Connection » afin de s’assurer que vous êtes bien connecté à votre serveur.
Si c’est la première fois que vous administrez une base de données Azure vous aurez surement ce joli message d’erreur.
Afin d’accéder à un serveur SQL sur Azure il faut autoriser l’adresse IP de la machine demandant la connexion. D’où le message d’erreur ci-dessus.
Autoriser l’accès à un serveur SQL sur Azure
Sur le portail Azure, allez sur votre serveur SQL.
Puis cliquez sur le menu « Firewalls and virtual networks » :
- Autoriser les ressources Azure à se connecter à votre serveur SQL en mettant le bouton concerné à OUI « Yes »
- Ajouter votre IP, si il s’agit d’une seule adresse IP, mettez la même IP dans les deux zones de texte « Start IP » et « End IP ».
- Sauvegardez.
Revenir sur l’agent installé sur votre machine et tester la connexion, cette fois-ci ça marche.
Puis cliquez sur « Register » afin d’inscrire votre base de données locale.
Saisissez les information de connexion à votre base de données locale, puis testez la connexion pour s’assurer que l’agent se connecte bien à votre base locale, enfin sauvegarder.
Vous devez voir votre base de données locale listée dans l’agent avec le statut accessible « Reachable ».
Retourner sur le menu de la synchronisation de la base de données SQL, l’agent devrait apparaitre en ligne comme ci-dessous.
Continuez votre configuration de la base locale sur le portail Azure en sélectionnant le nom de l’agent de synchronisation.
Ensuite, sélectionnez la base de données locale associée à l’agent de vous avez créé.
Saisissez un nom pour présenter votre base de données locale. Puis sélectionner votre base données locale liée à l’agent.
Le « Sync Directions » ou direction de la synchronisation, à choisir entre deux valeur :
- To the Hub : Cela veut dire que la synchronisation est de votre base locale vers la base Azure.
- To the Member : la synchronisation est de la base Azure vers la base locale.
Puis validez.
Sur le groupe de synchronisation vous devez voir deux bases de données connectées.
Synchroniser les tables Azure avec les tables locales
Afin de synchroniser les tables, cliquez sur « Tables », puis sélectionnez la base de données locale. La liste des tables dont l’utilisateur utilisé a accès s’affiche, vous pouvez choisir les tables de vous voulez synchroniser.
Dans la même table vous pouvez choisir aussi les colonnes à synchroniser.
Une fois votre schéma de synchronisation validé, Azure DataSync va créer quelques objets dans les deux base de données source et cible. Ces objets vont servir à gérer la synchronisation entre les différentes tables.
Faut noter que tables doivent disposer d’une clé primaire avoir de pouvoir les synchroniser.
A ce niveau vous pouvez lancer la synchronisation manuellement en cliquant sur « Sync »
A noter aussi que dans un groupe de synchronisation Azure Data Sync ne peux synchroniser que 500 tables.