Maison > base de données > tutoriel mysql > le corps du texte

Comment utiliser la réplication maître-esclave de MySQL pour implémenter une architecture de séparation lecture-écriture

WBOY
Libérer: 2023-08-02 09:21:29
original
837 Les gens l'ont consulté

Comment utiliser la réplication maître-esclave de MySQL pour implémenter une architecture de séparation lecture-écriture

Dans les applications Web traditionnelles, les opérations de lecture et d'écriture sont généralement connectées au même serveur de base de données. À mesure que les applications se développent et que les volumes d’accès augmentent, cette architecture peut facilement entraîner des goulots d’étranglement dans les performances des bases de données. Afin de résoudre ce problème, la réplication maître-esclave de MySQL peut être utilisée pour implémenter une architecture de séparation lecture-écriture. Cet article explique comment utiliser la réplication maître-esclave de MySQL pour obtenir une séparation lecture-écriture et fournit des exemples de code correspondants.

  1. Préparation de l'environnement
    Tout d'abord, assurez-vous d'avoir installé MySQL sur le serveur et assurez-vous que les bases de données maître et esclave peuvent communiquer normalement. Si MySQL n'est pas encore installé, veuillez suivre la documentation officielle pour l'installer et le configurer.
  2. Configurez la base de données principale
    Configurez les éléments suivants sur la base de données principale :

(1) Ouvrez le fichier de configuration my.cnf de la base de données principale et ajoutez la configuration suivante à la fin :

# 设置为主数据库
server-id=1
log-bin=mysql-bin
Copier après la connexion

(2) Redémarrez la base de données principale base de données esclave :

$ sudo service mysql restart
Copier après la connexion
Copier après la connexion
  1. Configurez la base de données esclave
    Configurez les éléments suivants sur la base de données esclave :

(1) Ouvrez le fichier de configuration my.cnf de la base de données esclave et ajoutez la configuration suivante à la fin :

# 设置为从数据库
server-id=2
relay-log=mysql-relay-bin
Copier après la connexion

(2 ) Redémarrez la base de données esclave :

$ sudo service mysql restart
Copier après la connexion
Copier après la connexion
  1. Créer un utilisateur de réplication
    Créez un utilisateur pour la réplication sur la base de données principale et accordez les autorisations correspondantes. Exécutez la commande suivante :

    mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
    mysql> FLUSH PRIVILEGES;
    Copier après la connexion
  2. Démarrer la réplication maître-esclave
    Exécutez la commande suivante sur la base de données esclave pour démarrer la réplication maître-esclave :

    mysql> CHANGE MASTER TO MASTER_HOST='主数据库IP', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0;
    mysql> START SLAVE;
    Copier après la connexion
  3. Vérifier la réplication maître-esclave
    Exécutez la commande suivante sur la base de données esclave pour afficher l'état de la réplication maître-esclave :

    mysql> SHOW SLAVE STATUS G
    Copier après la connexion

    Assurez-vous que les deux paramètres suivants ont la valeur "YES" :

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Copier après la connexion

    Si une erreur se produit, vous devez vérifier que la configuration de la réplication et la connexion à la base de données sont correctement configurées.

  4. Réaliser la séparation lecture-écriture
    Une fois la réplication maître-esclave configurée avec succès, la séparation lecture-écriture peut être réalisée. Dans l'application, la base de données esclave est connectée pour les opérations de lecture et la base de données maître est connectée pour les opérations d'écriture. Cela peut utiliser efficacement les ressources de la base de données et améliorer les performances et la stabilité du système.

Ce qui suit est un exemple de code utilisant le langage Java pour montrer comment connecter la base de données maître-esclave pour terminer l'opération de séparation en lecture-écriture :

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ReadWriteSeparationExample {
    public static void main(String[] args) {
        // 读操作连接从数据库
        Connection readConn = null;
        String readUrl = "jdbc:mysql://从数据库IP:端口/数据库名";
        String readUser = "用户名";
        String readPassword = "密码";
        
        try {
            readConn = DriverManager.getConnection(readUrl, readUser, readPassword);
            Statement readStmt = readConn.createStatement();
            ResultSet readResult = readStmt.executeQuery("SELECT * FROM 表名");
            
            while (readResult.next()) {
                // 处理查询结果
            }
            
            readResult.close();
            readStmt.close();
            readConn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
        // 写操作连接主数据库
        Connection writeConn = null;
        String writeUrl = "jdbc:mysql://主数据库IP:端口/数据库名";
        String writeUser = "用户名";
        String writePassword = "密码";
        
        try {
            writeConn = DriverManager.getConnection(writeUrl, writeUser, writePassword);
            Statement writeStmt = writeConn.createStatement();
            writeStmt.execute("INSERT INTO 表名 VALUES(1, '数据')");
            
            writeStmt.close();
            writeConn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
Copier après la connexion

Ce qui précède sont les étapes et les exemples de code pour utiliser la réplication maître-esclave de MySQL pour implémenter l'architecture de séparation lecture-écriture. Grâce à cette architecture, les opérations de lecture peuvent être allouées à la base de données esclave, améliorant ainsi efficacement les performances et la stabilité du système. J'espère que cela aide!

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!