La séparation lecture-écriture est mise en œuvre sur la base de la réplication maître-esclave. Dans un environnement d'application réel, il doit y avoir de nombreuses opérations de lecture. Tout comme lorsque nous achetons quelque chose sur une plateforme de commerce électronique, nous pouvons n'en acheter qu'un ou deux après avoir consulté 100 articles. Par conséquent, il y a toujours beaucoup plus d’opérations de lecture que d’opérations de mise à jour en écriture. Par conséquent, notre configuration de séparation lecture-écriture basée sur la réplication maître-esclave signifie qu'une base de données maître est dédiée à la modification des données. Lors de l'écriture, elle est écrite exclusivement sur la base de données maître. La base de données maître synchronise les modifications des données sur l'esclave via maître-esclave. réplication via la bibliothèque binlog., puis les autres requêtes du client seront éventuellement mappées à la bibliothèque esclave, et nous avons une bibliothèque principale avec deux ou trois bibliothèques esclaves. La bibliothèque principale est spécialement utilisée pour mettre à jour les données (opérations d'écriture) et l'esclave. La bibliothèque est spécialement utilisée pour mettre à jour les données (opérations d'écriture). Elle est utilisée pour les opérations de lecture, ce qui peut bien répartir la pression de lecture et d'écriture. Elle n'a pas besoin d'être concentrée sur la base de données principale. services back-end. De plus, il offre une haute disponibilité et une reprise après sinistre. Lorsque la bibliothèque principale est en panne, la bibliothèque esclave spécifiée peut être transformée en bibliothèque principale.
Le client MySQL utilise l'API fournie par MySQL pour communiquer avec MySQL Server et accéder à la base de données MySQL Server à l'aide du protocole de données TCP personnalisé de MySQL (appelé protocole MySQL). S'il n'y a qu'un seul serveur (environnement autonome), tous les ajouts, suppressions, modifications et requêtes de données sont effectués sur un seul serveur. À mesure que nos services sont utilisés par de plus en plus de personnes, le trafic augmente progressivement, nécessitant une concurrence croissante. Amélioration des capacités, donc si nous constatons que les performances de la base de données atteignent un goulot d'étranglement, nous pouvons effectuer des opérations de séparation en lecture-écriture pour améliorer les services d'arrière-plan. Le serveur principal MySQL sur l'image est dédié aux opérations d'écriture, et il y a deux serveurs esclaves MySQL connectés ci-dessous pour effectuer spécifiquement les opérations de lecture. Les demandes de lecture sont transmises à B et C, et les demandes d'écriture sont transmises à A. Si nous écrivons du code directement sur le client, les opérations d'écriture telles que l'insertion et la mise à jour sont effectuées sur A, et les opérations de lecture telles que show et select sont effectuées sur B et C. Cela équivaut à une liaison forte entre le code et le environnement maître-esclave. Cela conduit à une mauvaise stabilité du code, car il est fortement lié à l'environnement. Lorsque nous écrivons du code, nous devons savoir quelle machine est la bibliothèque principale responsable des opérations d'écriture et quelle machine est la bibliothèque esclave responsable des opérations de lecture. le code choisit. À ce stade, si une certaine machine raccroche, le code ne le saura pas et transmettra toujours la demande de la manière originale, et des problèmes de communication surviendront. Par conséquent, il n'est certainement pas approprié de mettre en œuvre la séparation de la lecture. et écrire en code. Ainsi, dans la solution actuelle, laséparation lecture-écriture doit s'appuyer sur le middleware de la base de données. Deuxièmement, introduisez le middleware MyCat
En fait, la séparation de la lecture et de l'écriture, ainsi que des sous-bases de données et des tables, doit toutes s'appuyer sur le middleware de base de données (mycat), et mycat est le rôle du serveur proxy.Le client ne peut pas réellement dire s'il est connecté à MyCat ou MySQL, car la communication suit le protocole de communication MySQL auparavant, c'est la façon dont vous communiquez avec MyCat maintenant, il n'est donc pas nécessaire de faire la distinction.
En configurant la séparation lecture-écriture sur MyCat
, nous n'avons pas besoin d'apporter de modifications au code sur le client. Il n'est pas nécessaire de distinguer quelle requête est lue et quelle requête est écrite. Le code accède directement à MyCat, et MyCat analyse la demande et la transmet au serveur responsable de l'opération correspondante en fonction de la nature de lecture et d'écriture de SQL pour obtenir une séparation en lecture et en écriture.Vous devez configurer les informations du serveur maître et des serveurs esclaves sur MyCat
Il existe trois situations :Un maître et un esclave, un maître et plusieurs esclaves, et plusieurs maîtres et plusieurs esclavesUn maître et. scénario d'esclaves multiples : Lorsque l'écriture d'une bibliothèque (maître) raccroche, MyCat peut également transformer immédiatement une bibliothèque esclave (esclave) directement en bibliothèque d'écriture (maître), ce qui équivaut à revenir au traitement d'une machine, car il n'y a pas maître-esclave entre la bibliothèque esclave et la configuration de réplication, nous devons donc également configurer la réplication maître-esclave entre la bibliothèque esclave qui devient la bibliothèque d'écriture et les autres bibliothèques esclaves.
Plusieurs maîtres et plusieurs esclaves :
Comme vous pouvez le voir sur l'image, le serveur MyCat dispose de deux ensembles d'environnements si la base de données maître de l'un d'entre eux est en panne (sa base de données esclave correspondante le sera également. indisponible), à ce moment-là, MyCat passera automatiquement à un autre ensemble d'environnements, car M1 et M2 sont également configurés comme maître-esclave mutuel
, donc M2 peut synchroniser les données de M1 et fournir exactement les mêmes services que l'environnement M1, ses capacités de haute disponibilité et de reprise après sinistre sont donc très bonnes.3. Port de service MyCat et port de gestion
Le port du service MySQL est 3306,MyCat dispose également d'un port de gestion 9066 Connectez-vous à ce port de gestion pour afficher tout l'état du travail de MyCat et la connexion au serveur back-end, ainsi que l'état de la connexion à la source de données, etc.
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!