Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Utiliser le mode MGR

Dernière mise à jour :Aug 08, 2026

MySQL Group Replication (MGR) est un mode de réplication distribué reposant sur le mécanisme de journalisation binaire de MySQL et le protocole Paxos. Pour les charges de travail où toute perte de données ou lecture obsolète après un basculement est inacceptable — telles que la finance, le commerce électronique et les systèmes transactionnels critiques — MGR offre des garanties de cohérence plus robustes que la réplication asynchrone ou semi-synchrone. Cette rubrique explique comment activer MGR sur un cluster RDS (une instance ApsaraDB RDS for MySQL exécutant l'édition Cluster de RDS) et comment basculer entre les modes de réplication.

Pourquoi utiliser MGR

MGR s'appuie sur le protocole Paxos pour maintenir tous les nœuds synchronisés. Votre cluster RDS bénéficie ainsi de trois propriétés que la réplication asynchrone et semi-synchrone ne peuvent garantir :

  • Cohérence forte des données : en cas de défaillance du nœud principal, le cluster le retire automatiquement et promeut un nœud secondaire. Les données sur le nouveau nœud principal sont cohérentes avec celles validées par le nœud défaillant.

  • Fiabilité élevée des données : une transaction sur le nœud principal n'est validée qu'après confirmation par la majorité (plus de la moitié) des nœuds secondaires qu'ils ont bien reçu les données, évitant ainsi toute perte d'information.

  • Cohérence transactionnelle globale configurable : le paramètre group_replication_consistency permet d'ajuster la cohérence en lecture et en écriture par session selon les besoins de votre charge de travail.

MGR offre un débit inférieur à celui de la réplication asynchrone et consomme plus de mémoire que les modes asynchrone et semi-synchrone. Testez les performances de vos charges de travail sensibles aux latences ou contraintes en mémoire avant de passer à MGR.

Prérequis

Avant de commencer, vérifiez que votre cluster RDS répond à toutes les exigences suivantes. Consultez l'édition RDS, la version majeure du moteur et le type d'instance sur la page Basic Information du cluster dans la console ApsaraDB RDS.

Exigence Valeur
Édition RDS RDS Cluster Edition
Version majeure du moteur MySQL 8,0
Version mineure du moteur 20221231 ou ultérieure
Moteur de stockage InnoDB
Mémoire ≥ 8 Go
Nombre de nœuds Nombre impair, ≥ 3
Spécifications des nœuds Tous les nœuds doivent avoir des spécifications identiques
Version du proxy de base de données (si activé) Maxscale_MySQL_2.2.12_20230302 ou ultérieure
Type de produit Standard
Pour migrer de l'édition High-availability de RDS vers l'édition Cluster de RDS, consultez Migrer l'édition RDS de RDS High-availability Edition vers RDS Cluster Edition . Pour mettre à jour la version mineure du moteur, consultez Mettre à jour la version mineure du moteur . Pour mettre à niveau la version du proxy de base de données, consultez Mettre à niveau la version du proxy de base de données . Pour modifier les spécifications de l'instance, consultez Modifier les spécifications de l'instance .

Limitations

Il est impossible d'activer MGR si le cluster contient des tables X-Engine ou des tables dépourvues de clé primaire. Exécutez les requêtes suivantes pour vérifier ces conditions.

Vérifier la présence de tables X-Engine : un résultat égal à 0 signifie qu'aucune table X-Engine n'existe :

SELECT
  COUNT(1)
FROM
  information_schema.TABLES
WHERE
  ENGINE = 'xengine'
  AND table_schema NOT IN(
    'information_schema', 'performance_schema',
    'mysql', 'test', 'sys', '__recycle_bin__'
  );

Vérifier l'absence de clés primaires : un résultat égal à 0 signifie que toutes les tables possèdent une clé primaire :

SELECT
  COUNT(1) AS count
FROM
  information_schema.TABLES t1
  LEFT OUTER JOIN information_schema.columns t2 ON t1.table_schema = t2.TABLE_SCHEMA
  AND t1.table_name = t2.TABLE_NAME
  AND t2.COLUMN_KEY = 'PRI'
WHERE
  t2.table_name IS NULL
  AND t1.table_type = 'BASE TABLE'
  AND t1.TABLE_SCHEMA NOT IN(
    'information_schema', 'performance_schema',
    'mysql', 'sys'
  );

Pour consulter la liste complète des exigences et limitations de MySQL Group Replication, reportez-vous à la section Requirements and Limitations de la documentation MySQL.

Impacts

Le passage d'une réplication asynchrone ou semi-synchrone à MGR déclenche un basculement d'instance. Effectuez cette opération pendant les heures creuses et assurez-vous que votre application est configurée pour se reconnecter automatiquement. Pour plus de détails sur les conséquences d'un basculement, consultez la rubrique Impacts d'un basculement d'instance.

Facturation

L'utilisation de MGR est gratuite.

Activer MGR

Activer MGR sur un nouveau cluster RDS

Lors de la création d'un cluster RDS, définissez le paramètre Parameter Template sur MySQL_InnoDB_8,0_RDS Cluster Edition_MGR Parameter Template. MGR est actif dès la création du cluster.

Basculer un cluster RDS existant vers MGR

  1. Accédez à la page Basic Information de votre cluster RDS.

  2. Dans la section Instance Topology Management , cliquez sur Change Data Replication Mode.

  3. Dans la boîte de dialogue, définissez le paramètre Data Replication Mode sur MGR, puis cliquez sur confirm.

Pour revenir à une réplication asynchrone ou semi-synchrone, répétez les mêmes étapes et sélectionnez le mode cible.

Notes d'utilisation

Paramètres fixes

Lorsque MGR est activé, les paramètres suivants sont définis sur des valeurs spécifiques afin de garantir la stabilité du cluster.

GTID et journalisation binaire : requis par le moteur de consensus Paxos :

gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
binlog_format=ROW
binlog_transaction_dependency_tracking=WRITESET
transaction_write_set_extraction=XXHASH64
master_info_repository=TABLE
relay_log_info_repository=TABLE

Réplication et application parallèle : garantit une relecture ordonnée et parallèle des transactions :

slave_preserve_commit_order=ON
slave_parallel_type=LOGICAL_CLOCK
rpl_semi_sync_master_enabled=OFF
rpl_semi_sync_slave_enabled=OFF

Paramètres spécifiques à MGR : définit la topologie du cluster et la pile de communication :

disabled_storage_engines=MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY,XENGINE
replication_communication_stack=MYSQL
group_replication_single_primary_mode=ON
group_replication_paxos_single_leader=ON
group_replication_consistency=BEFORE_ON_PRIMARY_FAILOVER

Choisir un niveau de cohérence

Le paramètre group_replication_consistency contrôle la rigueur avec laquelle le cluster applique la cohérence en lecture et en écriture. La valeur par défaut, BEFORE_ON_PRIMARY_FAILOVER, protège les lectures lors d'un basculement. Remplacez ce paramètre au niveau de la session selon vos besoins.

Sélectionnez le niveau approprié pour votre charge de travail en vous basant sur les scénarios suivants :

Scénario Valeur recommandée
Votre charge de travail est dominée par les lectures et les écritures sont rares. Les lectures obsolètes sont inacceptables. Utilisez BEFORE sur la session secondaire : le nœud secondaire attend la validation des transactions en attente sur le nœud principal avant de servir la lecture.
Votre charge de travail comporte de nombreuses écritures. Vous souhaitez confirmer la propagation d'une écriture à tous les nœuds avant de retourner un succès. Utilisez AFTER sur la session principale : le nœud principal confirme la validation uniquement après l'application de la transaction par tous les nœuds.
La plupart du trafic tolère une légère obsolescence, mais certaines opérations spécifiques (comme les modifications de permissions) exigent une cohérence totale. Définissez BEFORE ou AFTER uniquement pour ces sessions spécifiques, en laissant les autres sessions avec la valeur par défaut.

Pour plus de détails sur l'implémentation, consultez la rubrique Présentation du mode MGR.

FAQ

Puis-je revenir de MGR à une réplication asynchrone ou semi-synchrone ?

Oui. Sur la page Basic Information , cliquez sur Change Data Replication Mode dans la section Instance Topology Management , puis sélectionnez le mode cible. Le basculement est bidirectionnel entre les modes asynchrone, semi-synchrone et MGR.

Les nœuds secondaires peuvent-ils traiter les requêtes de lecture en mode MGR ?

Oui. Toutefois, si les nœuds secondaires sont surchargés, les performances d'écriture sur le nœud principal se dégradent. Activez la fonctionnalité de proxy de base de données avec répartition lecture/écriture pour distribuer les lectures sur les nœuds secondaires tout en contrôlant la latence de réplication et les pondérations de lecture. Cela évite que les nœuds secondaires ne deviennent un goulot d'étranglement.

MGR prend-il en charge le mode multi-principal ?

Non. MGR sur ApsaraDB RDS for MySQL prend uniquement en charge le mode mono-principal. Le mode multi-principal introduit une instabilité : une perturbation ou une panne sur n'importe quel nœud affecte la disponibilité de l'ensemble du cluster.

Pourquoi MGR nécessite-t-il au moins 8 Go de mémoire ?

MGR ajoute trois sources de surcoût mémoire par rapport à la réplication classique :

  • La couche de communication XCom maintient un cache de messages d'environ 1 Go.

  • Le module de certification des transactions conserve un tableau d'informations de certification en mémoire.

  • Des threads d'arrière-plan supplémentaires s'exécutent pour les tâches de gestion de groupe.

Sur les instances disposant de moins de 8 Go de mémoire, des charges de travail intensives (telles que des pics de requêtes parallèles importantes) peuvent épuiser la mémoire disponible et provoquer une erreur d'épuisement de la mémoire (OOM).

Dois-je choisir un type d'instance à usage général ou dédié pour MGR ?

  • Mémoire de 8 à 16 Go : utilisez une instance à usage général. Le partage des ressources physiques offre aux processus MGR plus de flexibilité pour utiliser la mémoire non consommée par les autres locataires.

  • 32 Go ou plus : utilisez une instance dédiée pour une isolation des ressources plus stricte et des performances de pointe plus prévisibles.

Référence API

Opération Description
CreateDBInstance Crée une instance. Pour créer un cluster RDS avec MGR activé, définissez DBParamGroupId sur rpg-sys-01040407010400 et configurez les autres paramètres selon vos besoins.
ModifyDBInstanceHAConfig Modifie le mode de réplication des données. Pour basculer vers MGR, définissez SyncMode sur Mgr.

Étapes suivantes