Comment créer un cluster MySQL hautement disponible à l'aide d'une architecture de base de données distribuée
Avec le développement d'Internet, la demande de haute disponibilité et d'évolutivité des bases de données devient de plus en plus élevée. L'architecture de bases de données distribuées est devenue l'un des moyens efficaces de répondre à ces besoins. Cet article explique comment utiliser une architecture de base de données distribuée pour créer un cluster MySQL hautement disponible et fournit des exemples de code pertinents.
La réplication maître-esclave MySQL est la solution de base haute disponibilité fournie par MySQL. Grâce à la réplication maître-esclave, la sauvegarde des données et la séparation lecture-écriture peuvent être réalisées. Tout d’abord, nous devons créer une bibliothèque maître et plusieurs bibliothèques esclaves. Supposons que nous ayons 3 serveurs, à savoir le serveur maître (192.168.1.100) et deux serveurs esclaves (192.168.1.101 et 192.168.1.102).
Configurez les éléments suivants sur le serveur principal :
Ajoutez le contenu suivant dans le fichier de configuration my.cnf :
server-id=1 log-bin=mysql-bin
Créez un utilisateur pour la réplication dans MySQL et accordez les autorisations de réplication :
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
Exécutez le commande suivante pour démarrer l'enregistrement du journal binaire :
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
Enregistrez le fichier et la position affichés, qui seront utilisés dans les étapes suivantes.
Configurez le serveur esclave comme suit :
Ajoutez le contenu suivant dans le fichier de configuration my.cnf :
server-id=2
Exécutez la commande suivante pour connecter le serveur esclave au serveur maître :
CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='[MASTER_LOG_FILE]', MASTER_LOG_POS=[MASTER_LOG_POS]; START SLAVE;
Change [MASTER_LOG_FILE ] et [MASTER_LOG_POS] sont remplacés par le fichier et la position enregistrés sur le serveur maître.
Répétez les étapes ci-dessus pour configurer tous les serveurs esclaves.
Après avoir construit un cluster de réplication maître-esclave, nous pouvons utiliser la séparation en lecture-écriture pour améliorer encore les performances de la base de données. La répartition lecture-écriture distribue les opérations de lecture aux serveurs esclaves et envoie les opérations d'écriture au serveur maître. Cela peut réduire la charge sur le serveur principal et améliorer les performances de concurrence des opérations de lecture.
Tout d'abord, effectuez la configuration suivante sur le serveur maître :
Ajoutez le contenu suivant dans le fichier de configuration my.cnf :
log-slave-updates
Exécutez la commande suivante pour redémarrer le serveur maître :
SET @@GLOBAL.read_only=ON;
Effectuer sur le serveur esclave Configurez comme suit :
Ajoutez le contenu suivant dans le fichier de configuration my.cnf :
read-only
Exécutez la commande suivante pour redémarrer le serveur esclave :
SET @@GLOBAL.read_only=OFF;
Ensuite, nous devons configurer séparation lecture-écriture dans l’application. En supposant que nous utilisons PHP pour développer des applications, voici un exemple de code simplifié :
<?php $readConn = new mysqli('192.168.1.101', 'username', 'password', 'database'); $writeConn = new mysqli('192.168.1.100', 'username', 'password', 'database'); // 读操作 $result = $readConn->query("SELECT * FROM table"); // 写操作 $writeConn->query("INSERT INTO table (column1, column2) VALUES ('value1', 'value2')"); ?>
Le partitionnement MySQL est une méthode de répartition des données sur plusieurs serveurs pour améliorer les performances de l'évolutivité de la base de données. Un cluster partitionné divise les données en plusieurs partitions, chaque partition stockant une partie des données. Avant le partitionnement, vous devez d'abord définir des règles de partitionnement dans l'application.
Ce qui suit est un exemple de code qui implémente la logique du stockage partitionné basé sur l'ID utilisateur :
<?php $user_id = 1; $shard_id = $user_id % 3; $conn = new mysqli('192.168.1.10' . $shard_id, 'username', 'password', 'database'); $result = $conn->query("SELECT * FROM table WHERE user_id = " . $user_id); ?>
Lors de la construction d'un cluster partitionné, vous devez créer plusieurs serveurs de base de données et les configurer en conséquence. Chaque serveur de base de données stocke une partie des données et lit et écrit les données via les règles de partitionnement de l'application.
Résumé
En créant un cluster de réplication maître-esclave MySQL, un cluster de séparation en lecture-écriture et un cluster fragmenté, nous pouvons obtenir un cluster MySQL hautement disponible et améliorer les performances et l'évolutivité de la base de données. Dans les applications réelles, des problèmes tels que la sauvegarde et la récupération des données, le basculement, etc. doivent également être pris en compte, et les configurations et optimisations correspondantes doivent être effectuées. J'espère que les exemples de code et les configurations ci-dessus pourront aider les lecteurs à comprendre et à appliquer l'architecture de base de données distribuée.
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!