Maison  >  Article  >  base de données  >  Comment réaliser une séparation en lecture et en écriture dans MySQL

Comment réaliser une séparation en lecture et en écriture dans MySQL

PHPz
PHPzoriginal
2023-04-19 15:26:471328parcourir

Mysql est un système de gestion de bases de données relationnelles léger largement utilisé dans le domaine du développement Web. Cependant, pour les scénarios d'application avec une concurrence élevée et une pression d'écriture élevée, la manière d'améliorer les performances de la base de données est devenue un problème important. MySQL implémente la séparation lecture-écriture, qui constitue une solution efficace pour améliorer les performances des bases de données.

Comment MySQL gère-t-il les requêtes de lecture et d'écriture ?

Par défaut, lorsqu'une requête de lecture ou d'écriture parvient à Mysql, Mysql Server recevra la requête puis la transmettra directement au moteur de stockage. Le moteur de stockage le traitera selon le type de requête (demande de lecture ou demande d'écriture). Pour les demandes de lecture, le moteur de stockage lira les données directement depuis la mémoire, tandis que pour les demandes d'écriture, les données seront mises en cache en mémoire puis écrites sur le disque de manière asynchrone.

Pourquoi devons-nous séparer la lecture et l’écriture ?

Cependant, à mesure que l'échelle des applications augmente, il y aura de plus en plus de demandes de lecture et d'écriture. À ce stade, le moteur de stockage peut avoir des difficultés à traiter à la fois les demandes de lecture et les demandes d'écriture. Si toutes les demandes de lecture et d'écriture sont transmises au moteur de stockage pour traitement, cela peut entraîner une baisse des performances du serveur, ralentir la réponse, provoquer une pile de demandes et affecter le fonctionnement normal de l'application.

Par conséquent, afin de soulager la pression sur le moteur de stockage et d'améliorer les performances de MySQL, nous pouvons séparer les demandes de lecture et les demandes d'écriture et les traiter respectivement par différents serveurs. Cette solution est la séparation en lecture et en écriture de MySQL.

Comment réaliser la séparation de la lecture et de l'écriture dans MySQL ?

La séparation lecture-écriture de MySQL comprend principalement deux parties : Maître et Esclave. Parmi eux, Master est utilisé pour traiter les demandes d'écriture et Slave est utilisé pour traiter les demandes de lecture. Le processus de mise en œuvre spécifique est divisé en les étapes suivantes :

1. Installez le serveur mysql :

Installez le serveur mysql sur les serveurs maître et esclave. Une fois l'installation terminée, vous devez vous assurer que le serveur MySQL est en cours d'exécution.

2. Configurez le serveur mysql

Sur le serveur maître, ajoutez les paramètres de configuration suivants au fichier my.cnf afin qu'il puisse accepter les demandes de lecture du serveur esclave. En fait, il s'agit de modifier la méthode de configuration d'origine et d'ajouter de nouveaux éléments de configuration.

log-bin=mysql-bin
server-id=1

Sur le serveur Esclave, en ajoutant les paramètres de configuration suivants dans le fichier my.cnf, il peut accepter le fichier binlog du serveur Maître et l'écrire sur le serveur esclave.

server-id=2

3. Créez un compte de réplication

Sur le serveur maître, créez un compte de réplication via la commande suivante et accordez les autorisations de lecture et d'écriture correspondantes :

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

4. Démarrez la séparation lecture-écriture

Sur le serveur esclave, passez la commande suivante Démarrez la fonction de séparation lecture-écriture du serveur esclave :

CHANGE MASTER TO MASTER_HOST='master_server_hostname',MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file_name', MASTER_LOG_POS=master_log_file_position;

Parmi eux, MASTER_HOST est le nom d'hôte du serveur Maître, MASTER_USER est le nom du compte de réplication créé ci-dessus, MASTER_PASSWORD est le mot de passe du compte de réplication, MASTER_LOG_FILE et MASTER_LOG_POS sont les informations du fichier binlog sur le serveur maître.

5. Vérifiez si la séparation en lecture-écriture fonctionne correctement

Vérifiez si la séparation en lecture-écriture fonctionne correctement via la commande suivante :

SHOW SLAVE STATUS\G

Si Slave_IO_Running et Slave_SQL_Running sont tous deux Oui, cela signifie que la séparation en lecture-écriture a été réussie. mis en œuvre.

Résumé :

La séparation en lecture et en écriture de MySQL peut améliorer efficacement les performances de MySQL et résoudre le problème d'une pression excessive sur le serveur et d'une réponse lente lorsqu'il y a trop de requêtes de lecture et d'écriture. Pour obtenir une séparation lecture-écriture, vous devez installer le serveur MySQL sur les serveurs maître et esclave respectivement, les configurer en conséquence et définir les paramètres. La mise en œuvre de la séparation lecture-écriture est très utile pour améliorer les performances du serveur et constitue un bon choix pour les utilisateurs de 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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn