Exemple de méthode pour réaliser la réplication en cascade mysql_Mysql

2020-02-14

La réplication dite en cascade est le serveur maître, qui synchronise uniquement les données avec un serveur esclave, puis le serveur esclave synchronise les données avec tous les serveurs esclaves à l'arrière, réduisant la pression d'écriture du serveur maître et les E / S réseau des données répliquées.

Un, configurez le serveur maître

1, modifiez le fichier de configuration principal

vim /etc/my.cnf

Ajoutez les deux lignes de configuration suivantes sous le bloc de configuration [mysql]


 [mysql]
 log_bin #Activer la fonction de journal binaire
 server_id = 1 #Définissez un numéro d'identification global unique pour le nœud actuel 
 

2, redémarrez le service mysql pour que la configuration prenne effet


 systemctl restart mairadb
 
 

3, créez un compte utilisateur avec des autorisations de copie


 GRANT REPLICATION SLAVE ON *. * TO 'repluser' @ 'HOST' IDENTIFIED BY 'replpass';
 
 

Analyse des commandes:

      
  • 'repluser' @ 'HOST': définissez le nom d'utilisateur, c'est-à-dire l'adresse IP hôte ou le segment de réseau. Le segment de réseau est représenté par%.   
  • IDENTIFIÉ PAR: Définir le mot de passe
  •   
  • *. *: toutes les bases de données, toutes les tables
  •   
  • GRANT REPLCATION SLAVE: permet à l'utilisateur de copier des données
  • Cette commande est utilisée pour autoriser le réutilisateur à copier tout le contenu de la base de données

    Deuxièmement, configuration du serveur esclave relais

    1, modifiez le fichier de configuration principal

    vim /etc/my.cnf

    Dans le bloc de configuration [mysql], ajoutez les deux lignes de configuration suivantes


     [mysqld]
      log_bin
     server_id = 2 #Définissez un numéro d'identification global unique pour le nœud actuel
     read_only = ON #Limit esclaves en lecture seule. "Remarque: Cette restriction n'est pas valide pour les utilisateurs avec des privilèges SUPER"
     log_slave_updates #Le but de cet élément est de compter les journaux binaires du serveur maître sur la machine locale, puis de copier les journaux binaires vers d'autres serveurs esclaves sur le serveur principal.
     

    2, redémarrez le service mysql pour que la configuration prenne effet


     systemctl restart mariadb 
     

    3, utilisez un compte utilisateur avec des autorisations de copie pour vous connecter au serveur maître et démarrer le thread de copie


        CHANGER MAÎTRE EN
        MASTER_HOST = 'host', #Specify the master host IP
        MASTER_USER = 'repluser', #Spécifiez le nom d'utilisateur que le maître est autorisé à utiliser
        MASTER_PASSWORD = 'replpass', # Spécifiez le mot de passe de l'utilisateur autorisé MASTER_LOG_FILE = 'mysql-bin.xxxxx', #Spécifiez la réplication à partir du journal binaire du serveur maître
        MASTER_LOG_POS = #; # emplacement du journal binaire, vous pouvez exécuter cette commande sur le serveur maître pour afficher, afficher les journaux maître;
    
        Démarrer les threads de réplication IO_THREAD et SQL_THREAD
        START SLAVE;
    
     
     

    4, vérifiez l'état du serveur esclave relais


       MariaDB [(aucun)]> démarrer l'esclave;
       Requête OK, 0 lignes affectées (0,00 sec)
    
       MariaDB [(aucun)]> afficher le statut de l'esclave \ G
       *************************** 1. rangée ********************  *******
               Slave_IO_State: En attente de l'envoi de l'événement par le maître
                Master_Host: 192.168.68.7
                Master_User: repluser
                Master_Port: 3306
               Connect_Retry: 60
              Master_Log_File: mariadb-bin.000001
            Read_Master_Log_Pos: 557
               Relay_Log_File: mariadb-relay-bin.000002
               Relay_Log_Pos: 843
           Relay_Master_Log_File: mariadb-bin.000001
              Slave_IO_Running: Oui "Concentrez-vous si NON signifie que le thread n'est pas en place"
             Slave_SQL_Running: Oui "Concentrez-vous si c'est NON, le thread n'est pas en place"
              Replicate_Do_DB:
            Replicate_Ignore_DB:
             Replicate_Do_Table:
           Replicate_Ignore_Table:
          Replicate_Wild_Do_Table:
        Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
                Skip_Counter: 0
            Exec_Master_Log_Pos: 557
              Relay_Log_Space: 1139
              Jusqu'à_Condition: aucun
               Jusqu'à_Log_File:
               Jusqu'à_Log_Pos: 0
             Master_SSL_Allowed: Non
             Master_SSL_CA_File:
             Master_SSL_CA_Path:
              Master_SL_Cert:
             Master_SSL_Cipher:
               Master_SSL_Key:
           Seconds_Behind_Master: 0 "Cet élément signifie le temps de synchronisation 0 signifie même la synchronisation"
       Master_SSL_Verify_Server_Cert: Non
               Last_IO_Errno: 0
               Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
        Replicate_Ignore_Server_Ids:
              Master_Server_Id: 1 
     

    Trois, configuration esclave principale

    1, modifiez le fichier de configuration

    vim /etc/my.cnf

    Dans le bloc de configuration [mysql], ajoutez les deux lignes de configuration suivantes


     [mysqld]
     server_id = 3 # Définir un numéro d'identification global unique pour le nœud actuel
     read_only = ON #Limit esclaves en lecture seule. "Remarque: Cette restriction n'est pas valide pour les utilisateurs avec des privilèges SUPER" 
     

    2, redémarrez le service mysql pour que la configuration prenne effet


     systemctl restart mariadb 
     

    3, utilisez un compte utilisateur avec des autorisations de copie pour vous connecter au serveur maître et démarrer le thread de copie


     CHANGER MAÎTRE EN
        MASTER_HOST = 'Hôte relais', #Spécifiez l'IP de l'hôte esclave relais
        MASTER_USER = 'repluser', #Spécifiez le nom d'utilisateur que le maître est autorisé à utiliser
        MASTER_PASSWORD = 'replpass', # Spécifiez le mot de passe utilisateur autorisé
        MASTER_LOG_POS = #; # emplacement du journal binaire, vous pouvez exécuter cette commande sur le serveur esclave pour afficher, afficher les journaux principaux;
    
        Démarrer les threads de réplication IO_THREAD et SQL_THREAD
        START SLAVE;
    
     
     

    4, vérifier l'état du serveur esclave


       MariaDB [(aucun)]> démarrer l'esclave;
       Requête OK, 0 lignes affectées (0,00 sec)
    
       MariaDB [(aucun)]> afficher le statut de l'esclave \ G
       *************************** 1. rangée ********************  *******
               Slave_IO_State: En attente de l'envoi de l'événement par le maître
                Master_Host: 192.168.68.17
                Master_User: repluser
                Master_Port: 3306
               Connect_Retry: 60
              Master_Log_File: mariadb-bin.000001
            Read_Master_Log_Pos: 557
               Relay_Log_File: mariadb-relay-bin.000002
               Relay_Log_Pos: 843
           Relay_Master_Log_File: mariadb-bin.000001
              Slave_IO_Running: Oui "Concentrez-vous si NON signifie que le thread n'est pas en place"
             Slave_SQL_Running: Oui "Concentrez-vous si c'est NON, le thread n'est pas en place"
              Replicate_Do_DB:
            Replicate_Ignore_DB:
             Replicate_Do_Table:
           Replicate_Ignore_Table:
          Replicate_Wild_Do_Table:
        Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
                Skip_Counter: 0
            Exec_Master_Log_Pos: 557
              Relay_Log_Space: 1139
              Jusqu'à_Condition: aucun
               Jusqu'à_Log_File:
               Jusqu'à_Log_Pos: 0
             Master_SSL_Allowed: Non
             Master_SSL_CA_File:
             Master_SSL_CA_Path:
              Master_SSL_Cert:
             Master_SSL_Cipher:
               Master_SSL_Key:
           Seconds_Behind_Master: 0 "Cet élément signifie le temps de synchronisation 0 signifie même la synchronisation"
       Master_SSL_Verify_Server_Cert: Non
               Last_IO_Errno: 0
               Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
        Replicate_Ignore_Server_Ids:
              Master_Server_Id: 1 
     

    5, enfin, créez un test de base de données sur le serveur maître pour voir s'il est synchronisé

    Caractéristiques de réplication en cascade

        
    • Réduire la pression sur le serveur maître et le réseau io
    •   
    • Mais il y aura des problèmes de données incohérentes
    • Résumé

          
      • L'esclave relais doit ouvrir le journal binaire et vous devez ajouter l'élément de configuration log_slave_updates
      •   
      • Notez que le rôle de read_only = ON restreint le serveur en lecture seule. "Remarque: Cette restriction n'est pas valide pour les utilisateurs disposant de privilèges SUPER"
      • Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun et j'espère que tout le monde le soutiendra.

        Le serveur est en lecture seule. "Remarque: Cette restriction ne s'applique pas aux utilisateurs disposant de privilèges SUPER"

        Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun et j'espère que tout le monde le soutiendra.

www.xd1998.com@2001-2030Partage De Technologie