Maison base de données tutoriel mysql Comment créer un cluster MySQL hautement disponible à l'aide d'une architecture de base de données distribuée

Comment créer un cluster MySQL hautement disponible à l'aide d'une architecture de base de données distribuée

Aug 02, 2023 pm 04:29 PM
架构 高可用 分布式数据库 mysql集群

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.

  1. Créer un cluster de réplication maître-esclave MySQL

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 :

  1. Ajoutez le contenu suivant dans le fichier de configuration my.cnf :

    server-id=1
    log-bin=mysql-bin
    Copier après la connexion
  2. 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;
    Copier après la connexion
  3. Exécutez le commande suivante pour démarrer l'enregistrement du journal binaire :

    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;
    Copier après la connexion

    Enregistrez le fichier et la position affichés, qui seront utilisés dans les étapes suivantes.

Configurez le serveur esclave comme suit :

  1. Ajoutez le contenu suivant dans le fichier de configuration my.cnf :

    server-id=2
    Copier après la connexion
  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;
    Copier après la connexion

    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.

  1. Créer un cluster de séparation en lecture-écriture MySQL

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 :

  1. Ajoutez le contenu suivant dans le fichier de configuration my.cnf :

    log-slave-updates
    Copier après la connexion
  2. Exécutez la commande suivante pour redémarrer le serveur maître :

    SET @@GLOBAL.read_only=ON;
    Copier après la connexion

Effectuer sur le serveur esclave Configurez comme suit :

  1. Ajoutez le contenu suivant dans le fichier de configuration my.cnf :

    read-only
    Copier après la connexion
  2. Exécutez la commande suivante pour redémarrer le serveur esclave :

    SET @@GLOBAL.read_only=OFF;
    Copier après la connexion

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')");
?>
Copier après la connexion
  1. Création d'un cluster de partitionnement MySQL

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);
?>
Copier après la connexion

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!

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est l'architecture et le principe de fonctionnement de Spring Data JPA ? Quelle est l'architecture et le principe de fonctionnement de Spring Data JPA ? Apr 17, 2024 pm 02:48 PM

SpringDataJPA est basé sur l'architecture JPA et interagit avec la base de données via le mappage, l'ORM et la gestion des transactions. Son référentiel fournit des opérations CRUD et les requêtes dérivées simplifient l'accès à la base de données. De plus, il utilise le chargement paresseux pour récupérer les données uniquement lorsque cela est nécessaire, améliorant ainsi les performances.

1,3 ms prend 1,3 ms ! La dernière architecture de réseau neuronal mobile open source de Tsinghua, RepViT 1,3 ms prend 1,3 ms ! La dernière architecture de réseau neuronal mobile open source de Tsinghua, RepViT Mar 11, 2024 pm 12:07 PM

Adresse papier : https://arxiv.org/abs/2307.09283 Adresse code : https://github.com/THU-MIG/RepViTRepViT fonctionne bien dans l'architecture ViT mobile et présente des avantages significatifs. Ensuite, nous explorons les contributions de cette étude. Il est mentionné dans l'article que les ViT légers fonctionnent généralement mieux que les CNN légers sur les tâches visuelles, principalement en raison de leur module d'auto-attention multi-têtes (MSHA) qui permet au modèle d'apprendre des représentations globales. Cependant, les différences architecturales entre les ViT légers et les CNN légers n'ont pas été entièrement étudiées. Dans cette étude, les auteurs ont intégré des ViT légers dans le système efficace.

Quelle est la courbe d'apprentissage de l'architecture du framework Golang ? Quelle est la courbe d'apprentissage de l'architecture du framework Golang ? Jun 05, 2024 pm 06:59 PM

La courbe d'apprentissage de l'architecture du framework Go dépend de la familiarité avec le langage Go et le développement back-end ainsi que de la complexité du framework choisi : une bonne compréhension des bases du langage Go. Il est utile d’avoir une expérience en développement back-end. Les cadres qui diffèrent en complexité entraînent des différences dans les courbes d'apprentissage.

Déchirage manuel de la couche 1 de Llama3 : implémentation de Llama3 à partir de zéro Déchirage manuel de la couche 1 de Llama3 : implémentation de Llama3 à partir de zéro Jun 01, 2024 pm 05:45 PM

1. Architecture de Llama3 Dans cette série d'articles, nous implémentons Llama3 à partir de zéro. L'architecture globale de Llama3 : Imaginez les paramètres du modèle de Llama3 : Jetons un coup d'œil aux valeurs réelles de ces paramètres dans le modèle Llama3. Image [1] Fenêtre contextuelle (context-window) Lors de l'instanciation de la classe LlaMa, la variable max_seq_len définit la fenêtre contextuelle. Il existe d'autres paramètres dans la classe, mais ce paramètre est le plus directement lié au modèle de transformateur. Le max_seq_len ici est de 8K. Image [2] Vocabulaire-taille et AttentionL

Création d'un cluster MySQL hautement disponible : guide des meilleures pratiques pour la réplication maître-esclave et l'équilibrage de charge Création d'un cluster MySQL hautement disponible : guide des meilleures pratiques pour la réplication maître-esclave et l'équilibrage de charge Sep 09, 2023 am 10:57 AM

Construire un cluster MySQL hautement disponible : guide des meilleures pratiques pour la réplication maître-esclave et l'équilibrage de charge Ces dernières années, avec le développement rapide d'Internet, la base de données est devenue l'un des principaux moteurs de stockage et de traitement de données pour la plupart des applications Web. Dans ce scénario, la haute disponibilité et l’équilibrage de charge sont devenus des considérations importantes dans la conception de l’architecture de base de données. En tant que l'une des bases de données relationnelles open source les plus populaires, la solution de déploiement de cluster de MySQL a attiré beaucoup d'attention. Cet article explique comment implémenter un cluster de bases de données hautement disponible via la réplication maître-esclave MySQL et l'équilibrage de charge.

Revoir! Résumer de manière exhaustive le rôle important des modèles de base dans la promotion de la conduite autonome Revoir! Résumer de manière exhaustive le rôle important des modèles de base dans la promotion de la conduite autonome Jun 11, 2024 pm 05:29 PM

Écrit ci-dessus et compréhension personnelle de l'auteur : Récemment, avec le développement et les percées de la technologie d'apprentissage profond, les modèles de base à grande échelle (Foundation Models) ont obtenu des résultats significatifs dans les domaines du traitement du langage naturel et de la vision par ordinateur. L’application de modèles de base à la conduite autonome présente également de grandes perspectives de développement, susceptibles d’améliorer la compréhension et le raisonnement des scénarios. Grâce à une pré-formation sur un langage riche et des données visuelles, le modèle de base peut comprendre et interpréter divers éléments des scénarios de conduite autonome et effectuer un raisonnement, fournissant ainsi un langage et des commandes d'action pour piloter la prise de décision et la planification. Le modèle de base peut être constitué de données enrichies d'une compréhension du scénario de conduite afin de fournir les rares caractéristiques réalisables dans les distributions à longue traîne qui sont peu susceptibles d'être rencontrées lors d'une conduite de routine et d'une collecte de données.

Compréhension approfondie de l'architecture et des principes de fonctionnement du framework Spring Compréhension approfondie de l'architecture et des principes de fonctionnement du framework Spring Jan 24, 2024 am 09:41 AM

Une analyse approfondie de l'architecture et des principes de fonctionnement du framework Spring Introduction : Spring est l'un des frameworks open source les plus populaires de l'écosystème Java. Il fournit non seulement un ensemble puissant de fonctions de gestion de conteneurs et d'injection de dépendances, mais fournit également. de nombreuses autres fonctions, telles que la gestion des transactions, l'AOP, l'accès aux données, etc. Cet article fournira une analyse approfondie de l'architecture et des principes de fonctionnement du framework Spring, et expliquera les concepts associés à travers des exemples de code spécifiques. 1. Concepts de base du framework Spring 1.1IoC (Inversion of Control) Core of Spring

Solution Golang pour la mise en œuvre de systèmes distribués hautement disponibles Solution Golang pour la mise en œuvre de systèmes distribués hautement disponibles Jan 16, 2024 am 08:17 AM

Golang est un langage de programmation efficace, concis et sûr qui peut aider les développeurs à mettre en œuvre des systèmes distribués hautement disponibles. Dans cet article, nous explorerons comment Golang implémente des systèmes distribués hautement disponibles et fournirons quelques exemples de code spécifiques. Défis des systèmes distribués Un système distribué est un système dans lequel plusieurs participants collaborent. Les participants à un système distribué peuvent être différents nœuds répartis sous plusieurs aspects tels que l'emplacement géographique, le réseau et la structure organisationnelle. Lors de la mise en œuvre d'un système distribué, de nombreux défis doivent être relevés, tels que :

See all articles