Maison  >  Article  >  base de données  >  Analysons ensemble la technologie d'architecture à haute disponibilité de MySQL

Analysons ensemble la technologie d'architecture à haute disponibilité de MySQL

WBOY
WBOYavant
2022-02-22 18:12:131970parcourir

Cet article vous apporte des connaissances pertinentes sur l'analyse technique de l'architecture mysql moyenne et haute disponibilité. Il présente principalement l'analyse technique de MMM, de l'architecture maître-esclave MySQL et des problèmes liés au cluster.

Analysons ensemble la technologie d'architecture à haute disponibilité de MySQL

Description du contexte

Avec le développement des technologies de l'information, les entreprises s'appuient de plus en plus sur la gestion de l'information. Les informations sur les données de diverses applications métier sont principalement stockées dans des bases de données. Les entreprises ont des exigences croissantes en matière de continuité d'accès à ces données. Afin d'éviter diverses pertes dues à l'interruption des données, la haute disponibilité des bases de données est devenue une priorité absolue dans la construction des informations d'entreprise. Dans le même temps, les entreprises clés dans des secteurs ou des domaines liés à l'économie nationale et aux moyens de subsistance de la population, tels que les télécommunications, la finance, l'énergie et l'industrie militaire, nécessitent une haute disponibilité pour le stockage des données clés. Le fonctionnement du système de données doit être garanti 24 heures sur 24. 7 pour éviter la perte et les dommages de données. Cliquez pour obtenir le matériel d'apprentissage de la programmation

Introduction à l'architecture à haute disponibilité

L'architecture à haute disponibilité est fondamentalement la norme pour les services Internet. Les services d'application et les services de base de données doivent être hautement disponibles. Pour un système, peut inclure de nombreux modules, tels que des applications frontales, des caches, des bases de données, des recherches, des files d'attente de messages, etc. Chaque module doit être hautement disponible pour garantir la haute disponibilité de l'ensemble du système . Pour les services de bases de données, la haute disponibilité peut être plus complexe. La disponibilité des services pour les utilisateurs nécessite non seulement des garanties d'accès, mais également d'exactitude. Par conséquent, la haute disponibilité des bases de données nécessite davantage d'authentification.

Classification de l'architecture haute disponibilité MySQL

  • MySQL implémente MMM pour la haute disponibilité
  • MySQL implémente la haute disponibilité MHA
  • MySQL implémente l'architecture maître-esclave haute disponibilité
  • MySQL implémente le mode Cluster haute disponibilité

Analyse technique de MMM

MMM (Master-Master replication manager for MySQL) est un ensemble de programmes de script qui prennent en charge le basculement double maître et la gestion quotidienne double maître.

  • MMM est développé en langage Perl et est principalement utilisé pour surveiller et gérer la réplication MySQL Master-Master (double maître). Bien qu'elle soit appelée réplication à double maître, l'entreprise n'autorise l'écriture que sur un seul maître en même temps. , et l'autre Le maître alternatif fournit des services de lecture partielle pour accélérer le préchauffage du maître alternatif au moment de la commutation principal-maître. L'extrémité de surveillance de MMM fournira plusieurs IP virtuelles (vip), y compris une VIP inscriptible. plusieurs VIP lisibles, via la gestion de supervision, seront liés au mysql disponible. Lorsqu'un certain mysql tombe en panne, le vip sera migré vers un autre mysql.

  • MMM, d'une part, implémente la fonction de basculement et, d'autre part, ses scripts d'outils internes supplémentaires peuvent également réaliser l'équilibrage de charge en lecture de plusieurs esclaves.
  • Ce package peut également effectuer un équilibrage de charge en lecture sur n'importe quel nombre de serveurs esclaves sur la base d'une configuration maître-esclave standard, vous pouvez donc l'utiliser pour démarrer des IP virtuelles sur un groupe de serveurs répliqués. sont des scripts pour implémenter des fonctions de sauvegarde et de resynchronisation des données entre les nœuds.

  • Analyse des composants de base MMM

mmm_mond : Processus de surveillance, responsable de tous les travaux de surveillance, décidant et traitant toutes les activités de rôle de nœud. Le script doit donc être exécuté sur un superviseur.

mmm_agentd : le processus d'agent exécuté sur chaque serveur msql termine le travail de sonde de surveillance et effectue des paramètres de service à distance simples. Ce script doit être exécuté sur la machine surveillée.
  • mmm_control : Un script simple qui fournit des commandes pour gérer mmm_mond.
  • Principe de mise en œuvre de base de MMM

MMM fournit des moyens automatiques et manuels de supprimer l'adresse IP virtuelle d'un serveur avec un délai de réplication élevé dans un groupe de serveurs. En même temps, il peut également sauvegarder les données et réaliser la réplication. entre deux nœuds Synchronisation des données, etc.

MySQL lui-même ne fournit pas de solution de basculement de réplication. Le basculement du serveur peut être réalisé via la solution MMM, permettant ainsi d'obtenir une haute disponibilité de MySQL.

Scénarios d'utilisation de MMM

Étant donné que MMM ne peut pas garantir complètement la cohérence des données, MMM convient aux scénarios dans lesquels les exigences de cohérence des données ne sont pas très élevées, mais vous souhaitez garantir au maximum la disponibilité de l'entreprise. Pour les entreprises qui ont des exigences élevées en matière de cohérence des données, il est fortement déconseillé d'utiliser une architecture à haute disponibilité comme MMM.

Le projet MMM vient de Google : code.google.com/p/mysql-mas…

Le site officiel est : mysql-mmm.org
  • Introduction au MHA
  • MHA (Master High Availability) est actuellement dans le domaine de la haute disponibilité MySQL Il s'agit d'une solution relativement mature. Elle a été développée par Youshimaton de la société japonaise DeNA (qui travaille actuellement chez Facebook). Il s'agit d'un excellent ensemble de logiciels à haute disponibilité pour le basculement et la promotion maître-esclave dans MySQL. environnement à haute disponibilité. Pendant le processus de basculement MySQL, MHA peut terminer automatiquement l'opération de basculement de la base de données dans un délai de 0 à 30 secondes, et pendant le processus de basculement, MHA peut garantir au maximum la cohérence des données pour atteindre une véritable haute disponibilité dans le sens.
  • MHA est un programme MySQL open source à haute disponibilité Lorsque MHA surveille la défaillance du nœud maître, il promouvra automatiquement le nœud esclave avec les dernières données pour devenir le nouveau nœud maître.

  • MHA obtiendra des informations supplémentaires d'autres nœuds pour éviter les problèmes de cohérence, c'est-à-dire que MHA obtiendra des informations sur les données d'autres nœuds esclaves et enverra les informations au nœud esclave le plus proche du nœud maître, de sorte que le nœud maître échoue. Le nœud esclave sera promu au nœud maître, et ce nœud esclave disposera de toutes les informations de données des autres nœuds esclaves.

  • MHA fournit également la fonction de commutation en ligne du nœud maître, c'est-à-dire la commutation du nœud maître/esclave à la demande.

Les composants de base de MHA

MHA se composent de deux parties : MHA Manager (nœud de gestion) et MHA Node (nœud de données).

MHA Manager peut être déployé sur une machine indépendante pour gérer plusieurs clusters maître-esclave, ou il peut être déployé sur un nœud esclave.

Principe de mise en œuvre de MHA

  • MHA Node s'exécute sur chaque serveur MySQL. MHA Manager détectera régulièrement le nœud maître dans le cluster, il peut automatiquement promouvoir l'esclave avec les dernières données vers le nouveau maître. redirigez tous les autres esclaves vers le nouveau maître. L'ensemble du processus de basculement est totalement transparent pour l'application.
  • Pendant le processus de basculement automatique de MHA, MHA essaie de sauvegarder le journal binaire du serveur principal en panne pour garantir que les données ne soient pas perdues au maximum, mais cela n'est pas toujours réalisable.
  • Par exemple, si le matériel du serveur principal tombe en panne ou n'est pas accessible via ssh, MHA ne peut pas enregistrer le journal binaire et ne fait que basculer et perdre les dernières données. Grâce à la réplication semi-synchrone de MySQL 5.5, vous pouvez réduire le risque de perte de données.
  • MHA peut être combiné avec la réplication semi-synchrone. Si un seul esclave a reçu le dernier journal binaire, MHA peut appliquer le dernier journal binaire à tous les autres serveurs esclaves, garantissant ainsi la cohérence des données de tous les nœuds.

Scénarios d'utilisation de MHA

Actuellement, MHA prend principalement en charge une architecture à un maître et à plusieurs esclaves.

  • Pour créer MHA, un cluster de réplication doit avoir au moins trois serveurs de base de données, un maître et deux esclaves, c'est-à-dire que l'un agit en tant que maître, l'autre en tant que maître de sauvegarde et l'autre en tant qu'esclave.

  • Comme au moins trois serveurs sont requis et en raison de considérations de coût de la machine, Taobao l'a également modifié sur cette base. Actuellement, Taobao TMHA prend déjà en charge un maître et un esclave.

  • Au niveau du code, MHA n'est qu'un ensemble de scripts Perl. Je pense donc qu'avec la force technique d'Alibaba, il n'est pas difficile de changer MHA pour prendre en charge un maître et un esclave.

Architecture maître-esclave MySQL

Ce type d'architecture est couramment utilisé par les startups, et il facilite également l'expansion ultérieure étape par étape

Caractéristiques de cette architecture

  1. Déploiement faible coût, rapide et pratique
  2. Séparation de la lecture et de l'écriture
  3. Cela peut également réduire la pression de lecture de la bibliothèque en ajoutant des bibliothèques esclaves à temps
  4. Point de défaillance unique de la bibliothèque principale
  5. Problèmes de cohérence des données (causés par des retards de synchronisation)

  1. Le logiciel haute disponibilité peut utiliser Heartbeat, qui est entièrement responsable du VIP, des données et de la gestion du service DRBD
  2. peut basculer automatiquement et rapidement après la panne du maître, et la bibliothèque esclave peut toujours synchroniser les données avec la nouvelle bibliothèque maître via VIP
  3. La bibliothèque esclave prend également en charge la séparation lecture-écriture, qui peut être implémentée à l'aide d'un middleware ou de programmes

Présentation du cluster MySQL

La technologie MySQL Cluster fournit des fonctionnalités de redondance pour MySQL dans les systèmes distribués, améliore la sécurité et peut améliorer le système. fiabilité et validité des données. Le cluster MySQL nécessite un ensemble d'ordinateurs, chaque ordinateur peut être compris comme un nœud et les fonctions de ces nœuds sont différentes. Le cluster MySQL peut être divisé en trois types de nœuds selon leurs fonctions : nœuds de gestion, nœuds de données et nœuds SQL. Un ordinateur dans le cluster peut être un certain nœud, ou un ensemble de deux ou trois types de nœuds. Ces nœuds sont combinés pour fournir une gestion des données de cluster hautement fiable et performante pour les applications.

Actuellement, les données d'entreprise ont un volume de données élevé. augmentant, donc les exigences pour MySQL augmentent encore. La plupart des solutions à haute disponibilité précédentes présentent généralement certains défauts, comme la solution de réplication MySQL. Il faut un certain temps pour détecter si le maître est vivant, et un certain temps. Un certain temps est nécessaire si une commutation maître-esclave est requise, la haute disponibilité repose donc fortement sur des logiciels de surveillance et des outils de gestion automatisés. Avec le développement continu de MySQL Cluster, ses performances et sa haute disponibilité ont finalement été considérablement améliorées.

Concept de base de MySQL Cluster

MySQL Cluster est simplement une technologie de cluster MySQL, composée d'un groupe d'ordinateurs. stocker un ou plusieurs nœuds, y compris des serveurs MySQL, des nœuds de données du cluster DNB, la gestion d'autres nœuds et des programmes d'accès aux données spécialisés. Ensemble, ces nœuds peuvent améliorer les performances et la haute disponibilité des applications et la gestion évolutive des données du cluster ;

Le processus d'accès du cluster MySQL ressemble généralement à ceci. Les applications utilisent généralement un certain algorithme d'équilibrage de charge pour distribuer l'accès aux données aux différents nœuds SQL. Les nœuds SQL effectuent l'accès aux données aux nœuds de données et renvoient les résultats des données à partir des nœuds de données. nœud simplement Configurer et gérer les nœuds SQL et les nœuds de données ;

Comprendre les nœuds du cluster MySQL

Le cluster MySQL peut être divisé en 3 types de nœuds selon les types de nœuds, à savoir les nœuds de gestion, les nœuds SQL et les nœuds de données. Tous ces nœuds constituent un nœud. Le système de cluster MySQL complet, en fait, les données sont stockées dans le moteur de stockage du serveur de stockage NDB, la structure des tables est stockée dans le serveur MySQL, l'application accède aux données via le serveur MySQL et le serveur de gestion de cluster gère le Stockage NDB via l'outil de gestion ndb_mgmd Server ;

【1. Nœud de gestion】

Le nœud de gestion est principalement utilisé pour gérer d'autres nœuds. Le fichier config.ini est généralement configuré pour configurer le nombre de copies à conserver dans le cluster, la quantité de mémoire à allouer aux données et aux index sur chaque nœud de données, l'adresse IP et le chemin du disque pour enregistrer les données sur chaque nœud de données ;

Les nœuds de gestion gèrent généralement les fichiers de configuration du cluster et les journaux du cluster. Chaque nœud du cluster récupère les informations de configuration du serveur de gestion et demande un moyen de déterminer l'emplacement du serveur de gestion. Si un nouvel événement se produit dans le nœud, le nœud transmettra les informations de ce type d'événement au serveur de gestion et écrira ces informations dans le journal du cluster ;

Généralement, au moins un nœud de gestion est requis dans le système MySQL Cluster ; De plus, comme le nœud de données et le nœud SQL doivent lire les informations de configuration du cluster avant de démarrer, le nœud de gestion est généralement démarré en premier

【Nœud 2.SQL】

Le nœud SQL est simplement mysqld ; serveur, application Les nœuds de données ne sont pas accessibles directement, les données ne peuvent être renvoyées que via les nœuds SQL. Tout nœud SQL est connecté à tous les nœuds de stockage. Ainsi, lorsqu'un nœud de stockage tombe en panne, le nœud SQL peut transférer la demande vers un autre nœud de stockage pour exécution. De manière générale, plus il y a de nœuds SQL, mieux c'est. Plus il y a de nœuds SQL, plus la charge assignée à chaque nœud SQL est faible et meilleures sont les performances globales du système

【3. Stockez les données dans le cluster. Le cluster MySQL réplique les données entre chaque nœud de données. Si un nœud tombe en panne, il y aura toujours un autre nœud de données pour stocker les données.

Habituellement, ces trois nœuds logiques différents peuvent être distribués sur différents ordinateurs. le cluster dispose d'au moins 3 ordinateurs. Afin de garantir que le service du cluster peut être maintenu normalement, le nœud de gestion est généralement placé sur un hôte séparé

Apprentissage recommandé :

Tutoriel vidéo mysql

 ;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer