Frage

Ich habe ein Master-Sklaven-Replikations-Setup und es sieht so aus, als würde es gut laufen. Unten ist ein Ergebnis von SHOW SLAVE STATUS Befehl:

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:

Ich würde gerne weiter über die verstehen Relay_Log_File, Relay_Log_Pos und Relay_Master_Log_File.

Meine Fragen sind:

  • Ist es wahr, dass die Relay -Protokolldatei eine ist, die lokal gelesen und gespeichert wird, damit die Replikation ausgeführt wird?

  • Was ist mit relay_master_log_file dann; Wie unterscheidet es sich von den Master_Log_File?

  • Was sind diese beiden Werte, nämlich., Read_Master_Log_Pos und Relay_Log_Pos ? Warum werden sie angezeigt, obwohl die Replikation vollständig und synchron ist?

  • Stimmt es, dass sich diese Dateien im binären Format befinden, und daher kann ich sie nicht anzeigen?

War es hilfreich?

Lösung

Ich möchte weiter verstehen, ist die Relay_log_file, relay_log_pos und relay_master_log_file.

Aus SHOW SLAVE STATUS\G, Holen Sie sich zwei Werte

  • Relay_Log_File : Aktuelles Relaisprotokoll, das neue Einträge während der Replikation akzeptiert
  • Relay_Log_Pos : Aktuelle Position des aktuellen Relaisprotokolls, das neue Einträge während der Replikation akzeptiert
  • Relay_Master_Log_File : Relay -Protokolldatei mit der zuletzt erfolgreich ausgeführten SQL -Anweisung auf dem Master, der auf dem Sklaven ausgeführt wurde.
  • Master_log_file: Das Protokoll auf dem Master, das der aktuellen Relay -Protokolldatei und der aktuellen Relay -Protokollposition entspricht

Die Dateien sind in Binärdateien, sodass sie nicht richtig anzeigen können

Ja, Sie können die Relaisprotokolle anzeigen. Da sie die gleiche Struktur wie ein normales binäres Protokoll haben, laufen Sie einfach die Mysqlbinlog Programm. Zum Beispiel, um die SQL in einem von Ihnen Relaisprotokollen wie das letzte anzuzeigen, tun Sie Folgendes:

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

Andere Tipps

Relay_Master_Log_File ist tatsächlich der Name des Binlogs auf dem Master, der die letzte SQL -Anweisung enthält, die erfolgreich auf dem Sklaven ausgeführt wurde. Es ist nicht der Name eines Relaisprotokolls auf dem Sklaven. Sehen: http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html

Exec_Master_Log_Pos ist die Position in der Relay_Master_log_file, die der Slave SQL -Thread ausgeführt hat. In Ihrem Beispiel hat die Sklavin DB also alle Aussagen bis zum Binlog ausgeführt mysql-bin.000001 POS 10726644 auf dem Master DB.

until_log_pos wird wirklich nur verwendet, wenn Sie Ihren Sklaven mit der Syntax starten START SLAVE UNTIL master_log_pos = $integer. Diese Syntax repliziert sich bis zu dieser Position (es wird die sein exec_master_log_pos) und dann aufhören. Normalerweise tun Sie dies nur, wenn Sie sich zu einem bestimmten Punkt replizieren möchten, aber nicht weiter (wenn die nächste Aussage ein zufälliger Tischabfall oder so ist). Der Wert von until_log_pos ist 0, wenn es nicht angegeben ist, so bedeutet in Ihrem Fall, dass die Replikation nur weiter voranschreitet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top