0% ont trouvé ce document utile (0 vote)
3 vues19 pages

La Réplication MySQL

La réplication MySQL permet de copier des données d'un serveur source vers des répliques, offrant des avantages tels que la répartition de la charge, la sécurité des données et l'analyse sans affecter les performances de la source. Les différents modes de réplication incluent asynchrone, semi-synchrone et synchrone, chacun ayant ses propres avantages et inconvénients en termes de performance et de sécurité des données. La réplication de groupe fournit une solution de haute disponibilité avec plusieurs nœuds actifs, garantissant la cohérence des données et la tolérance aux pannes.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues19 pages

La Réplication MySQL

La réplication MySQL permet de copier des données d'un serveur source vers des répliques, offrant des avantages tels que la répartition de la charge, la sécurité des données et l'analyse sans affecter les performances de la source. Les différents modes de réplication incluent asynchrone, semi-synchrone et synchrone, chacun ayant ses propres avantages et inconvénients en termes de performance et de sécurité des données. La réplication de groupe fournit une solution de haute disponibilité avec plusieurs nœuds actifs, garantissant la cohérence des données et la tolérance aux pannes.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

MySQL Réplication

La Réplication MySQL

La réplication permet de copier les données d'un serveur de base de données


MySQL (appelé source) vers un ou plusieurs serveurs de base de données
MySQL (appelés répliques). La réplication est asynchrone par défaut ; les
répliques n'ont pas besoin d'être connectées en permanence pour recevoir les
mises à jour d'une source. Selon la configuration, vous pouvez répliquer toutes
les bases de données, des bases de données sélectionnées ou même des tables
sélectionnées au sein d'une base de données.

Les avantages de la réplication dans MySQL incluent :

 Solutions de scale-out : répartition de la charge entre plusieurs


répliques pour améliorer les performances. Dans cet environnement,
toutes les écritures et mises à jour doivent avoir lieu sur le serveur
source. Les lectures, en revanche, peuvent avoir lieu sur une ou
plusieurs répliques. Ce modèle peut améliorer les performances des
écritures (puisque la source est dédiée aux mises à jour), tout en
augmentant considérablement la vitesse de lecture sur un nombre
croissant de répliques.
 Sécurité des données : étant donné que la réplique peut suspendre le
processus de réplication, il est possible d'exécuter des services de
sauvegarde sur la réplique sans corrompre les données sources
correspondantes.
 Analyse - des données en direct peuvent être créées sur la source,
tandis que l'analyse des informations peut avoir lieu sur la réplique
sans affecter les performances de la source.
 Distribution de données longue distance : vous pouvez utiliser la
réplication pour créer une copie locale des données à utiliser sur un
site distant, sans accès permanent à la source.

La réplication peut être utilisée dans de nombreux environnements différents à


des fins diverses. Cette section fournit des notes générales et des conseils sur
l'utilisation de la réplication pour des types de solutions spécifiques.

Utilisation de la réplication pour les sauvegardes

 Sauvegarde d'une réplique à l'aide de mysqldump


 Sauvegarde des données brutes à partir d'une réplique
 Sauvegarde d'une source ou d'une réplique en la mettant en lecture seule

Pour utiliser la réplication comme solution de sauvegarde, répliquez les données


de la source vers une réplique, puis sauvegardez la réplique. La réplique peut
être suspendue et arrêtée sans affecter le fonctionnement en cours de la source,
ce qui vous permet de produire un instantané efficace des données « en
direct » qui nécessiteraient autrement l'arrêt de la source.
La manière de sauvegarder une base de données dépend de sa taille et de la
façon dont vous sauvegardez les données uniquement ou les données et l'état de
la réplique afin de pouvoir reconstruire la réplique en cas de panne. Il existe
donc deux choix :

 Si vous utilisez la réplication comme solution pour sauvegarder les


données sur la source et que la taille de votre base de données n'est
pas trop importante, l’outil mysqldump peut être adapté.

 Pour les bases de données plus volumineuses, où mysqldump serait


peu pratique ou inefficace, vous pouvez sauvegarder les fichiers de
données brutes à la place. L'utilisation de l'option des fichiers de
données brutes signifie également que vous pouvez sauvegarder les
journaux binaires et relais qui permettent de recréer la réplique en cas
de défaillance de la réplique.

L'utilisation de mysqldump pour créer une copie d'une base de données vous
permet de capturer toutes les données de la base de données dans un format qui
permet d'importer les informations dans une autre instance de MySQL Server.
Comme le format des informations est des instructions SQL, le fichier peut
facilement être distribué et appliqué aux serveurs en cours d'exécution dans le
cas où vous auriez besoin d'accéder aux données en cas d'urgence. Cependant, si
la taille de votre ensemble de données est très importante, mysqldump peut
s'avérer peu pratique.

L' utilitaire client mysqldump effectue des sauvegardes logiques , en produisant


un ensemble d'instructions SQL qui peuvent être exécutées pour reproduire les
définitions d'objet de base de données et les données de table d'origine. Il vide
une ou plusieurs bases de données MySQL pour les sauvegarder ou les
transférer vers un autre serveur SQL. La commande mysqldump peut également
générer une sortie au format CSV, autre texte délimité ou XML.
La commande mysqldump est fréquemment utilisée pour créer une instance vide
ou une instance comprenant des données sur un serveur de réplication dans une
configuration de réplication. Les options suivantes s'appliquent au vidage et à la
restauration des données sur les serveurs sources de réplication et les réplicas.

Les différents types de réplications

 Asynchrone
 Semi-synchrone
 Synchrone complète

La réplication Asynchrone
La réplication asynchrone est le mode de réplication par défaut de MySQL. Elle
permet à un serveur primaire de transmettre les modifications de données à un
ou plusieurs serveurs secondaires, sans attendre une confirmation immédiate de
ces derniers.

Avantages de la réplication asynchrone

1. Performances élevées :
 Le primaire n'a pas besoin d'attendre une confirmation des serveurs
secondaires, ce qui réduit la latence et maintien des performances
élevées pour les transactions locales.

2. Simplicité :
 Facile à configurer et ne nécessite pas de gestion complexe des
threads ou des accusés de réception (accusés de réception).

3. Bonne scalabilité en lecture :


 Les serveurs secondaires peuvent gérer des charges de lecture
importantes sans impacter le primaire.

4. Compatible avec de nombreux scénarios :


 Idéal pour les scénarios où un léger décalage entre le primaire et les
secondaires est acceptable.

Inconvénients de la réplication asynchrone

1. Risque de perte de données :


 Si le serveur primaire tombe en panne avant que les modifications
ne soient transférées aux serveurs secondaires, ces modifications
peuvent être perdues.

2. Décalage possible (lag) :


 Les serveurs secondaires peuvent prendre du retard par rapport au
primaire si la charge est élevée ou si la connexion réseau est lente.

3. Non adapté pour les environnements critiques :


 Les environnements qui nécessitent une forte cohérence des
données (par exemple, les applications bancaires) ne doivent pas
utiliser ce mode.
La réplication Semi-synchrone

La réplication semi-synchrone est un mode de réplication dans MySQL qui


équilibre la sécurité des données et la performance. Contrairement à la
réplication asynchrone, où le serveur primaire continue son exécution sans
attendre que les répliques confirment la réception des données, la réplication
semi-synchrone impose un certain niveau de synchronisation entre le primaire et
au moins une réplique.

Caractéristiques principales :

1. Engagement des transactions :


 Lorsque le serveur principal exécute une transaction, il envoie les
modifications (événements du binlog) à ses réponses.
 Le primaire ne considère la transaction comme terminée qu'après
avoir reçu l’accusé de réception (ACK) d'au moins une réponse,
indiquant qu'elle a reçu et écrit les événements dans son propre log
relay.
2. Pas besoin d'attendre l'application :
 La réponse n'a pas besoin d'appliquer les modifications dans sa
base de données pour envoyer l'accusé de réception. Elle doit
seulement confirmer qu'elle a reçu et stocké les modifications.
3. Tolérance aux pannes :
 Si aucune réponse ne répond (par exemple, si toutes tombent en
panne), la réplication retourne automatiquement en mode
asynchrone pour que le primaire continue de fonctionner sans
attendre.

Comparaison des modes :


Laten Cohére Risque de perte
Mode Cas d'utilisation
ce nce de données
Asynchrone Faible Faible Élevé Sites web, analyses
Moyen Moyenn Commerce
Semi-synchrone Faible
ne e électronique, journaux
Critiques
Groupe Élevée Forte Très faible
d'applications
Synchrone Variab
Faible Moyenne Réporting, archivage
complète le

Comparaison avec d'autres modes :

Quand le primaire
Mode considère la transaction Avantages Inconvénients
comme confirmée

Après avoir écrit la Risque de perte de


Rapide, peu de
Asynchrone transaction dans son données si le primaire
supplément.
binlog. tombe en panne.

Après réception d'un Compromis


Semi-
ACK d'au moins une entre sécurité Légère latence ajoutée.
synchrone
réponse. et performance.

Après application des


Synchrone Sécurité Très prêté, surtout avec
modifications sur toutes
complète maximale. plusieurs répliques.
les répliques.

Avantages de la réplication semi-synchrone :


1. Réduction du risque de perte de données :
 En mode asynchrone, si le primaire tombe en panne avant que les
réponses reçoivent les données, ces données sont perdues.
 Avec la semi-synchronisation, le primaire garantit qu'au moins une
réplique dispose des données.

2. Meilleure performance que la réplication synchrone complète :


 Contrairement à la synchronisation complète, la semi-
synchronisation n'attend pas que toutes les réponses appliquent les
transactions, ce qui minimise la latence.

3. Tolérance à un certain niveau de panne :


 Si une réplique devient inaccessible, le primaire peut continuer de
fonctionner après un délai, bien qu'il passe temporairement en
mode asynchrone.

Avantages de la réplication semi-synchrone :

1. Réduction du risque de perte de données :

 En mode asynchrone, si le primaire tombe en panne avant que les


réponses reçoivent les données, ces données sont perdues.
 Avec la semi-synchronisation, le primaire garantit qu'au moins une
réplique dispose des données.

2. Meilleure performance que la réplication synchrone complète :

 Contrairement à la synchronisation complète, la semi-


synchronisation n'attend pas que toutes les réponses appliquent les
transactions, ce qui minimise la latence.

3. Tolérance à un certain niveau de panne :


 Si une réplique devient inaccessible, le primaire peut continuer de
fonctionner après un délai, bien qu'il passe temporairement en
mode asynchrone.

Cas d'utilisation :

1. Environnements critiques :
o Idéal pour les systèmes où la perte de données est inacceptable
(ex. : banques, e-commerce), mais où la performance reste
importante.

2. Basculement rapide :
o Associée à un système de basculement (failover) automatisé,
comme MySQL Inno DB Cluster ou Group Replication, la semi-
synchronisation assure que les répliques disposent des données
nécessaires pour reprendre rapidement les opérations.

La réplication semi-synchrone offre un bon compromis entre sécurité et


performances, en garantissant que les données sont disponibles sur au moins une
réplique avant que le primaire ne poursuive. C'est un choix judicieux pour les
systèmes où une perte de données limitée est tolérable, mais où la performance
reste critique.

La Réplication de Groupe MySQL (Group Replication)

La réplication de groupe (Group Replication) est une fonctionnalité native de


MySQL qui fournit une solution de haute disponibilité et de tolérance aux
pannes pour les bases de données. Elle repose sur une architecture distribuée où
plusieurs serveurs (nœuds) travaillent ensemble comme un cluster. Tous les
nœuds peuvent être actifs et accepter des modifications, ce qui permet une
réplication multi-primaire.
Caractéristiques principales

1. Multi-primaire :
 Tous les nœuds du groupe peuvent accepter des écritures, mais la
réplication s'assure que les modifications sont cohérentes sur tous
les nœuds.
2. Tolérance aux pannes :
 Si un nœud tombe en panne, les autres continuent à fonctionner
sans interruption.
3. Consensus automatique :
 Les modifications sont validées à l'aide de protocoles de consensus
comme le Paxos ou le Raft, garantissant une cohérence forte.
4. Isolation transactionnelle :
 Utilise des protocoles pour garantir que les transactions sont
conformes à la règle ACID même dans un environnement distribué.
5. Scalabilité en lecture :
 Les nœuds secondaires peuvent être utilisés pour répartir les
charges de lecture.
6. Réplication basée sur des certificats :
 Une transaction est d'abord validée localement, puis certifiée pour
s'assurer qu'elle ne crée pas de conflits avec d'autres transactions
dans le groupe.
Types de Modes

 La réplication de groupe prend en charge deux modes principaux :

1. Mode Multi :

 Tous les nœuds acceptent des écritures.


 Un protocole de consensus gère les conflits en cas de modifications
simultanées.

2. Mode avec un seul maître :

 Seul un nœud (le primaire) accepte des écritures.


 Les autres nœuds sont en mode lecture seule.
 Ce mode est utilisé pour simplifier la gestion des conflits.

1. Vérifiez les permissions du répertoire

Assurez-vous que l'utilisateur sous lequel vous exécutez la commande dispose


des droits d'écriture sur le répertoire /etc/mysqlrouter/.
 Vérifiez les permissions actuelles :

bash
ls -ld /etc/mysqlrouter/

Si le répertoire n'existe pas, créez-le avec les permissions appropriées :

sudo mkdir -p /etc/mysqlrouter/

sudo chown $USER:$USER /etc/mysqlrouter/

3. Désactivez temporairement AppArmor pour MySQL Router

Si le problème est lié à AppArmor, vous devez ajuster son profil pour autoriser
MySQL Router à écrire dans le répertoire.

 Éditez le fichier AppArmor lié à MySQL Router :

bash
CopierModifier
sudo nano /etc/apparmor.d/[Link]

 Ajoutez les lignes suivantes à la fin pour autoriser l'accès au répertoire


/etc/mysqlrouter/ :

/etc/mysqlrouter/ rw,

/etc/mysqlrouter/** rw,

Pour configurer MySQL Router avec votre architecture de réplication multi-


primaire (Group Replication), voici les étapes à suivre pour une configuration
optimale :
1. Vérification des prérequis

 Adresse Bind : Assurez-vous que chaque nœud utilise une adresse


bind_address correcte correspondant à son IP dans le fichier [Link].
 Utilisateur administratif : Vous utilisez déjà sifec_admin avec tous les
privilèges nécessaires (prérequis respecté).
 Cluster Inno DB : Vérifiez que le cluster Inno DB est bien opérationnel
sur votre réplication multi-primaire.
 Ports : Assurez-vous que les ports nécessaires pour la communication
sont ouverts entre les serveurs et MySQL Router (par défaut, 3306 pour
MySQL et 6446 pour MySQL Router).

2. Installation de MySQL Router

Vous avez déjà installé MySQL Router sur une machine séparée. Assurez-vous
qu'il est configuré pour communiquer avec les nœuds du cluster.

Commande pour configurer MySQL Router :

Exécutez la commande suivante sur la machine où MySQL Router est installé :

mysqlrouter --bootstrap sifec_admin@[Link]:3306 --user=mysqlrouter --


directory /etc/mysqlrouter --conf-base-port=6446 --conf-bind-address=[Link]

 --bootstrap sifec_admin@[Link]:3306 : Utilise l'utilisateur


sifec_admin pour récupérer la configuration du cluster.
 --user=mysqlrouter : Définit l'utilisateur système pour exécuter MySQL
Router.
 --directory /etc/mysqlrouter : Spécifie le répertoire où les fichiers de
configuration seront générés.
 --conf-base-port=6446 : Définit le port de base pour MySQL Router.
 --conf-bind-address=[Link] : Permet à MySQL Router d'écouter sur
toutes les interfaces réseau.

3. Configuration du fichier [Link]

Une fois la commande exécutée, un fichier de configuration sera généré


(souvent dans /etc/mysqlrouter/[Link]).

Vérifiez ou modifiez les paramètres suivants pour correspondre à votre


architecture :

[routing:read_write]
bind_address=[Link]
bind_port=6446
mode=read-write
destinations=[Link]:3306,[Link]:3306,[Link]:3306

[routing:read_only]
bind_address=[Link]
bind_port=6447
mode=read-only
destinations=[Link]:3306,[Link]:3306,[Link]:3306

4. Démarrage de MySQL Router


Une fois la configuration finalisée, démarrez MySQL Router avec la commande
suivante :

mysqlrouter --config /etc/mysqlrouter/[Link]

Pour l'exécuter en tant que service :

sudo systemctl start mysqlrouter

Vérifiez son statut :

sudo systemctl status mysqlrouter

5. Tester la connexion via MySQL Router

Pour vérifier que tout fonctionne correctement, essayez de vous connecter à


votre base de données via MySQL Router :

Connexion Read-Write :
mysql -u sifec_admin -p -h [Link] -P 6446
Connexion Read-Only :
mysql -u sifec_admin -p -h [Link] -P 6447

6. Points de validation supplémentaires

 Vérifiez que MySQL Router redirige correctement les connexions vers les
nœuds en testant les fonctionnalités de lecture et écriture.
 Consultez les journaux de MySQL Router pour identifier d'éventuelles
erreurs :

tail -f /var/log/mysqlrouter/[Link]
En cas de problème ou de besoin de redémarrage après des modifications,
utilisez :

sudo systemctl restart mysqlrouter

Avec cette configuration, votre MySQL Router sera correctement intégré à votre
architecture multi-primaire et redirigera efficacement les connexions selon le
mode souhaité (lecture-écriture ou lecture seule).

Pour supprimer un cluster MySQL Inno DB existant, suivez les étapes ci-
dessous. Assurez-vous de disposer des privilèges suffisants avec votre
utilisateur administrateur (par exemple, sifec_admin).

1. Se connecter à un nœud du cluster

Connectez-vous à un des nœuds du cluster avec l'utilisateur administrateur


:

mysql -u sifec_admin -p -h [Link] -P 3306

2. Vérifier le cluster existant

Pour vérifier les informations sur le cluster actuel, exécutez la commande


suivante dans MySQL Shell :

SHOW STATUS LIKE 'group_replication%';


Si vous utilisez MySQL Shell (mysqlsh), vous pouvez également lister les
nœuds du cluster en mode JavaScript :

[Link]().status();

3. Désactiver la réplication de groupe sur tous les nœuds

Sur chaque nœud du cluster, désactivez la réplication de groupe avec la


commande SQL suivante :

STOP GROUP_REPLICATION;

4. Supprimer le cluster avec MySQL Shell

Une fois la réplication arrêtée sur tous les nœuds, ouvrez MySQL Shell
(mysqlsh) et connectez-vous au cluster :

mysqlsh --uri sifec_admin@[Link]:3306

7. Supprimez le cluster en exécutant cette commande JavaScript :


8. var cluster = [Link]();
9. [Link]();
10.

11.5. Vérifier la suppression

12.Vérifiez que le cluster a été dissous avec succès :


[Link] --uri sifec_admin@[Link]:3306

[Link]écutez cette commande pour confirmer qu'aucun cluster n'existe :


[Link]();
Si le cluster est bien supprimé, vous obtiendrez un message indiquant
qu'aucun cluster n'est configuré.

6. Nettoyer les métadonnées

Pour nettoyer les métadonnées spécifiques au cluster, exécutez ces


commandes SQL sur chaque nœud :

RESET PERSIST group_replication_group_name;


RESET PERSIST group_replication_start_on_boot;
RESET PERSIST group_replication_bootstrap_group;
RESET PERSIST group_replication_local_address;
RESET PERSIST group_replication_group_seeds;
RESET PERSIST group_replication_single_primary_mode;
RESET PERSIST group_replication_enforce_update_everywhere_checks;

7. Optionnel : Supprimer les utilisateurs et bases spécifiques au cluster

Si vous avez des utilisateurs spécifiques (comme


mysql_innodb_cluster_metadata), vous pouvez les supprimer :

DROP USER 'mysql_innodb_cluster_metadata'@'%';

Supprimez également les bases spécifiques au cluster si elles existent


(assurez-vous qu'elles ne contiennent pas de données critiques) :

DROP DATABASE mysql_innodb_cluster_metadata;

8. Redémarrer les nœuds


Pour finaliser le nettoyage, redémarrez les serveurs MySQL sur chaque nœud
:

sudo systemctl restart mysql

Résultat attendu

Après avoir suivi ces étapes, le cluster InnoDB sera complètement supprimé,
et les nœuds seront disponibles pour une utilisation indépendante ou pour
configurer un nouveau cluster.

Vous aimerez peut-être aussi