Partage de technologie

Interview - Base de données et table du cluster Mysql-3

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Préface

Connaissez-vous les clusters MySQL ? Comprenez-vous le processus de réplication maître-esclave ? Comment gérez-vous des quantités massives de données ? Cet article se concentre sur l'introduction des questions d'entretien, et j'aimerais que chaque programmeur puisse participer ! ! !


1. Cluster MySQL

Dans l'environnement en ligne, nous déployons généralement une instance Mysql avec 1 maître et 1 esclave, ou 1 maître avec plusieurs esclaves, pour obtenir la haute disponibilité de Mysql et la séparation en lecture-écriture de Mysql est effectuée via les journaux binlog.

1.1 Construction du cluster Mysql :

Concernant la construction du cluster maître-esclave Mysql, vous pouvez vous référer à l'article ci-dessous du blogueur

1.2 Processus de synchronisation maître-esclave :

Insérer la description de l'image ici

2. Comment Mysql gère-t-il le stockage massif de données ?

En tant que stockage de données relationnelles, MySQL aura un goulot d'étranglement en termes de performances lorsque le volume de données d'une seule table dépasse 30 millions. De même, la connexion client et la concurrence prises en charge par une seule instance MySQL présentent actuellement certains goulots d'étranglement. envisagez d'utiliser la technologie des sous-bases de données et des sous-tableaux pour la mise en œuvre.

2.1 Division verticale

2.1.1 Sous-bibliothèque verticale :

Par exemple, les microservices d'aujourd'hui ont été divisés verticalement. Chaque module de microservice peut être connecté à sa propre instance de base de données Mysql. Sa caractéristique est qu'il est basé sur des tables et divise différentes tables en différentes bibliothèques selon l'activité. et étendre les données à différents niveaux ; augmenter les connexions I0 du disque et le volume de données dans des conditions de concurrence élevée ;
Insérer la description de l'image ici

2.1.2 Tableau vertical :

En fonction des champs, différents champs sont divisés en différentes tables en fonction des attributs de champ.Cela peut être fait : séparer les données chaudes et froides ; réduire la concurrence de transition IO, et les deux tables ne s'affectent pas.

Insérer la description de l'image ici

2.2 Division horizontale :

2.2.1 Sous-bibliothèque horizontale :

Divisez les données d'une bibliothèque en plusieurs bibliothèques. Il résout le problème des goulots d'étranglement des performances liés au grand nombre de bibliothèques uniques et à la concurrence élevée, et améliore la stabilité et la disponibilité du système.
Insérer la description de l'image ici

2.2.2 Tableau horizontal :

Divisez les données d'une table en plusieurs tables (peut être dans la même bibliothèque). Optimiser les problèmes de performances causés par un volume de données excessif dans une seule table ; éviter les conflits d'E/S et réduire la probabilité de verrouillage de table ;
Insérer la description de l'image ici

2.3 Utilisez-vous une sous-bibliothèque et des sous-tableaux dans votre projet ?

Nous avons établi des instances de bases de données selon différentes activités dans spring-boot gérées par spring-cloud, et réalisé un partitionnement vertical. Afin de faire face au stockage de données massives, notre projet utilise également le middleware Mycat pour diviser les bases de données et les tables.

Installation de Mycat et intégration Spring-boot :

2.4 Avez-vous rencontré des difficultés techniques lors de la division des bases de données et des tables ?

Une fois la base de données divisée en tables, étant donné que les données seront stockées dans plusieurs tables de plusieurs bases de données, des transactions distribuées seront rencontrées : des identifiants globaux distribués, des paramètres de règles de routage et des problèmes de pagination entre nœuds ;


Résumer

Cet article répond à quelques questions d'entretien sur les clusters Mysql, les sous-bases de données et les tables.