Activité Réplication

Consigne

Avant de commencer, veuillez lire une première fois le document dans son ensemble.

Le travail est individuel. Vous pouvez communiquer en respectant le code d’honneur. Si vous être bloqué, demandez de l’aide afin de ne pas prendre trop de retard.

Situation

Vous êtes un administrateur de base de données. Vous avez remarqué que les sauvegardes impactent de manière significative les performances de votre serveur SQL. Pour y remédier, vous décidez de créer un réplica de votre base de données sur un autre serveur et effectuer les backups sur le réplica.

Objectifs

À la fin de cette activité, vous devez :

  • Être capable de créer des utilisateur·rice·s avec SQL.
  • Être capable de configurer un serveur mariadb comme serveur primaire (primary ou master).
  • Être capable d’interrompre les mises à jour sur le serveur primaire (FLUSH TABLES WITH READ LOCK).
  • Être capable de récupérer le nom du fichier et la position du binary log sur le serveur primaire.
  • Être capable de créer un instantané de la base de données du serveur primaire (p. ex. avec mariadb-dump).
  • Être capable de configurer un serveur mariadb comme serveur secondaire (secondary ou slave) ou réplica (replica)
  • Être capable de démarrer et d’arrêter un serveur secondaire.

Résultat attendu

Deux serveurs MariaDB configurés en miroir.

Un rapport qui retrace les différentes étapes de la configuration et du processus de promotion du serveur secondaire en serveur primaire après la panne.

Ressources

Document :

Matériel :

  • Une machine « svr-m140-$NUM-sql.lab.epai-ict.ch ».
  • Une machine « svr-m140-$NUM-sql-01.lab.epai-ict.ch »
  • Une machine « svr-m140-$NUM-sql-02.lab.epai-ict.ch »

La variable « $NUM » est le numéro de votre réseau tel qu’il apparait dans les informations d’identification que vous avez reçues par courriel.

Tâches

Configurer le serveur primaire

Pour commencer, configurez le serveur mariadb sur « svr-m140-$NUM-sql.lab.epai-ict.ch » comme serveur primaire (master) et créez un utilisateur pour la réplication avec les permissions appropriée.

Empêchez ensuite toute modification des données du serveur en verrouillant toutes les tables avec la commande FLUSH TABLES WITH READ LOCK;. Un verrou en lecture (read lock) permet aux autres clients de lire, mais pas d’écrire dans les tables. Vous pouvez maintenant utiliser la commande SHOW MASTER STATUS; pour récupérer le nom du fichier et la position du binary log.

Attention : Comme le verrouillage est actif pour la session, vous devez ouvrir une nouvelle fenêtre de terminal pour effectuer la sauvegarde de la base de données. Vous pouvez également vous connecter sur le second serveur et effectuer le dump depuis le second serveur. Dans tous les cas, gardez le client mysql ouvert.

Configurer le serveur secondaire

Connectez-vous sur le « svr-m140-$NUM-sql-01.lab.epai-ict.ch » et configurez-le comme un serveur secondaire. Chargez les données à partir de la sauvegarde du serveur primaire, lancez la réplication avec la commande START SLAVE et vérifiez que le serveur secondaire (slave) est actif avec la commande SHOW SLAVE STATUS \G.

Supprimez le verrou sur le serveur primaire et vérifiez que la réplication fonctionne. Pour cela vous pouvez effectuer un changement (INSERT ou UPDATE) sur le serveur primaire, et effectuez une requête (SELECT) sur le serveur secondaire pour vérifier que la modification a bien été répliquée.

Configurer un deuxième serveur secondaire

Connectez-vous sur le « svr-m140-$NUM-sql-02.lab.epai-ict.ch et recommencez l’opération. Vous pouvez utiliser la même sauvegarde, le même nom de fichier et la même position du binary log, ou recommencer l’opération en entier (verrouillage, récupération de la position, sauvegarde).

Assurez-vous que la réplication fonctionne correctement.

Changer le serveur primaire

Simulez une panne lourde du serveur primaire en effectuant un shutdown (sudo shutdown -h) du serveur « svr-m140-$NUM-sql.lab.epai-ict.ch ».

Effectuer la promotion du serveur secondaire « svr-m140-$NUM-sql-01.lab.epai-ict.ch » en serveur primaire et modifier le serveur secondaire « svr-m140-$NUM-sql-02.lab.epai-ict.ch » en conséquence.

Activer les GTID

Activez l’utilisation des identifiants de transaction globaux (GTID) sur le serveur primaire et vérifiez que la réplication fonctionne correctement.

Expliquez la manière dont les identifiants de transaction globaux sont générés et les avantages qu’ils apportent pour la réplication.

Créer un miroir

Un serveur peut être à la fois serveur primaire et serveur secondaire.

Configurez le serveur primaire (svr-m140-$NUM-sql-01.lab.epai-ict.ch) pour qu’il devienne un réplica du serveur secondaire (svr-m140-$NUM-sql-01.lab.epai-ict.ch), de manière à réaliser une réplication primaire-primaire. Assurez-vous d’utiliser les GTID sur les deux serveurs.

Expliquez le risque d’utiliser les deux serveurs primaires simultanément pour effectuer des modifications sur les données. Dans quel cas est-ce que ce risque est acceptable?