Question

J'ai une configuration de réplication maître-esclave et il ressemble à ce qu'il fonctionne bien. Ci-dessous est le résultat de la commande SHOW SLAVE STATUS:

show slave STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: *.*.*.*
                  Master_User: repliV1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 10726644
               Relay_Log_File: mysqld-relay-bin.000056
                Relay_Log_Pos: 231871
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: data1
          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: 10726644
              Relay_Log_Space: 232172
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:

Je voudrais comprendre plus sur l'Relay_Log_File, Relay_Log_Pos et Relay_Master_Log_File.

Mes questions sont les suivantes:

  • Est-il vrai que le fichier journal de relais est celui qui est en cours de lecture et stockée localement pour la réplication à exécuter?

  • Qu'en est-il alors relay_master_log_file; comment est-il différent du Master_Log_File?

  • Quels sont ces deux valeurs, à savoir. , Read_Master_Log_Pos et Relay_Log_Pos? Pourquoi sont-ils leur apparition, même si la réplication est terminée et la synchronisation?

  • Est-il vrai que ces fichiers sont en format binaire, et donc je ne peux pas les voir?

Était-ce utile?

La solution

Je veux comprendre plus est le Relay_Log_File, Relay_Log_Pos et Relay_Master_Log_File.

De SHOW SLAVE STATUS\G, obtenir deux valeurs

  • Relay_Log_File: journal de relais de courant accepter de nouvelles entrées lors de la réplication
  • Relay_Log_Pos: Position actuelle du journal de relais en cours d'accepter de nouvelles entrées lors de la réplication
  • Relay_Master_Log_File:. Fichier journal de relais contenant la dernière instruction SQL exécutée avec succès sur le maître qui a été exécuté sur l'esclave
  • MASTER_LOG_FILE: Le journal du maître qui correspond au fichier journal de relais en cours et la position du journal de relais de courant

Les fichiers sont en binaire afin de ne pas pouvoir les voir à droite

Oui, vous pouvez afficher les journaux de relais. Comme ils ont la même structure que log binaire régulière, il suffit d'exécuter mysqlbinlog programme . Par exemple, pour visualiser le SQL au sein de l'un de vous, des logs de relais tels que le dernier, procédez comme suit:

mysqlbinlog mysqld-relay-bin.000056 > /root/SQLForCurrentRelayLog.txt
less /root/SQLForCurrentRelayLog.txt

Autres conseils

Relay_Master_Log_File est en fait le nom de la binlog sur le maître contenant la dernière instruction SQL exécutée avec succès sur l'esclave. Il est pas le nom d'un journal de relais sur l'esclave. Voir: http://dev.mysql.com/doc /refman/5.5/en/show-slave-status.html

Exec_Master_Log_Pos est la position dans le Relay_Master_Log_File que le fil de SQL esclave est exécuté jusqu'à. Donc, dans votre exemple, le db esclave a exécuté toutes les instructions jusqu'à ce que binlog mysql-bin.000001 pos 10726644 sur le maître db.

until_log_pos est vraiment utilisé que si vous démarrez votre esclave avec la syntaxe START SLAVE UNTIL master_log_pos = $integer. Cette syntaxe va répliquer à cette position (ce sera le exec_master_log_pos) puis arrêt. Normalement, vous ne le faire que si vous vouliez répliquer à un point spécifique, mais pas plus loin (comme si l'instruction suivante est une baisse de table accidentelle ou quelque chose). La valeur de until_log_pos est 0 quand il est pas spécifié, donc dans vos moyens de cas que la réplication va simplement continuer à avancer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top