Réplication MySQL GTID (asynchrone / semi-synchrone)
MySQLNiveau: IntermédiaireDurée: 45–90 minMet en place, à partir de serveurs MySQL installés, une réplication basée sur les GTID avec 1 source + N replicas : utilisateur de réplication, transfert des données existantes par le clone plugin ou mysqldump, SOURCE_AUTO_POSITION, TLS, semi-sync en option, replicas en super_read_only, supervision du retard et procédure de failover manuel. Vous obtenez une topologie supervisée qui reçoit les écritures sur la source et peut servir les lectures depuis les replicas. Si vous avez besoin d'un failover automatique, voyez InnoDB Cluster ; pour l'exploitation courante et les pannes d'une réplication existante, voyez le guide d'exploitation de la réplication.
Topologie: 1 source + 1 à 5 replicas
Avant de commencer
- MySQL … est installé et tourne sur tous les serveurs dans la même version mineure (guide DBAtlas Installation de MySQL sur un serveur unique), avec binlog et GTID activés. Le root du système peut se connecter avec mysql sans mot de passe.
- server_id et server_uuid sont différents sur chaque serveur. (Si les serveurs ont été créés par copie/clonage, auto.cnf dans le datadir peut être identique : supprimez-le et redémarrez le service.)
- Les serveurs se joignent mutuellement sur le port … (…).
- Les horloges sont synchronisées (chrony). La mesure du retard et le PITR reposent sur les horodatages.
- Les replicas disposent d'un espace libre égal au volume de données de la source…, plus la place pour le fichier de dump….
- Le volume de données de la source et le débit réseau sont connus (pour estimer la durée du transfert).
- Des mots de passe robustes sont prêts pour l'utilisateur de réplication… et l'utilisateur de clone temporaire… (au moins 8 caractères, majuscules/minuscules, chiffres, caractères spéciaux ; sans ' ni \). Les étapes demandent les mots de passe sans les afficher.
- On sait que l'application envoie les écritures uniquement à la source et (éventuellement) les lectures aux replicas ; les replicas seront en super_read_only.
Phases du guide
- Préparation (tous les serveurs) — Vérifier l'identité des serveurs · Autoriser les autres nœuds dans le pare-feu · Ajouter les paramètres de réplication (source) · Ajouter les paramètres de réplication (…) · Redémarrer MySQL
- Préparation de la source — Créer l'utilisateur de réplication · Installer les plugins semi-sync · Activer le semi-sync sur la source
- Transfert des données vers le replica (clone) — Installer le plugin clone · Créer l'utilisateur de clone temporaire · Cloner la source (…)
- Transfert des données vers le replica (mysqldump) — Prendre un dump cohérent de la source · Copier le dump sur les replicas · Charger le dump (…)
- Démarrer la réplication — Passer le replica en lecture seule (…) · Déclarer la source et démarrer la réplication (…)
- Vérification — Voir les replicas connectés sur la source · Écriture de test (source) · Lire l'écriture de test sur le replica (…) · Supprimer la base de test
- Supervision du retard et de l'état — État de la réplication et retard (…)
- Nettoyage — Supprimer l'utilisateur de clone · Supprimer le fichier de dump
- Failover manuel (perte de la source) — Failover : vérifier l'état du candidat · Failover : vérifier l'état du candidat · Failover : promouvoir le candidat en source · Failover : promouvoir le candidat en source · Failover : rattacher les autres replicas à la nouvelle source (…) · Failover : rattacher les autres replicas à la nouvelle source (…) …