Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-il possible de faire une réplication N-maître => 1-esclave avec MySQL ?

La réplication multi-maître (un esclave avec plus d'un maître) n'est pas prise en charge par MySQL (à part MySQL Cluster). Vous pouvez faire une réplication maître-maître d'une réplication circulaire (anneau) (décrite ici ou ici ).

Dans MySQL hautes performances 2e édition les auteurs décrivent un moyen d'émuler la réplication multi-maître en utilisant une combinaison intelligente de réplication maître-maître et de Blackhole moteur de stockage (Chapitre 8 Réplication> Topologies de réplication> Solutions de réplication personnalisées> Émuler la réplication multimaître p. 373 - 375 ).

Ils montrent deux topologies possibles :

Utiliser deux co-maîtres (permettant de commuter le maître de l'esclave de Maître 1 au Master 2 )

  • Master 1 : héberge DB1 et réplique DB2 du Master 2; le moteur de stockage pour toutes les tables dans DB2 est remplacé par Blackhole afin que les données ne soient pas effectivement stockées sur Master 1 .
  • Master 2 : héberge DB2 et réplique DB1 du Master 1; le moteur de stockage pour toutes les tables dans DB1 est remplacé par Blackhole afin que les données ne soient pas effectivement stockées sur Master 2
  • Esclave 1 : réplique DB1 et DB2 soit de Master 1 ou Master 2 (permettant de changer de maître); le résultat est que Esclave 1 réplique les deux bases de données qui sont effectivement hébergées sur deux maîtres différents.

Utiliser une chaîne principale

  • Master 1 : héberge uniquement DB1
  • Master 2 : héberge DB2 et réplique DB1 du Master 1; le moteur de stockage pour toutes les tables dans DB1 est remplacé par Blackhole afin que les données ne soient pas effectivement stockées sur Master 2
  • Esclave 1 : réplique DB1 et DB2 du Master 2; le résultat est que Esclave 1 réplique les deux bases de données qui sont effectivement hébergées sur deux maîtres différents.

Veuillez noter que cette configuration vous permet uniquement d'envoyer des mises à jour à DB1 jusqu'au Master 1 et mises à jour de DB2 au Master 2 . Vous ne pouvez pas envoyer des mises à jour à l'une ou l'autre des tables à des maîtres arbitraires.

Il est peut-être possible de combiner la solution décrite avec le hack pour une véritable réplication maître-maître (permettant les mises à jour des deux maîtres) qui utilise une sorte d'auto-incrémentation et est décrite ici ou ici .